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

PHP &MySQL Cách hiển thị danh mục bất kỳ danh mục con nào từ cơ sở dữ liệu

Tất nhiên là có thể. Mã này sẽ hiển thị một <ul> <li> cây phân cấp, bất kể số cấp

<?php
  //Connect to mysql server
  $cn = mysql_pconnect("server", "username", "password");
  mysql_select_db("database_name");
  $rs = mysql_query("SELECT id, parent_id, category FROM categories", $cn);
  $childrenTree = array(); //Will store an array of children for each parent
  $categoryNames = array(); //Will store category name for each id
  //We fill $childrenTree and  $categoryNames from database
  while($row = mysql_fetch_array($rs)){
     list($id, $parent_id, $category) = $row;     
     $categoryNames[(string)$id] = $category;
     $parent_id = (string)$parent_id;
     if(!array_key_exists($parent_id, $childrenTree)) 
         $childrenTree[$parent_id] = array();
     $childrenTree[$parent_id][] = (string)$id;
  }

 //Main recursive function. I'll asume '0' id is the root node
 function renderTree($parent = "0"){
    global $categoryNames;
    global $childrenTree;
    if($parent != "0") echo "<li> ", $categoryNames[$parent], "\n";
    $children = $childrenTree[$parent];
    if(count($children) > 0){ //If node has children
       echo "<ul>\n";
       foreach($children as $child)
          renderTree($child);
       echo "</ul>\n";
    }
    if($parent != "0") echo "</li>\n";
 }
 renderTree();  //This renders the hierarchical tree
?>

HTML kết quả cho ví dụ của bạn sẽ là:

<ul>  
  <li> a & w
    <ul>
        <li> c & sometimes y </li>
        <li> d </li>
    </ul>
  </li>
  <li> b & f </li>
</ul>

Điều đó sẽ hiển thị trong một trình duyệt như sau:

  • a &w
    • c &đôi khi là y
    • d
  • b &f

Tôi nhắc lại, điều này phù hợp với mọi cấp độ lồng nhau. Hy vọng điều này sẽ giúp ích cho bạn.




  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 - đối sánh đầu vào biểu mẫu latin (tiếng Anh) với dữ liệu utf8 (không phải tiếng Anh)

  2. mysql:tham chiếu đến các cột bằng số

  3. Cách xóa các hàng trùng lặp và cập nhật bảng

  4. Làm thế nào để chuyển đổi một chuỗi thành hệ thập lục phân trong MySQL - HEX ()

  5. Làm thế nào để cài đặt trình điều khiển pdo trong php docker image?