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

Tampilkan menu pohon dari induk yang dipilih

Saya melihat satu masalah dengan solusi Anda. Saat Anda memeriksa ID if($id == $record->id) Anda hanya akan cocok dengan level saat ini di pohon. yaitu memilih Dell dengan id=2 tidak akan cocok dengan iterasi pertama sehingga fungsi Anda tidak akan berpindah ke level berikutnya.

Anda perlu melacak jalur ke menu yang Anda pilih.

Dalam kasus Anda. Saat Anda memilih Dell, Anda hanya akan melihat "Komputer", benar?

Bagaimana dengan yang seperti ini:

...
  function rederTreeById($records, $path) {
        echo '<ul>';
        foreach($records as $record) {
                if(in_array($record->id, $path)) {
                        echo '<li>'.$record->title;
                        if(!empty($record->childs)) {
                                rederTreeById($record->childs, $path);
                        }
                        echo '</li>';
                } else {
                        echo '<li>'.$record->title.'</li>';
                }
        }
        echo '</ul>';
 }

 function getPath($id) {
    $path = array();
    $current=$id;
    $path[] = 1
    while(!is_null($categories[$current]->parent_id)) {
        $current=$categories[$current]->parent_id
        $path[] = $current;
    }
    return $path;
 }


$selectedId = 1;


 rederTreeById($rootCategories, getPath($selectedId));
...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghitung total durasi waktu di MySQL

  2. MySQL:Mengkloning database MySQL pada instance MySql yang sama

  3. Memperbaiki penyandian

  4. Cara mendapatkan nilai yang dipisahkan koma dari database

  5. Neo4j - Jatuhkan Indeks menggunakan Cypher