Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2276 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Présentation de données dans un tableau - A à Z

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Présentation de données dans un tableau - A à Z

n°258852
le_duc
PlaTyPuS
Posté le 02-12-2002 à 13:36:05  profilanswer
 

Resalut!  :D  
 
Pour l'instant j'ai un tableau d'une 50aine de lignes.
 
En fait je me demandais si il existait une facon de séparer le tableau et de faire des entêtes pour chaque lettre de l'alphabet et en dessous de l'entête, les lignes correspondantes...
 
je pensais faire ca comme ca :

Code :
  1. $ligne = "SELECT * FROM MaTable "
  2.      . "WHERE Pseudo LIKE 'a%' ";
  3. $resultat2 = mysql_query ($ligne, $connexion);
  4. if ($resultat2)
  5. {
  6.    echo "<tr>
  7.            <td>Entete</td>
  8.          </tr>";
  9.    while ($proprios = mysql_fetch_array ($resultat2))
  10.   {
  11.    echo "<tr>
  12.    <td></td>\n
  13.    <td></td>\n
  14.    <td></td>\n
  15.    <td></td>\n
  16.    <td></td>\n
  17. </tr>";
  18.    }
  19. }


et répéter ce code pour chaque lettre de l'alphabet....mais je pense qu'il a une solution plus simple ou bien [newbie inside]  :D ?
 
Et j'aimerais également donner des couleurs différentes à mes lignes (1 ligne grise, 1 ligne blanche, 1 ligne grise, 1 ligne blanche,....) --> c'est compliqué ca ?
 
@++

mood
Publicité
Posté le 02-12-2002 à 13:36:05  profilanswer
 

n°258860
paranoidan​droid
Posté le 02-12-2002 à 13:46:01  profilanswer
 

le_duc a écrit a écrit :

Resalut!  :D  
 
Pour l'instant j'ai un tableau d'une 50aine de lignes.
 
En fait je me demandais si il existait une facon de séparer le tableau et de faire des entêtes pour chaque lettre de l'alphabet et en dessous de l'entête, les lignes correspondantes...
 
je pensais faire ca comme ca :

Code :
  1. $ligne = "SELECT * FROM MaTable "
  2.      . "WHERE Pseudo LIKE 'a%' ";
  3. $resultat2 = mysql_query ($ligne, $connexion);
  4. if ($resultat2)
  5. {
  6.    echo "<tr>
  7.            <td>Entete</td>
  8.          </tr>";
  9.    while ($proprios = mysql_fetch_array ($resultat2))
  10.   {
  11.    echo "<tr>
  12.    <td></td>\n
  13.    <td></td>\n
  14.    <td></td>\n
  15.    <td></td>\n
  16.    <td></td>\n
  17. </tr>";
  18.    }
  19. }


et répéter ce code pour chaque lettre de l'alphabet....mais je pense qu'il a une solution plus simple ou bien [newbie inside]  :D ?
 
Et j'aimerais également donner des couleurs différentes à mes lignes (1 ligne grise, 1 ligne blanche, 1 ligne grise, 1 ligne blanche,....) --> c'est compliqué ca ?
 
@++




 
 
euh .. penser a mettre l'alphabet dans un tableau peut etre ... ( je sais pas si ça peut etre utile mais on sait jamais )
 
pour les lignes de couleurs différentes, fout un compteur sur ta boucle, et pour une ligne paire, telle couleur, ligne impair autre couleur.
 
 
 
enuiste au final ..
 
tu construis un tableau pour chaque lettre.
 
premiere ligne la lettre de l'alphabet .. et les autres lignes le résultat de la requete $ligne.

n°258874
le_duc
PlaTyPuS
Posté le 02-12-2002 à 14:06:48  profilanswer
 

paranoidandroid a écrit a écrit :

 
 
 
euh .. penser a mettre l'alphabet dans un tableau peut etre ... ( je sais pas si ça peut etre utile mais on sait jamais )
 
