While dans un while, requetes [PHP]

Fermé
kopax
Messages postés
34
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
4 novembre 2019
- Modifié par kopax le 10/04/2010 à 18:17
kopax
Messages postés
34
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
4 novembre 2019
- 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
18746
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 391
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
34
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
4 novembre 2019
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