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 :
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.
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();
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+
Partager