J'avais besoins d'un script de création d'un arbre à partir des données venant d'une BD. Je suis tombé sur le script suivant (voir aussi en ligne) :
Ce script m'affiche parfaitement l'arbre sous forme de <ul> et <li> mais j'ai un problème, c'est que lorsqu'on clique sur un menu, qu'il me renvoi l'identifiant du menu cliqué.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 query = "SELECT identiifantMenu, identifiantParent, nomMenu FROM table_menu ORDER BY val1 ASC"; $result = mysql_query($query); $nombre_enreg=mysql_num_rows($result); $categories = array(); while($row = mysql_fetch_array($result)) { $categories[] = array( 'parent_id' => $row['identifiantParent'], 'categorie_id' => $row['identiifantMenu'], 'nom_categorie' => $row['nomMenu '] ); } function afficher_menu($parent, $niveau, $array) { $html = ""; $niveau_precedent = 0; if (!$niveau && !$niveau_precedent) $html .= "\n<ul>\n"; foreach ($array AS $noeud) { if ($parent == $noeud['parent_id']) { if ($niveau_precedent < $niveau) {$html .= "\n<ul>\n"; $ident=$noeud['parent_id'];} $html .= "<li>" . $noeud['nom_categorie']; $niveau_precedent = $niveau; $html .= afficher_menu($noeud['categorie_id'], ($niveau + 1), $array); } } if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul>\n</li>\n"; else if ($niveau_precedent == $niveau) $html .= "</ul>\n"; else $html .= "</li>\n"; return $html; }
Puisque je ne dois pas afficher les identifiant, j'ai donc pensé que je peux à chaque fois je je crée un <li> ou un <ul>, ajouter l'attribut id qui sera égal à l'identifiant du menu <li id="identifiantMenu">. Mais selon ce script qui m'a été fourni, c'est vrai que je l'ai intégré et il marche, mais je ne le le comprend pas à 100% et je ne sais pas comment le faire, quelqu'un peut-il m'aider ?
Merci
Partager