pour les lignes de couleurs différentes, fout un compteur sur ta boucle, et pour une ligne paire, telle couleur, ligne impair autre couleur.
 
 
 
enuiste au final ..
 
tu construis un tableau pour chaque lettre.
 
premiere ligne la lettre de l'alphabet .. et les autres lignes le résultat de la requete $ligne.




 
Pour l'alphabet -> donc je dois bien réecrire le code à chaque fois, avec une requete différente.
 
Pour les couleurs -> ok, j'ai compris le fonctionnement, mais y'a une doc qq part là-dessus ?

n°258881
Fred999
Rabat-joie
Posté le 02-12-2002 à 14:18:46  profilanswer
 

Tu veux surligner la première ligne d'une lettre c'est ça?
 
Déjà, dans ta requête SQL, tu classes les réponses dans l'ordre alphabétique (facile).
 
Ensuite, avant ta boucle, tu initialises un compteur à "0".
 
Et, dans ta boucle, tu testes : si l'initiale du résultat est différente de la lettre du compteur, alors tu fais ton en-tête.

n°258896
le_duc
PlaTyPuS
Posté le 02-12-2002 à 14:40:22  profilanswer
 

Fred999 a écrit a écrit :

Tu veux surligner la première ligne d'une lettre c'est ça?
 
Déjà, dans ta requête SQL, tu classes les réponses dans l'ordre alphabétique (facile).
 
Ensuite, avant ta boucle, tu initialises un compteur à "0".
 
Et, dans ta boucle, tu testes : si l'initiale du résultat est différente de la lettre du compteur, alors tu fais ton en-tête.




 
non pas du tout ;).
 
je veux bien créer un ligne avec la lettre "A" (par exemple) et en-dessous, tout les résultats commencant par A.
 
--> comme ca je peux mettre un lien sur la lettre "A" et les internautes arrivent directement ou ils veulent. De plus, la présentation sera jolie  :D .

n°258897
le_duc
PlaTyPuS
Posté le 02-12-2002 à 14:40:57  profilanswer
 

mais pour le compteur, j'ai pas compris comment le réaliser.

n°258919
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 02-12-2002 à 14:57:58  profilanswer
 

Pour le compteur, tu fais un tableau qui contient tout l'alphabet. Genre $alphabet = {"a", "b", "c"..., "z"} pis tu fais un

Code :
  1. for($i=0;$i<26;$i++)
  2. {
  3.   $letter = $alphabet[$i];
  4.   echo "<a name=\"$letter\">$letter</a><br><br>";
  5.   if(strtolower(substr($pseudo,0,1))==$alphabet[$i]) echo $pseudo;
  6. }


 
Ou un truc du style. Ca dépend de la structure de ton prog, mais en gros c'est l'idée. Après, y a p'têt un truc plus simple à côté duquel chu passé [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°258932
le_duc
PlaTyPuS
Posté le 02-12-2002 à 15:04:32  profilanswer
 

Taiche a écrit a écrit :

Pour le compteur, tu fais un tableau qui contient tout l'alphabet. Genre $alphabet = {"a", "b", "c"..., "z"} pis tu fais un

Code :
  1. for($i=0;$i<26;$i++)
  2. {
  3.   $letter = $alphabet[$i];
  4.   echo "<a name=\"$letter\">$letter</a><br><br>";
  5.   if(strtolower(substr($pseudo,0,1))==$alphabet[$i]) echo $pseudo;
  6. }


 
Ou un truc du style. Ca dépend de la structure de ton prog, mais en gros c'est l'idée. Après, y a p'têt un truc plus simple à côté duquel chu passé [:ddr555]




 
ben j'viens justement de trouver ca sur le forum....mais chais pas si c'est + simple :
 

Code :
  1. <? 
  2. $class = "listOdd";
  3. $class2 = "listEven";
  4. for ($i=0;$i<$comptMem;$i++) {
  5. echo "<tr><td class=\"$class\">texte</td></tr>";
  6. $class3 = $class;
  7. $class = $class2;
  8. $class2 = $class3;
  9. }
  10. ?>


 
