Bonjour,
Voici mon problème :
J'ai une table pour le menu avec les champs suivant : id, niveau, parent, description.
Id : unique auto_increment
niveau : le niveau hierarchique (root = 0)
parent : l'id parent de l'entrée.

Mon but faire un menu en ul li à x niveaux.

J'ai fait une fonction qui marche mais que sur un seul niveau ce qui est pas top:

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
25
26
 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  $niv_h_tab[$row{'id'}] = $row['num_h'];
  $parent_tab[$row{'id'}] = $row['parent'];
  $descr_tab[$row{'id'}] = stripslashes($row['description']);
  $niv_max = $row['num_h'];
}
 
$html = "<ul id=\"menu\">";
$niv = 1;
foreach ($niv_h_tab as $key => $value){
  if ($value == $niv){
    $html .= "<li><a href=\"#\">".$descr_tab[$key]."</a>";
    $html .= "<ul>";
    foreach ($parent_tab as $key_p => $parent){
      if ($parent == $key){
        $html .= "<li><a href=\"#\">".$descr_tab[$key_p]."</a></li>";
      }
    }
    $html .= "</ul>";
    $html .= "</li>";
  }
}
$html .= "</ul>";
echo $html;
}
Hélas à mon avis la logique de cette fonction est fausse pour un menu à x niveaux.

Si vous avez des idées, je suis preneur. Merci d'avance.