Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да създадете вложено меню от MySQL с PHP?

Това е специално за две нива дълбоко. Препоръчителният подход, ако е повече, е да използвате оптимизирана структура на таблицата за обход, като http://articles.sitepoint.com/article/hierarchical-data-database/2 (посочено другаде) или да изтеглите данните, от които се нуждаете, и да ги вкарате в речник (асоциативен масив) и да ги заявите по този начин.

<?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Радиус от 40 километра с използване на географска ширина и дължина

  2. Съхранявайте GUID в MySQL от C#

  3. Колоната на MySQL е зададена на NOT NULL, но все пак позволява NULL стойности

  4. Създаване на jqplot графика с помощта на php

  5. API за критерии за хибернация:вземете n произволни реда