sql >> Database teknologi >  >> RDS >> Mysql

Vis træmenuen for den valgte forælder

Jeg ser et problem med din løsning. Når du tjekker efter ID if($id == $record->id) du vil kun matche det aktuelle niveau i træet. dvs. at vælge Dell med id=2 vil ikke matche den første iteration, så din funktion går ikke videre til næste niveau.

Du skal holde styr på stien til din valgte menu.

I dit tilfælde. Når du vælger Dell vil du kun se "Computer", har jeg ret?

Hvad med sådan noget her:

... 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. libmysqlclient15-dev på macs?

  2. Hvorfor SQL Server DATETIME-typen sparer tid i tikker på 1/300 af et sek?

  3. mysql til python 2. 7 siger, at Python v2.7 ikke blev fundet

  4. SQLite introducerer UNIXEPOCH()-funktionen