Problème de liste déroulante

Résolu/Fermé
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 - 23 mai 2008 à 23:11
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 - 24 mai 2008 à 04:35
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.

1 réponse

Matio Messages postés 671 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 25 janvier 2011 299
23 mai 2008 à 23:51
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
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
24 mai 2008 à 04:35
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>';
0