Bonjour à tous,
J'essaie depuis un certains moment déjà de faire une arborescence à base de liste imbriquées mais la je craque ^^, je n'arrive pas au résultat que je souhaite.
Les données de mon arborescence se présentent ainsi une fois extraite de la base :
Array([id_pere]([idFils]=>nomFils)) , par exemple :
L'id 0 étant les groupes sans parent (je préfère 0 à null vu la gestion par tableau)
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 Array ( [0] => Array ( [1] => Local [4] => Internet ) [1] => Array ( [5] => Bureau [7] => Chambre ) [5] => Array ( [6] => Placard ) )
J'ai ensuite une fonction qui me permet de "parser" mon tableau. En mode texte simple (saut de ligne et tabulation) pas de souçis l arbre s affiche correctement :
Mais en mode liste html , ce n'est plus la même chose
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 function build_tree($tree, $id) { static $profondeur = -1; $profondeur++; foreach ($tree[$id] as $idFils => $nomFils) { //Nouveau groupe $listgrp .= '<li class="closed"><a href="#" onclick="this.blur();return false;">'.utf8_encode($nomFils).'</a><ul>'; //Si un fils existe if (is_array($tree[$idFils])) { build_tree($tree, $idFils); } else $listgrp.=str_repeat('</ul></li>',$profondeur); } $profondeur--; } build_tree($tabGrp, 0);
Je n'arrive pas à réaliser cette structure :
Je n'obtiens que celle ci , où les profondeur ne sont pas toutes respectées :
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 <li class="closed"><a href="#" onclick="this.blur();return false;">Local</a> <ul> <li class="closed"><a href="#" onclick="this.blur();return false;">Bureau</a> <ul> <li class="closed"><a href="#" onclick="this.blur();return false;">Placard</a> <ul> </ul> </li> </ul> </li> <li class="closed"><a href="#" onclick="this.blur();return false;">Chambre</a> <ul> </ul> </li> </ul> <li class="closed"><a href="#" onclick="this.blur();return false;">Internet</a> <ul> </ul> </li>
Si un oeil neuf pouvais m'aider car j'ai beau tourner le problème dans tous les sens il me manque toujours une balise quelque par
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 <li class="closed"><a href="#" onclick="this.blur();return false;">Local</a> <ul> <li class="closed"><a href="#" onclick="this.blur();return false;">Prynel</a> <ul> <li class="closed"><a href="#" onclick="this.blur();return false;">Salle test</a> <ul> </ul> </li> </ul> </li> <li class="closed"><a href="#" onclick="this.blur();return false;">Média & sécurité</a> <ul> </ul> </li> <li class="closed"><a href="#" onclick="this.blur();return false;">Internet</a> <ul> </ul> </li>
Partager