Affichage sous catégories
delvauxo
Messages postés
2
Statut
Membre
-
delvauxo Messages postés 2 Statut Membre -
delvauxo Messages postés 2 Statut Membre -
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
- Affichage youtube trop grand ✓ - Forum YouTube
- Pinterest problème affichage ✓ - Forum Réseaux sociaux
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>'
;
?>