Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để tạo một menu lồng nhau từ MySQL với PHP?

Điều này đặc biệt cho hai cấp độ sâu. Phương pháp được đề xuất nên sử dụng nhiều hơn là sử dụng cấu trúc bảng được tối ưu hóa cho truyền tải, như http://articles.sitepoint.com/article/hierarchical-data-database/2 (được chỉ ra ở nơi khác) hoặc để kéo dữ liệu bạn cần và đẩy nó vào từ điển (mảng kết hợp) và truy vấn nó theo cách đó.

<?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. cách lấy các đối tượng tương tự dựa trên thẻ

  2. Lỗi khi tải Mô-đun MySQLdb 'Bạn đã cài đặt mysqlclient hay MySQL-python?'

  3. Cách tìm kiếm tên đầy đủ khi họ và tên được lưu trữ trong các cột khác nhau

  4. Android có thể kết nối trực tiếp với MySQL mà không cần PHP không?

  5. đặt tên so với mysqli_set_charset - ngoài việc ảnh hưởng đến mysqli_escape_string, chúng có giống nhau không?