Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP &MySQL Bagaimana menampilkan kategori setiap sub kategori dari database

Tentu saja itu mungkin. Kode ini akan membuat <ul> <li> pohon hierarkis, berapa pun jumlah levelnya

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

Hasil HTML untuk contoh Anda adalah:

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

Itu akan ditampilkan di browser seperti ini:

  • a &w
    • c &terkadang y
    • d
  • b &f

Saya ulangi, ini berfungsi untuk semua tingkat bersarang. Semoga ini membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Potong dengan kondisi

  2. Koneksi ke Db mati setelah>4<24 di spring-boot jpa hibernate

  3. pyodbc dan mySQL

  4. Menyetel ulang AUTO_INCREMENT membutuhkan waktu lama di MySQL

  5. perbarui dua tabel sekaligus