sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar man en kapslad meny från MySQL med PHP?

Detta är specifikt för två nivåer djupt. Rekommenderat tillvägagångssätt om det skulle vara mer är att använda en optimerad tabellstruktur för traversering, som http://articles.sitepoint.com/article/hierarchical-data-database/2 (påpekat någon annanstans) eller för att hämta den data du behöver och skjuta in den i en ordbok (associativ array) och fråga efter den på det sättet.

<?php
    $query = <<<EOT
        SELECT
            parent.name as parent_name,
            child.name as child_name,
        FROM
            items child
        INNER JOIN
            items parent
        ON
            child.parent_id = parent.id
        ORDER BY
            parent.name
EOT;

    $result = mysql_query($query) or die('Failure!');

    echo "<ul id=\"catmenu\">";

    $last_parent = '';
    while($row = mysql_fetch_array($result)){
        // If this is a new category, start a new one
        if($last_parent != $row['parent_name']){
            // Unless this is the first item, close the last category
            if($last_parent != ''){
                echo "</ul></li>";
            }
            $last_parent = $row['parent_name'];
            echo "<li class=\"menulist\">{$row['parent_name']}<ul>";
        }
        echo "<li>{$row['child_name']}</li>";
    }

    // If we actually had items, close the "category"
    if($last_parent != ''){
        echo "</ul></li>";
    }

    echo "</ul>";

?>


  1. MySQL Open Balance Kredit Debetsaldo

  2. Infoga flera rader från ett php-formulär i databasen

  3. Tillgång till mysql-behållare från annan behållare

  4. Fungerar funktionen snabbare utan STRICT modifierare?