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

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

Marsh Posté le 02-12-2002 à 13:36:05    

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 ?
 
@++

Reply

Marsh Posté le 02-12-2002 à 13:36:05   

Reply

Marsh Posté le 02-12-2002 à 13:46:01    

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.

Reply

Marsh Posté le 02-12-2002 à 14:06:48    

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 ?

Reply

Marsh Posté le 02-12-2002 à 14:18:46    

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.

Reply

Marsh Posté le 02-12-2002 à 14:40:22    

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 .

Reply

Marsh Posté le 02-12-2002 à 14:40:57    

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

Reply

Marsh Posté le 02-12-2002 à 14:57:58    

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.
Reply

Marsh Posté le 02-12-2002 à 15:04:32    

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
Reply

Marsh Posté le 02-12-2002 à 15:06:52    

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

Reply

Marsh Posté le 02-12-2002 à 15:21:47    

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.

Reply

Marsh Posté le 02-12-2002 à 15:21:47   

Reply

Marsh Posté le 02-12-2002 à 15:27:44    

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
 

Reply

Marsh Posté le 02-12-2002 à 15:39:51    

$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
Reply

Marsh Posté le 02-12-2002 à 16:23:40    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed