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

Xây dựng cây bằng cách sử dụng danh sách không có thứ tự lồng nhau

Rất tiếc, tôi tin rằng phải có các ví dụ trực tuyến về cách bạn có thể thực hiện điều này. Một số người trong số họ thậm chí có thể nói về những cách mới để lưu trữ dữ liệu phân cấp và bạn sẽ thấy các bài đọc thú vị.

Dù sao đi nữa, đoạn mã này, dựa trên đệ quy, có thể giúp bạn đạt được HTML của mình.

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

Hy vọng nó sẽ hữu ích!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL thành định dạng outfile

  2. Tại sao MySQL không luôn sử dụng hợp nhất chỉ mục ở đây?

  3. là gì và làm thế nào để loại bỏ lỗi vùng bảng khỏi cơ sở dữ liệu của tôi?

  4. so sánh các tập dữ liệu và trả về kết quả phù hợp nhất

  5. Trả về các bản ghi cha với các bản ghi con bằng các giá trị cụ thể VÀ trong đó tổng tập các bản ghi con cho một cha mẹ nhất định bằng một giá trị cụ thể