Bonjour,
J'essaye de créer un menu avec 3 niveaux en utilisant la fonction récursive pour mon menu arborescent. J'ai donc mon tableau qui est comme ceci :
Voici ma fonction récursive :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 Array ( [0] => Array ( [id] => 1 [parent] => 0 [name] => Accueil [link] => # [position] => 1 [active] => 1 ) [1] => Array ( [id] => 2 [parent] => 0 [name] => Hebergement [link] => # [position] => 1 [active] => 1 ) [2] => Array ( [id] => 6 [parent] => 0 [name] => Script PHP [link] => # [position] => 1 [active] => 1 ) [3] => Array ( [id] => 3 [parent] => 2 [name] => Pack light [link] => # [position] => 1 [active] => 1 ) [4] => Array ( [id] => 4 [parent] => 2 [name] => Pack emeraude [link] => # [position] => 2 [active] => 1 ) [5] => Array ( [id] => 5 [parent] => 2 [name] => Pack rubis [link] => # [position] => 3 [active] => 1 ) [6] => Array ( [id] => 7 [parent] => 6 [name] => Radio shoutcast [link] => # [position] => 1 [active] => 1 ) [7] => Array ( [id] => 8 [parent] => 7 [name] => Support technique [link] => # [position] => 1 [active] => 1 ) [8] => Array ( [id] => 9 [parent] => 8 [name] => Acheter ce script [link] => # [position] => 1 [active] => 1 ) )
Je fait donc appelle a ma fonction comme ceci : afficher_menu(0, 0, $menu);
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 <?php public function afficher_menu($parent, $niveau, $array) { $html = ""; $niveau_precedent = 0; foreach ($array AS $noeud) { if ($parent == $noeud['parent']) { if ($niveau == 0 && $niveau_precedent == 0) $html .= "<li class=\"dropdown\">\n"; if ($niveau_precedent < $niveau) $html .= "<ul class=\"dropdown-menu\">"; if ($noeud['parent'] != 0) $html .= "<li>"; $html .= "<a class=\"dropdown-toggle\" href=\"" . $noeud['link'] . "\">" . $noeud['name'] . "</a>"; if ($noeud['parent'] != 0) $html .= "</li>"; $niveau_precedent = $niveau; $html .= $this->afficher_menu($noeud['id'], ($niveau + 3), $array); if ($niveau == 0 && $niveau_precedent == 0) $html .= "</li>\n"; } } if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul>\n"; else if ($niveau_precedent == $niveau) $html .= "\n"; else $html .= "\n"; return $html; } ?>
Cela m'affiche bien mon menu (je le voit en code source) :
Par contre visuellement sur mon site il y'a le niveau 2 et niveau 3 qui ne s'affiche pas j'ai mis une information sur le code ci dessus : not visible pour informer de ce qui ne se voyez pas visuellement.
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 <li class="dropdown"> <a class="dropdown-toggle" href="#"> Accueil </a> </li> <li class="dropdown"> <a class="dropdown-toggle" href="#"> Hébergement </a> <ul class="dropdown-menu"> <li><a href="#">Pack light</a></li> <li><a href="#">Pack emeraude</a></li> <li><a href="#">Pack rubis</a></li> </ul> </li> <li class="dropdown"> <a class="dropdown-toggle" href="#"> Script PHP </a> <ul class="dropdown-menu"> <li><a href="#">Radio shoucast</a></li> <ul class="dropdown-menu"> <li><a href="#">Support technique</a></li><!-- not visible --> <ul class="dropdown-menu"> <li><a href="#">Acheter ce script</a></li><!-- not visible --> </ul> </ul> </ul> </li>
J'aurai donc voulu savoir comment les afficher ? Y'a t'il un problème avec ma fonction récursive ?
Merci pour vos futures réponses.
Cordialement




Répondre avec citation





Partager