While dans un while, requetes [PHP]

Fermé
kopax Messages postés 33 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 6 octobre 2022 - Modifié par kopax le 10/04/2010 à 18:17
kopax Messages postés 33 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 6 octobre 2022 - 10 avril 2010 à 21:16
Bonjour,

J'essai de faire un <select>, ou d'abord on irai chercher dans la base de donnée les marques, puis dans la même base de donnée affiché en dessous les produits de la même marque.

Pour le moment mon code ressemble à ca mais ca ne fonctionne pas :

 $sql_a = "SELECT * FROM $table_products WHERE products_cat=".$_POST["categories"]." ORDER BY products_brand ASC, products_id ASC";  

 $res_a = mysql_query($sql_a); 
 while($data_a = mysql_fetch_assoc($res_a)) 
 { 
  echo "<option> ".$data_a["products_brand"]."</option>"; 


  $sql_b = "SELECT * FROM $table_products WHERE products_cat=".$_POST["categories"].", products_brand=".$data_a['products_brand']." ORDER BY products_model ASC, products_id ASC"; 

  $res_b = mysql_query($sql_b); 
  while($data_b = mysql_fetch_assoc($res_b)) 
  { 
   echo "<option value='".$data_b["products_id"]."'>  ".$data_b["products_model"]."</option>"; 
  } 
 } 


Je sais pas si une boucle dans une boucle ça fais un peu lourd point de vue des requêtes.
Si il y a des meilleurs idées qui reste pas trop compliqué je suis preneur.

Il n'y a pas de message d'erreur, mais la deuxième boucle ne fonctionne pas et je me retrouve avec un <select> contenant uniquement la liste des differentes marque sans les produits en dessous.

kopax

2 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
10 avril 2010 à 20:48
Pour les marques, je te conseil d'utiliser la balise optgroup ; ainsi, on ne peut pas sélectionner une marque et on voit bien la différence entre le nom de la marque et les modèles.

Pour ton problème, il manque des apostrophes autour de tes variables.
0
kopax Messages postés 33 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 6 octobre 2022 4
10 avril 2010 à 21:16
Effectivement merci, problème regler.
J'ai modifié cette ligne
$sql_b = "SELECT * FROM $table_products WHERE products_cat='".$_POST["categories"]."' AND products_brand='".$data_a['products_brand']."' ORDER BY products_model ASC, products_id ASC";


Et ca fonctionne, mais plutôt mal.

Il y a plusieurs produits de la même marque, et avec mes boucles, il refais la liste de produits pour chaque fois ou il y a la marque.

Autrement dit, on vois la même marque et la même liste de produit sous la marque plusieurs fois (Autant qu'il y a de produit de la même marque).

C'est pas très malin.

Je vais voir comment réparer tout ça j'ai pas trop d'idée pour le moment donc je suis preneur si jamais.



Sinon pour optgroup, j'aimerai bien l'utilisé, le problème c'est qu'il décalle clairement le nom de la marque à gauche, et il le met en gras.
Ca agrandis le select, et il est placé dans un tableau ou il y a déjà des produits avec des noms trop long (faut aussi que je me penche la dessus), ce qui rend le select encore plus long et déforme le graphique.

Une image pour expliqué tout ca c'est plus parlant :

http://img181.imageshack.us/img181/5715/bugq.jpg
0