Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen eines Baums mit verschachtelten ungeordneten Listen

Hmm, ich glaube, es muss online Beispiele dafür geben, wie Sie dies erreichen können. Einige von ihnen sprechen vielleicht sogar über neue Möglichkeiten, hierarchische Daten zu speichern, und Sie werden die Lektüre interessant finden.

Wie auch immer, dieses auf Rekursion basierende Code-Snippet könnte Ihnen dabei helfen, Ihren HTML-Code zu erreichen.

<?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
?>

Hoffe es hilft!