Problème de liste déroulante

Résolu
Bonjour,

J'ai un petit soucis avec une boucle...

J'aimerais afficher dans une liste déroulante des éléments de ma base de données, là tout va bien, j'y arrive.
Mais j'aimerais que les sous-catégories s'affichent également dans la liste déroulante sous la catégorie à auquelles elles sont liées... là je coince...

Moi conde actuel :
echo '<option value="">Vente</option>';
		$sql_categories_p = mysql_query("SELECT name, nom FROM produits WHERE type='Categories_produits' AND cat_au_dessus='' ORDER BY id");
		$nombre_de_categories_p = mysql_num_rows($sql_categories_p);
		while($data_categories_p = mysql_fetch_row($sql_categories_p))
			{
			$name_categories_p[] = $data_categories_p[0];
			$nom_categories_p[] = $data_categories_p[1];
			$name_categories_p_strip[] = stripslashes($data_categories_p[0]);
			$nom_categories_p_strip[] = stripslashes($data_categories_p[1]);
			}
				
		for ($i = 0; $i<$nombre_de_categories_p; $i++)
			{
			echo '<option value="'.$name_categories_p_strip[$i].'">&nbsp;| - '.$name_categories_p_strip[$i].(($nom_categories_p_strip[$i]) ? ' ('.$nom_categories_p_strip[$i].')' : '').'</option>';
			}
		echo '</select>';
Ce code m'affiche parfaitement les catégories principales, mais je ne sais pas comment afficher aussi les sous-catégories liées. Par exemple je cherche à faire ça :
*liste déroulante*
>> Produit 1
      >> Sous produit 1
            >> Sous-sous produit 1
            >> Sous-sous produit 2
      >> Sous produit 2
            >> Sous-sous produit 3
>> Produit 2
      >> Sous produit 3
      >> Sous produit 4
            >> Sous-sous produit 4
            >> Sous-sous produit 5
      >> Sous Produit 5
et ainsi de suite...
J'ai enregistré dans la base de données pour chaque produit s'il appartient à un produit au dessus, donc je suppose que c'est facilement faisable, mais...

Voici ce que j'ai essayé, mais bien sûr, ça ne fonctionne pas :
echo '<option value="">Vente</option>';
$sql_categories_p = mysql_query("SELECT name, nom FROM produits WHERE type='Categories_produits' AND cat_au_dessus='' ORDER BY id");
$nombre_de_categories_p = mysql_num_rows($sql_categories_p);
while($data_categories_p = mysql_fetch_row($sql_categories_p))
	{
	$name_categories_p[] = $data_categories_p[0];
	$nom_categories_p[] = $data_categories_p[1];
	$name_categories_p_strip[] = stripslashes($data_categories_p[0]);
	$nom_categories_p_strip[] = stripslashes($data_categories_p[1]);
	}
		
$sql_categories_p2 = mysql_query("SELECT name, nom FROM produits WHERE type='Categories_produits' AND cat_au_dessus='Produit 1' ORDER BY id");
$nombre_de_categories_p2 = mysql_num_rows($sql_categories_p2);
while($data_categories_p2 = mysql_fetch_row($sql_categories_p2))
	{
	$name_categories_p[] = $data_categories_p[0];
	$nom_categories_p[] = $data_categories_p[1];
	$name_categories_p_strip[] = stripslashes($data_categories_p[0]);
	$nom_categories_p_strip[] = stripslashes($data_categories_p[1]);
	}
		
for ($i = 0; $i<$nombre_de_categories_p; $i++)
	{
	echo '<option value="'.$name_categories_p_strip[$i].'">&nbsp;| - '.$name_categories_p_strip[$i].(($nom_categories_p_strip[$i]) ? ' ('.$nom_categories_p_strip[$i].')' : '').'</option>';
	
	for ($i = 0; $i<$nombre_de_categories_p2; $i++)
		{
		echo '<option value="'.$name_categories_p2_strip[$i].'">&nbsp;| - '.$name_categories_p2_strip[$i].(($nom_categories_p2_strip[$i]) ? ' ('.$nom_categories_p2_strip[$i].')' : '').'</option>';
		}
	}
echo '</select>';
Merci d'avance à qui pourra m'éclairer.
Configuration: Windows XP
Internet Explorer 7.0

1 réponse

  1. Salut,
    bon là j'ai peu forcé sur la bibine mais je pense qu'il y a problème dans tes requêtes, essaye plutôt des requetes imbriqués.
    Excuses moi encore mais là j'suis trop fatigué.
    Good luck
    1. Je te remercie pour ta réponse, en fait j'ai réussi en réutilisant une autre requête sans les boucles for() ! :)
      echo '<option value="">Vente</option>';
      $sql_categories_p = mysql_query("SELECT name, nom FROM produits WHERE type='Categories_produits' AND cat_au_dessus='' ORDER BY id");
      $nombre_de_categories_p = mysql_num_rows($sql_categories_p);
      while($data_categories_p = mysql_fetch_row($sql_categories_p))
      	{
      	$name_categories_p = $data_categories_p[0];
      	$nom_categories_p = $data_categories_p[1];
      	$name_categories_p_strip = stripslashes($data_categories_p[0]);
      	$nom_categories_p_strip = stripslashes($data_categories_p[1]);
      		
      	echo '<option value="'.$name_categories_p_strip.'">&nbsp;| - '.$name_categories_p_strip.(($nom_categories_p_strip) ? ' ('.$nom_categories_p_strip.')' : '').'</option>';
      		
      	$sql_categories_p = mysql_query("SELECT name, nom FROM produits WHERE type='Categories_produits' AND cat_au_dessus='".$data_categories_p[0]."' ORDER BY id");
      	$nombre_de_categories_p = mysql_num_rows($sql_categories_p);
      	while($data_categories_p = mysql_fetch_row($sql_categories_p))
      		{
      		$name_categories_p = $data_categories_p[0];
      		$nom_categories_p = $data_categories_p[1];
      		$name_categories_p_strip = stripslashes($data_categories_p[0]);
      		$nom_categories_p_strip = stripslashes($data_categories_p[1]);
      			
      		echo '<option value="'.$name_categories_p_strip.'">&nbsp;| - '.$name_categories_p_strip.(($nom_categories_p_strip) ? ' ('.$nom_categories_p_strip.')' : '').'</option>';
      		}
      	}
      echo '</select>';