8796 sujets

Développement web côté serveur, CMS

Bonjour à tous, je ne pose quasiement jamais de questions dans les forums, mais là, je n'y arrive vraiment pas.

Voilà, J'ai une table du style :

idproduit_|_idfabriquant ____|_famille____|_description____|_conditionnement

1_|_ 1_|_ Truc_|_ AAAAAAAAA _|_Carton
2 1 Truc AAAAAAAAA Sac
3 1 Truc AAAAAAAAA Vrac
4 2 Truc OOOOOOOO Carton
5 2 Truc OOOOOOOO Sac
6 2 Truc OOOOOOOO Vrac
7 3 Truc VVVVVVV Carton
8 3 Truc VVVVVVV Sac
9 3 Truc VVVVVVV Vrac
10 4 Truc llllllllll Carton
11 4 Truc llllllllll Sac
12 4 Truc llllllllll Vrac
13 5 Machin XXX Carton
14 5 Machin XXX Sac
15 5 Machin XXX Vrac

Pas de probleme pour reccuperer les données, mais pour les mettre en forme (affichage).
Avec un : "mysql_fetch_array" ca va, chaque ligne et "$row[X]" du tabeau est affiché.
MAIS, dans mon cas je dois avoir 1 seule ligne affichée par "idfabriquant" ou "description".
Donc d'apres cet exemple
ligne1 = AAAAAAAAA-- Carton-- Sac--Vrac
ligne2 = OOOOOOOO-- Carton-- Sac--Vrac

Une idée sur comment s'y prendre, car là je m'en sort plus, j'ai le cerveau tout ramoli?

Je demande pas le code sur un plateau, mais une piste, une méthode.... j'ai deja presque plus de cheveux.

Merci.
Salut,

Soit tu fais un pré-traitement qui te rempli un tableau PHP pour grouper les différents conditionnement par fabricant, soit tu regardes du côté de GROUP BY et GROUP_CONCAT.
Ce que je préconiserais, ce serait d'utiliser des jointures. Seulement je n'ai jamais tenté la jointure d'une table à elle même.
N'étant pas un expert de ce côté, j'espère que ma réponse t'aidera malgré tout un peu
Je n'ai pas trop compris, mais si tu veut afficher tout les type "Sac" sur une seule ligne tu peut faire une requette avec un ORDER BY puis dans une boucle php :



$oldType == "";
while($row = mysql_fetch_assos(... ... ...)){
    if($row['type'] != $oldType){
        echo "<p>";
        echo "$row['type'] = ";
        echo "</p><p>";
    }
... ...
    $oldType = $row['type'];
}


Ca rejoin l'idée de Agylus
Modifié par Gajilidd (10 Aug 2010 - 11:15)
Merci pour vos idées.. je ne connaissais pas GROUP_CONCAT.. et ça pourrait m'être tres util pour mes prochaine requetes.

Pour les jointures, je vais en avoir avoir pas mal à faire par la suite, j'aimerai simplifier au maximum.

Là j'ai trouvé une boucle qui n'affiche que conditionnement tant que idfabriquant est identique, quand il change, on a donc une nouvelle ligne (<tr>) et ainsi de suite.


$famille1 = mysql_query("select * from produits WHERE famille='famille1'");
while ($myrow = mysql_fetch_array($famille1)) { 
   if ($actuall_idfabriquant == $myrow[1]) {
      echo "..".$myrow[4]."..";
      $actuall_idfabriquant = $myrow[1];
   } else {
      echo "..".$myrow[3]."..".$myrow[4]."..".$myrow[0]."..";
      $actuall_idfabriquant = $myrow[1];
   }
}


Bref merci pour vos pistes, j'avais vraiment le cerveau en compotte.