Mysql
 sql >> база данни >  >> RDS >> Mysql

Показване на дървовидното меню на избрания родител

Виждам един проблем с вашето решение. Когато проверявате за ID if($id == $record->id) ще отговаряте само на текущото ниво в дървото. т.е. избирането на Dell с id=2 няма да съответства на първата итерация, така че функцията ви няма да премине към следващото ниво.

Трябва да следите пътя до избраното от вас меню.

В твоя случай. Когато изберете Dell, ще видите само „Компютър“, прав ли съм?

Какво ще кажете за нещо подобно:

...
  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. Автоматизирайте внедряването на вашия MySQL или Postgres клъстер от архивиране

  2. PDO не може да изпълнява заявки, докато други небуферирани заявки са активни

  3. Как мога да се справя със заявки за припокриване на многоъгълници на MySQL?

  4. Как мога да слея две MySQL таблици?

  5. mysqli_stmt::bind_result():Броят на променливите за свързване не съвпада с броя на полетата в подготвеното изявление