Использование PHP для отображения древовидной структуры, извлеченной из базы данных - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть таблица базы данных с этими записями:

parent_id   child_id    
    0   1   
    0   2   
    0   3   
    0   4   
    0   5   
    0   6   
    0   7   
    0   8   
    0   9   
    0   10  
    0   11  
    0   12  
    1   13  
    1   14  
    1   15  
    2   16  
    2   17  
    2   18  
    3   19  
    3   20  
    3   21  
    4   22  
    4   23  
    4   24  
    5   25  
    5   26  
    5   27  
    6   28  
    6   29  
    6   30  
    7   31  
    7   32  
    7   33  
    7   34  
    1   35  
    1   36  
    1   37  
    1   38  
    1   39

Я хочу построить древовидную структуру с родителем / потомком, используя рекурсивную функцию.

function recursion ($parentID, $lvl){

$query = 'SELECT parent_id, child_id FROM ///// WHERE parent_id='.$parentID;    
$this->_db->setQuery($query);
$this->_db->query();
$records = $this->_db->loadObjectList();

$count = count($records);

    if ($count > 0){
            foreach ($records as $item){
                print_r ("parent id  ".$item->parent_id."child id  ".$item->child_id."  lvl->  ".$lvl."</br>");
                return $this->recursion($item->child_id, $lvl+1);
        }
    }
}   

Мой код печатает только:

parent id 0child id 1 lvl-> 1
parent id 1child id 13 lvl-> 2

Я не могу понять, как напечатать все дерево. Я думаю, что я на правильном пути. Может кто-нибудь дать мне подсказку о том, как напечатать целое дерево?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Удалить возврат .

В следующий раз возьмите лист бумаги и постройте код, строка за строкой. Запишите, что произойдет. Подумай об этом.

Теперь, если вы хотите произвести впечатление на своего учителя, выясните, как это сделать без рекурсии. Большинство функций рекурсии могут быть сделаны процедурными, и они используют меньше памяти.

1 голос
/ 10 ноября 2011
  1. если вы хотите распечатать целое дерево, не используйте рекурсию.

  2. сделайте правильный ОДИН SQL-запрос, а затем сделайте правильный вывод того, что вам нужно.

  3. Если вы расскажете больше о том, что хотите получить, вам будет легче помочь.

Спасибо.

...