Bonjour,
Je souhaite faire un fil d'Ariane à l'aide d'une fonction récursive.
Je ne sais pas ce que j'ai ce matin, mais ce machin qui semble "très simple", ne souhaite pas marcher.
J'ai donc, une liste de page
Donc pour accéder à une catégorie : $MaVar[$CatId]['ce_que_je_cherche']
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 Array ( [11] => Array ( [id] => 11 [nom] => rub_accueil [ordre] => 1 [cible] => 11 [menu] => 1 [page] => 1 [parent] => 0 [template] => index.tpl [datecrea] => 1271677485 [datefin] => 0 [statut] => 1 [traduction] => Array ( [nom] => Accueil [description] => [statut] => 1 [cmetaresume] => [cmetakeywords] => [cmetadescription] => ) [lien] => categorie-11,Accueil ) [12] => Array ( [id] => 12 [nom] => mon_compte [ordre] => 2 [cible] => 12 [menu] => 1 [page] => 0 [parent] => 0 [template] => index.tpl [datecrea] => 1271773761 [datefin] => 0 [statut] => 1 [traduction] => Array ( [nom] => Mon Compte [description] => [statut] => 1 [cmetaresume] => [cmetakeywords] => [cmetadescription] => ) [lien] => categorie-12,Mon-Compte ) [13] => Array ( [id] => 13 [nom] => connexion [ordre] => 1 [cible] => 13 [menu] => 1 [page] => 1 [parent] => 12 [template] => log.tpl [datecrea] => 1271773761 [datefin] => 0 [statut] => 2 [traduction] => Array ( [nom] => Se connecter [description] => [statut] => 1 [cmetaresume] => [cmetakeywords] => [cmetadescription] => ) [lien] => categorie-13,Se-connecter ) )
Donc $MaVar[11]['id'] retourne bien 11.
L'idée est donc en partant de la page la plus basse (catégorie 13), de remonter jusqu'au plus au parent : catégorie 11.
Voici ma fonction
J'ai testé les variables, elles sont bonnes.
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 public function ListerCategorieParentes($aListeCategories,$iCategorieId) { $aListe[] = $iCategorieId; $iParent = $aListeCategories[$iCategorieId]['parent']; if($iParent == 0) { return $aListe; } else { //réentrance $aListe[] = $iParent; $this->ListerCategorieParentes($aListeCategories,$iParent); } }
Donc, si je trace mon algo, normalement
1- $aToutesCategories = le array que j'ai mis juste au dessus, $iCategorieId = la catégorie courante (ici 13)
2- Je mets 13 dans mon tableau, j'ai $aListe[0] => 13
3- Son parent est 12 et n'est donc pas égal à 0, je rentre dans le else
4- Je mets le parent 12 dans ma liste, j'ai maintenant $aListe[0] =>13, $aListe[1] => 12
5- Rappel de la fonction, je travaille avec 12, son parent est 0, j'arrête et je retourne $aListe
Si je teste ma fonction sur les catégorie 11 ou 12, il me retourne bien seulement son propre id (normal, pas de parent) : array[0]=>11 (ou 12)
Si je teste ma fonction sur la catégorie 13, il ne me retourne rien alors qu'il devrait retourner 13, puis 12.
Help :s
Partager