c koi cette variable?? --> $comptMem
 
et le "for", c'est comme un "while" ?


Message édité par le_duc le 02-12-2002 à 15:05:29
n°258936
paranoidan​droid
Posté le 02-12-2002 à 15:06:52  profilanswer
 

le_duc a écrit a écrit :

mais pour le compteur, j'ai pas compris comment le réaliser.




 
il faut pas réécrir uen requete pour chaque lettre ..
 
tu tapes la requete standard : $ligne = "SELECT * FROM MaTable WHERE Pseudo LIKE 'a%'";
 
mais à la place du 'a' tu mets %s ( je crois que ça marche pour le php ...ça fait un bout je crois que je dis des conneries ) et ce %s représente uen chaine de caractere que tu remplaceras par une lettre de  l'alphabet. avec un sprintf() ( C'est du C mais ça existe en php non ? doit bien y avoir des fonctions pour ça )
 
t'as donc ta requete de base : $ligne = "SELECT * FROM MaTable WHERE Pseudo LIKE '%s%'";
 
et tu feras ton sprintf a chaque fois que tu l'executes ...
 
ça ressemble à sprintf($ligne,$alphabet[$i]);
 
pour $i = 0, $alphabet[$i] = 'a' par exemple.
 
 
 
tu fais une boucle .. pour ça, a chaque tour tu fais $i++ et tu passes ainsi a la lettre suivante.
 
 
 
 
Pour les lignes de couleurs ce sera un deuxieme compteur a l'intérieur. pour une lettre tu peux avoir un ou plusieurs résultat. C'est treaduit par ça :  
 
   while ($proprios = mysql_fetch_array ($resultat2))
 {
  echo "<tr>
   <td></td>\n
   <td></td>\n
   <td></td>\n
   <td></td>\n
   <td></td>\n
</tr>";  
 
tu crée un compteur avec $j que tu incrémente à chaque nouvelle ligne de résultat. si $j est pair, tu changes les balises <td> pour y mettre l'attribut de couleur 'gris', si c'est impait tu fais en srte a ce que l'attribut couleur de la balise td soir gris foncé.  
 
 
:\
 
J'ai jamasi été très bon pour les explications .. et il y a peut etre plus simple .. chuis pas un expert ... vraiment pas

n°258950
le_duc
PlaTyPuS
Posté le 02-12-2002 à 15:21:47  profilanswer
 

paranoidandroid a écrit a écrit :

 
 
il faut pas réécrir uen requete pour chaque lettre ..
 
tu tapes la requete standard : $ligne = "SELECT * FROM MaTable WHERE Pseudo LIKE 'a%'";
 
mais à la place du 'a' tu mets %s ( je crois que ça marche pour le php ...ça fait un bout je crois que je dis des conneries ) et ce %s représente uen chaine de caractere que tu remplaceras par une lettre de  l'alphabet. avec un sprintf() ( C'est du C mais ça existe en php non ? doit bien y avoir des fonctions pour ça )
 
t'as donc ta requete de base : $ligne = "SELECT * FROM MaTable WHERE Pseudo LIKE '%s%'";
 
et tu feras ton sprintf a chaque fois que tu l'executes ...
 
ça ressemble à sprintf($ligne,$alphabet[$i]);
 
pour $i = 0, $alphabet[$i] = 'a' par exemple.
 
 
 
