artkap
Messages postés16Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention 2 novembre 2010
-
10 mars 2010 à 16:58
gibozsec
Messages postés318Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention11 mars 2010
-
11 mars 2010 à 18:05
Bonjour,
je souhaite lister le résultat d'une requête portant sur 2 champs (theme1 et theme2) d'une meme base.
J'ai essayer ça mais le theme 2 ne se classe pas par odre alphabétique :
[i]
$res = mysql_query("SELECT * FROM produits ORDER BY theme1,theme2");
while($row = mysql_fetch_assoc($res))
{
echo $row["theme1"];
echo "
";
echo $row["theme2"];
echo "
";
}/i
Et comment n'afficher qu'une fois un thème si il est présent plusieurs fois dans les champs.
gibozsec
Messages postés318Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention11 mars 2010 10 mars 2010 à 19:29
Bonjour,
La partie de requête "ORDER BY theme1, theme2" signifie que les résultats vont être triés par le champs "theme1" et pour ceux ayant le même theme1 le tri se fera sur le champ theme2.
Par exemple si tu as 4 enregistrements ayant pour theme1 et theme2 :
1) A,Z
2) A,G
3) C,A
4) B,D
l'ordre sera : 2,1,4,3 parce que les enregistrement 1 et 2 ayant un theme1 'A' ils sont en premiers, suivi du 4 qui a un theme1 à 'B' et enfin le 3 qui a un theme1 à 'C'. Pour ordonner le 1 et le 2, c'est le theme2 qui est utilisé : 2 est donc avant 1.
Pour n'afficher le theme1 que s'il n'a pas déjà été affiché, tu peux enregistrer dans une variable le dernier theme1 affiché et si celui de la boucle est différent tu l'affiches (et tu met à jour la variable), sinon tu ne l'affiche pas.