Affichage sous catégories
delvauxo
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
delvauxo Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
delvauxo Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à réaliser un menu catégories avec un niveau de sous-catégories.
J'utilise une fonction récursive...
Voici le résultat de mon tableau ($catzo) qui contient les informations de mes catégories :
Voici le résultat de mon second tableau que j'obtiens à l'aide de ma fonction récursive : ($end_array)
Ce tableau est pour ma part correct car quand je change le parent id de n'importe quelle catégorie au hasard, il me la classe correctement !
Cependant je n'arrive pas à afficher le nom de mes catégories de manière identique !
je voudrais afficher mes catégories avec comme libellé $catzo[$key]->name.
mais je voudrais l'architecture de mon second tableau qui classe mes sous catégories au bon endroit dans mon arbre à l'aide des catégories parents.
Cela paraissait si simple et je me rends compte que je ne m'en sors pas du tout...
Je cherche à réaliser un menu catégories avec un niveau de sous-catégories.
J'utilise une fonction récursive...
Voici le résultat de mon tableau ($catzo) qui contient les informations de mes catégories :
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => Aucune
[slug] => aucune
[category] => non
[date] =>
[parent_id] => 0
)
[1] => stdClass Object
(
[id] => 12
[name] => Incontinence
[slug] => incontinence
[category] => oui
[date] =>
[parent_id] => 0
)
[2] => stdClass Object
(
[id] => 17
[name] => Bandagisterie
[slug] => bandagisterie
[category] => oui
[date] =>
[parent_id] => 0
)
[3] => stdClass Object
(
[id] => 21
[name] => Confort
[slug] => confort
[category] => oui
[date] =>
[parent_id] => 0
)
[4] => stdClass Object
(
[id] => 22
[name] => Vie quotidienne
[slug] => vie-quotidienne
[category] => oui
[date] =>
[parent_id] => 0
)
[5] => stdClass Object
(
[id] => 23
[name] => Equipement medical
[slug] => equipement-medical
[category] => oui
[date] =>
[parent_id] => 0
)
[6] => stdClass Object
(
[id] => 24
[name] => Bas de compression
[slug] => bas-de-compression
[category] => oui
[date] =>
[parent_id] => 0
)
[7] => stdClass Object
(
[id] => 25
[name] => Sport et bien etre
[slug] => sport-et-bien-etre
[category] => oui
[date] =>
[parent_id] => 0
)
[8] => stdClass Object
(
[id] => 26
[name] => Mobilite
[slug] => mobilite
[category] => oui
[date] =>
[parent_id] => 0
)
[9] => stdClass Object
(
[id] => 27
[name] => Salle de bain
[slug] => salle-de-bain
[category] => oui
[date] =>
[parent_id] => 0
)
[10] => stdClass Object
(
[id] => 29
[name] => ORL
[slug] => orl
[category] => oui
[date] =>
[parent_id] => 0
)
[11] => stdClass Object
(
[id] => 34
[name] => cou
[slug] => cou
[category] => oui
[date] =>
[parent_id] => 17
)
[12] => stdClass Object
(
[id] => 33
[name] => Dos
[slug] => dos
[category] => oui
[date] =>
[parent_id] => 17
)
[13] => stdClass Object
(
[id] => 35
[name] => epaule
[slug] => epaule
[category] => oui
[date] =>
[parent_id] => 17
)
[14] => stdClass Object
(
[id] => 36
[name] => Poignet et main
[slug] => poignet-et-main
[category] => oui
[date] =>
[parent_id] => 17
)
)
Voici le résultat de mon second tableau que j'obtiens à l'aide de ma fonction récursive : ($end_array)
Ce tableau est pour ma part correct car quand je change le parent id de n'importe quelle catégorie au hasard, il me la classe correctement !
Cependant je n'arrive pas à afficher le nom de mes catégories de manière identique !
Array
(
[0] => Array
(
[0] => 1
[1] => 12
[17] => Array
(
[0] => 34
[1] => 33
[2] => 35
[3] => 36
)
[18] => 21
[19] => 22
[20] => 23
[21] => 24
[22] => 25
[23] => 26
[24] => 27
[25] => 29
)
)
je voudrais afficher mes catégories avec comme libellé $catzo[$key]->name.
mais je voudrais l'architecture de mon second tableau qui classe mes sous catégories au bon endroit dans mon arbre à l'aide des catégories parents.
Cela paraissait si simple et je me rends compte que je ne m'en sors pas du tout...
A voir également:
- Affichage sous catégories
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Quelles sont les catégories d'autorisations demandées par l'application choisie par yasmine ? - Forum Sony
- Affichage youtube trop grand ✓ - Forum YouTube
2 réponses
Bonjour,
En même temps.. quand on regarde ton second array .. on n'y trouve aucun "libellé" .
Il faudrait que tu nous montres le code de ta fonction récursive ....
Cependant je n'arrive pas à afficher le nom de mes catégories de manière identique !
En même temps.. quand on regarde ton second array .. on n'y trouve aucun "libellé" .
Il faudrait que tu nous montres le code de ta fonction récursive ....
Hello jordane,
Effectivement il n'y a aucun libellé et c'est bien là qu'il est mon problème xD !
voici le code de ma fonction récursive :
Effectivement il n'y a aucun libellé et c'est bien là qu'il est mon problème xD !
voici le code de ma fonction récursive :
<?php $initialArray = array(); foreach ($catzo as $key => $value) { # code... $initialArray[$value->id] = $value->parent_id; } // RESULTAT DE MON TABLEAU ($initialArray) // // $initialArray = array( // // # cat_id => parent_id // // '1' => 0, // '12' => 0, // '17' => 0, // '21' => 0, // '22' => 0, // '23' => 0, // '24' => 0, // '25' => 0, // '26' => 0, // '27' => 0, // '29' => 0, // '34' => 17, // '33' => 17, // '35' => 17, // '36' => 17, // // ); // resituate the array $parent_ids = array(); foreach ($initialArray as $category_id => $parent_id) { if (!isSet($parent_ids[$parent_id])) { $parent_ids[$parent_id] = array(); } $parent_ids[$parent_id][] = $category_id; } // end_array is the result $end_array = array(); /** * Takes the key of the parent, the current set that it's working off of, the list of parent ids for reference * and the current place in the end result array, acting recursively */ function recursive($parent_key, $current_set, $parent_ids, $end_array) { foreach ($current_set as $parent_value) { if (!isSet($parent_ids[$parent_value])) { $end_array[$parent_key][] = $parent_value; } else { // if the parent_value is found in parent_ids, pass those values to the same function and the current end_array position $end_array[$parent_key] = recursive($parent_value, $parent_ids[$parent_value], $parent_ids, $end_array[$parent_key]); } } return $end_array; } // start with the top most element $end_array = recursive(key($parent_ids), current($parent_ids), $parent_ids, $end_array); print '<pre>'. //print_r($parent_ids, true). print_r($end_array,true). '</pre>' ; ?>