tu fais une boucle .. pour ça, a chaque tour tu fais $i++ et tu passes ainsi a la lettre suivante.
 
 
 
 
Pour les lignes de couleurs ce sera un deuxieme compteur a l'intérieur. pour une lettre tu peux avoir un ou plusieurs résultat. C'est treaduit par ça :  
 
   while ($proprios = mysql_fetch_array ($resultat2))
 {
  echo "<tr>
   <td></td>\n
   <td></td>\n
   <td></td>\n
   <td></td>\n
   <td></td>\n
</tr>";  
 
tu crée un compteur avec $j que tu incrémente à chaque nouvelle ligne de résultat. si $j est pair, tu changes les balises <td> pour y mettre l'attribut de couleur 'gris', si c'est impait tu fais en srte a ce que l'attribut couleur de la balise td soir gris foncé.  
 
 
:\
 
J'ai jamasi été très bon pour les explications .. et il y a peut etre plus simple .. chuis pas un expert ... vraiment pas




 
euh je crois que vous avez pas compris ce que je voulais faire.
 
Pour l'instant j'aimerais juste mettre 1 ligne de mon tableau en gris et la suivante en blanc et ainsi de suite.
 
Une fois que j'arriverai à faire ca, j'aimerais séparer ce tableau en plusieurs tableau (donc je pense que je devrai tout de même à chaque fois faire 1 requete) avec des entêtes pour chaque lettres de l'alphabet...ce qui fera 26 tableaux sur la page.

mood
Publicité
Posté le 02-12-2002 à 15:21:47  profilanswer
 

n°258961
paranoidan​droid
Posté le 02-12-2002 à 15:27:44  profilanswer
 

le_duc a écrit a écrit :

 
 
euh je crois que vous avez pas compris ce que je voulais faire.
 
Pour l'instant j'aimerais juste mettre 1 ligne de mon tableau en gris et la suivante en blanc et ainsi de suite.
 
Une fois que j'arriverai à faire ca, j'aimerais séparer ce tableau en plusieurs tableau (donc je pense que je devrai tout de même à chaque fois faire 1 requete) avec des entêtes pour chaque lettres de l'alphabet...ce qui fera 26 tableaux sur la page.




 
j'ai répondu a  tes deux questions :D
 

n°258983
FlorentP
Posté le 02-12-2002 à 15:39:51  profilanswer
 

$tableau avec tout ton alphabet dedans
 

Code :
  1. for($i=0;$i<26,$i++)
  2. {
  3. $lettre=$tableau[$i]; // peut etre qu'il faut des guillemet, pas sur de moi
  4. $ligne = "SELECT * FROM MaTable WHERE Pseudo LIKE '$lettre%' ";
  5. $result=mysql_query($ligne);
  6. echo "Tableau pour les <b>$lettre<table>";
  7. $count_fond=0;
  8. while($val=mysql_fetch_array($result))
  9. {
  10.   $pseudo=$val["pseudo"];  //par exemple.. donc on va afficher un tableau avec chaque ligne contenant le pseudo et un autre truc
  11.   $truc=$val["truc"]; 
  12.   if($count_fond==0) $fond=red;   //fond alternativement rouge et bleu
  13.   else{ $fond=blue; $count_fond=0;}
  14.   echo "<tr bgcolor=$fond><td width=100>$pseudo</td><td>$truc</td>";
  15. }
  16. echo "</table><br><br>";
  17. }


 
A vue de nez s'pourrait marche ca :/


Message édité par FlorentP le 02-12-2002 à 15:40:52
n°259036
le_duc
PlaTyPuS
Posté le 02-12-2002 à 16:23:40  profilanswer
 

ok, merci pour votre aide, j'vais essayer tout de suite :D !
 
@++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Présentation de données dans un tableau - A à Z

 

Sujets relatifs
faisabilité avec PHP[PHP] Recuperer l'adresse tapée par l'utilisateur
[PHP]Recherche synthèse complète sur PHP, maxi 200 pages ...[PHP] transformer un texte du type [url] par <http://...
cherche un langage d'analyse pour des bases de données mysql?merci[PHP] Indexer un tableau
[PHP] Ca marche pas... [formulaire inside][PHP] Comment il fait Joce pour les reply....??
[PHP] Ca marche pas..... mais pkoi ? Need help! ;-) 
Plus de sujets relatifs à : [PHP] Présentation de données dans un tableau - A à Z


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR