Bonjour,

Mon titre n'est surement pas trés clair, donc j'ais essayé de vous faire comprendre au mieux mon souci :

J'ai une BDD avec une table "menu" où sont stockées les entrées du menu que je veux afficher sur ma page..
Dans cette table il y'a un champ parent_Id, qui contient l'id du menu parent si celui-ci en a un...

Avec un exemple ça ira peut-être mieux...
Si ma base est rempli comme-ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ID - PID - MENU
1  - NULL - jaune
2  - 1 - vert
3  - NULL - bleu
4  - 2 - rose
5  - 4 - violet
Mon menu devra ressembler à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
* jaune (menu sans PID)
vert (sous-menu de "jaune")
-rose (sous-menu de "vert")
--violet (sous-menu de "rose")
* bleu (menu sans PID)
J'espère que mon mini-schéma est clair...

Donc mon souci ici c'est je ne connais pas à l'avance le nombre de 'niveaux' qu'il va y avoir pour une entrée du menu (j'peut trés bien me retrouvé avec un sous-sous-sous-sous-menu ...)

Le code suivant marche trés bien, mais seulement pour un seul sous-niveau..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$querySelectMenu = $db->query("SELECT * FROM menu WHERE menu_parentId IS NULL");
 
while($rowMenu = $querySelectMenu->fetchRow())
	$tableMenu[] = $rowMenu;
 
foreach($tableMenu as $dataTableMenu){
	$idMenu = $dataTableMenu['menu_id'];
	echo "* ".$dataTableMenu['menu_nom']."[$idMenu]<br />";
 
	$querySelectSousMenu = $db->query("SELECT * FROM Menu WHERE menu_parentId = $idMenu");
	while($rowSousMenu = $querySelectSousMenu->fetchRow())
		$tableSousMenu[] = $rowSousMenu;
 
	foreach($tableSousMenu as $dataTableSousMenu){
		$idMenu = $dataTableSousMenu['menu_id'];
		echo $dataTableSousMenu['menu_nom']."<br />";
 
		if($db->query("SELECT * FROM menu WHERE menu_parentId = $idMenu")->numRows() > 0) {
			echo " - ssmenu<br/>";
		}
	}
 
	$tableSousMenu = null;
}
(le "echo " - ssmenu<br/>";" est juste un test)

Ce que j'aimerais c'est un code qui puisse fonctionner indépedemmant du nombre de ss-niveaux présent dans la BDD.

Voilà n'hésitez pas si vous avez une idée ou si c'est pas clair...

merci.