Salut,
je cherche à faire un affichage de catégories et sous-catégories sous cette forme :

Cat1
-1.1
--1.1.1
--1.1.2
-1.2
--1.2.1
Cat2
-2.1
-2.2
--2.2.1
--2.2.2
-2.3

Mon problème se situe au niveau du décalage à ajouter avant les nomns de catégories. En l'occurence le nombre de "-" dans l'exemple.

Voici comment je stocke mes informations de catégories :
id | id_parent | name

Et enfin voici ce que j'ai pondu pour l'instant mais je bloque, il me manque quelque 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
 
decalage = "";
foreach(categories as cat)	{
	// Si la catégorie n'est pas une racine
	if(!cat->estRacine())	{
		// Si on a changé de parent
		if(idParent != cat->getIdParent())	{
			decalage .= "-";
			idParent = cat->getIdParent();
		}
	}
	// Si la catégorie est une racine
	else	{
		decalage = ""; // Je remet le décalage à 0
		idParent = 0; // Ici je remets l'idParent à 0 car une catégorie racine a 0 en idParent
	}
	affiche decalage.cat->getName();
En fait ceci me décale relativement comme il faut. Il y a en fait un problème car le décalage se remet à 0 uniquement si la catégorie est une racine.
Ce qui me donne à l'affichage un truc du style :

Cat1
-1.1
--1.1.1
--1.1.2
---1.2
----1.2.1
Cat2
-2.1
-2.2
--2.2.1
--2.2.2
---2.3

Voilà si quelqu'un a une idée pour résoudre ce problème ou un tout autre algo, ca m'intéresse bien ^^
Merci d'avance et a+