Vous n'êtes pas identifié(e).
Hello,
Après avoir galéré comme pas possible, je vous partage une solution que j'ai trouvé sur le web pour afficher sous forme d'arbre les catégories et sous catégories. J'ai encore beaucoup à apprendre, notamment au niveau des fonctions sur les Arrays.
Juste une requête sql du genre "SELECT id,parent,name FROM table_category;" sans ce soucier de la relation parents enfants. j'ai trouvé ça pas mal par ce que tous les autres bouts de codes que j'ai trouvé obligeais à faire plusieurs requêtes pour avoir l’arborescence.
Voilà le code est le lien au cas où cela peut vous servir : http://codepad.org/8p9DyHUZ
$categories = array(
array('id' => 1, 'parent' => 0, 'name' => 'Category A'),
array('id' => 2, 'parent' => 0, 'name' => 'Category B'),
array('id' => 3, 'parent' => 0, 'name' => 'Category C'),
array('id' => 4, 'parent' => 0, 'name' => 'Category D'),
array('id' => 5, 'parent' => 0, 'name' => 'Category E'),
array('id' => 6, 'parent' => 2, 'name' => 'Subcategory F'),
array('id' => 7, 'parent' => 2, 'name' => 'Subcategory G'),
array('id' => 8, 'parent' => 3, 'name' => 'Subcategory H'),
array('id' => 9, 'parent' => 4, 'name' => 'Subcategory I'),
array('id' => 10, 'parent' => 9, 'name' => 'Subcategory J'),
);
function categoriesToTree(&$categories) {
$map = array(
0 => array('subcategories' => array())
);
foreach ($categories as &$category) {
$category['subcategories'] = array();
$map[$category['id']] = &$category;
}
foreach ($categories as &$category) {
$map[$category['parent']]['subcategories'][] = &$category;
}
return $map[0]['subcategories'];
}
echo "=== BEFORE ===\n";
print_r ($categories);
$tree = categoriesToTree($categories);
echo "=== AFTER ===\n";
print_r ($categories);
echo "=== TREE ===\n";
print_r ($tree);
🔴 Hors ligne