sql >> Database teknologi >  >> RDS >> Mysql

Opbygning af et træ ved hjælp af indlejrede uordnede lister

Hmm, jeg tror, ​​der skal være eksempler tilgængelige online på, hvordan du kan opnå dette. Nogle af dem taler måske endda om nye måder at gemme hierarkiske data på, og du vil finde læsningerne interessante.

Anyways, dette kodestykke, baseret på rekursion, kan måske hjælpe dig med at opnå din 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
?>

Håber det hjælper!



  1. Hvordan opretter man trætabel uden cyklisk relation?

  2. Kontrollerer om en mysql række IKKE er i et array

  3. Race tilstand mellem valg og opdatering

  4. Automatisering af den tabelformede modelbehandling af SSAS-databaser i SQL Server