sql >> Database >  >> RDS >> Mysql

Een boom bouwen met behulp van geneste ongeordende lijsten

Hmm, ik geloof dat er online voorbeelden beschikbaar moeten zijn over hoe je dit kunt bereiken. Sommigen van hen kunnen zelfs praten over nieuwe manieren om hiërarchische gegevens op te slaan en u zult de metingen interessant vinden.

Hoe dan ook, dit codefragment, gebaseerd op recursie, kan u helpen uw HTML te bereiken.

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

Ik hoop dat het helpt!



  1. Hoe de UTF8-tekenset in Oracle configureren?

  2. Hoe het type Doctrine TEXT te krijgen?

  3. Kan projectmetadata niet ophalen. Zorg ervoor dat het een op MSBuild gebaseerd .NET Core-project is

  4. Kan het Postgres-gegevenstype NUMERIC ondertekende waarden opslaan?