Page 1 sur 1

Problème requête et résultat

Posté : 16 nov. 2008, 21:14
par patchagoogoo
Bonjour,

j'effectue une requête avec left outer join pour deux tables donc.

Le résultat renvoyé est satisfaisant, j'obtiens une grosse table avec les lignes suivantes :

(table catégories) ID NOM DESCRIPTION - (table Matériau) ID ID_CAT COMPOSANT
..........................1....Papier...................................................1...1..........bois
..........................1....Papier...................................................3...1..........composant blanchissant
..........................1....Papier...................................................9...1 ..........autre composant du bois

.......................... 3....Acier......Alliage du fer...........................2...3..........Fer
..........................3....Acier......Alliage du fer...........................8...3..........Carbone

Etc.

Mon problème est pour arriver à afficher ceci :

NOM x1 : COMPOSANT 1 COMPOSANT 2 COMPOSANT 3 ... COMPOSANT n

J'ai essayé avec

for ($i=1;$i<$cat(correspond au nombre de catégories... pas bon mais c'est pas le plus important) ; $i++) {

rappel de la requête à chaque fois avec la condition WHERE Catégories.ID = $i puis
$row = Mysql_fetch_array (requete) {

while { champs row; echo NOM; while { même champs row; for ($a=0;$a<mysql_affected_row(requete);$a++) { echo Composant($a)...

Enfin mon code est nul...
C'est pour cela que je demande votre aide.

Faut-il changer la requête ? Il faudrait que je puisse compter le nombre de ligne du tableau pour les ID de catégories identiques, puis afficher une fois le nom correspondant à cette catégorie, et puis toutes les lignes des composants appartenant à cette catégorie.

Si c'est facile pour vous, Grand Merci d'avance !

Posté : 23 nov. 2008, 08:30
par furiouslol
Salut

L'idée ici si tu veux utiliser ce résultat, c'est de parcourir tes lignes normalement, comme pour toute requete, et de faire une rupture dans ton code a l'intérieur de ta boucle en stockant ton ID_CAT par exemple, pour le comparer

le principe :
"Si l'ID_CAT est égal a celui de la ligne précédente, alors j'affiche seulement mon composant, par contre si c'est différent, je vais a la ligne et j'écris une ligne complete"

Sinon, et si ta requete te sers uniquement a ca tu peux formater le résultat directement en SQL avec la fonction GROUP_CONCAT

Posté : 25 nov. 2008, 23:45
par patchagoogoo
Merci d'avoir répondu !

J'ai fait avec un tableau des ID et c'est bon. Mais pour optimiser je vais réfléchir avec ce que tu m'as dit, la boucle du $i-1 ou Group_concat.

Merci beaucoup en tout cas ! :D