Mysql
 sql >> Base de données >  >> RDS >> Mysql

Construire un arbre à l'aide de listes non ordonnées imbriquées

Hmm, je crois qu'il doit y avoir des exemples disponibles en ligne sur la façon dont vous pouvez accomplir cela. Certains d'entre eux pourraient même parler de nouvelles façons de stocker des données hiérarchiques et vous trouverez les lectures intéressantes.

Quoi qu'il en soit, cet extrait de code, basé sur la récursivité, pourrait vous aider à réaliser votre code HTML.

<?php
// recursive function to generate the category HTML
function generateTree ($parent) {
    global $arrPCat, $arrCat;
    if (array_key_exists($parent, $arrPCat)) {
        echo '<ul' . ($parent == 0 ? ' class="tree"' : '') . '>';
        foreach ($arrPCat[$parent] as $arrC) {
            echo '<li>' . $arrC['name'] . '</li>';
            generateTree($arrC['id']);
        }
        echo '</ul>';
    }
}

// read all categories from the DB
$rs = mysql_query('SELECT  `cl`.`id`, `cl`.`name`, `c`.`position`, IFNULL(`c`.`parent_id`, 0) AS `parent_id`
    FROM  `categories_locale`  `cl`
    LEFT JOIN  `categories`  `c` ON  `cl`.`id` =  `c`.`id`
    ORDER BY  `c`.`parent_id` ,  `c`.`position`');
while ($r = mysql_fetch_assoc($rs)) {
    // store parent and its children into the $arrPCat Array
    $arrPCat[$r['parent_id']][] = Array (
                                    'id' => $r['id'],
                                    'name' => $r['name']
                                  );
}
generateTree (0); // now generate the HTML for the category tree
?>

J'espère que cela vous aidera !