sql >> Databáze >  >> RDS >> Mysql

Zobrazení stromové nabídky vybraného rodiče

Ve vašem řešení vidím jeden problém. Když zkontrolujete ID if($id == $record->id) budete odpovídat pouze aktuální úrovni ve stromu. tj. výběr Dell s id=2 nebude odpovídat první iteraci, takže vaše funkce nepřejde na další úroveň.

Musíte sledovat cestu k vybrané nabídce.

Ve vašem případě. Když vyberete Dell, zobrazí se pouze „Počítač“, nemám pravdu?

Co třeba něco takového:

...
  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. Co je databáze Oracle?

  2. Rozdíly mezi databázemi SQL a NoSQL – srovnání MySQL a MongoDB

  3. 50 odstínů NULL – různé významy NULL v SQL

  4. Objekt MySQLConverter' nemá žádný atribut '_tuple_to_mysql' výjimku s mysql-connector