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

Здесь я строю дерево меню. Доступ к категории осуществляется по ее идентификатору и дочернему элементу. Моя функция отлично работает для двухуровневого меню, но не может создать третий уровень. Меню третьего уровня должно отображаться только в том случае, если щелкнул идентификатор элемента второго уровня. Мне нужна эта функция, чтобы отслеживать путь к узлу тоже. Что если указан идентификатор третьего уровня, то дерево должно быть расширено до третьего уровня. то есть родительский ребенок, и если у этого родителя тоже есть родитель. MySQL Table

+-------+-----------+------------+
|  id   |  title    | parent_id  |
+-------+-----------+------------+
|   1   | Comput,ers |    NULL    |
+-------+-----------+------------+
|   2   | Dell      |     1      |
+-------+-----------+------------+
|   3   | Laptops   |     2      |
+-------+-----------+------------+
|   4   | Desktops  |     2      |
+-------+-----------+------------+
|   5   | HP        |     1      |
+-------+-----------+------------+

Код PHP

<?php
 $sql = "SELECT * FROM category";
 $statement= $db->prepare($sql);
 $statement->execute();
 $categories = array();
 $rootCategories = array();
 while ( $row = $statement->fetchObject() ) {
        $row->childs = array();
        $categories[$row->id] = $row;
        if(empty($row->parent_id)) {
                $rootCategories[$row->id] = $categories[$row->id];
        } else {
                $categories[$row->parent_id]->childs[] = $categories[$row->id];
        }
 }

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


 rederTreeById($rootCategories, 1);
?>

Например, если нажали Компьютеры, то

компьютерDellHP

если Dell нажал тогда

компьютерDell
НоутбукиНастольные компьютерыHP

Ответы на вопрос(1)

Ваш ответ на вопрос