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 :
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
        )
 
)
L'id 0 étant les groupes sans parent (je préfère 0 à null vu la gestion par tableau)

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 :
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);
Mais en mode liste html , ce n'est plus la même chose
Je n'arrive pas à réaliser cette structure :
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>
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
 
<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>
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