Рекурсивный обход дерева с помощью mysql через PHP

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

id    description    parentId    
1      Level 1        0           
2      Level 2        0           
3      Level 1a       1   
4      Level 1b       1 
5      Level 1a1      3      

Я нашел вопрос, похожий на мой, на сайте, но когда я попытался его решить, я получил следующее при бесконечном повторении:

Код:

function makeList($par_id = 0) {
    //your sql code here
    $result = mysql_query("SELECT * FROM pB_test WHERE parentId = $par_id");
    $pages = mysql_fetch_array( $result );

    if (count($pages)) {
        echo '<ul>';
        foreach ($pages as $page) {
            echo '<li>', $page['description'];
                makeList($page['parentId']);
                echo '</li>';
        }
        echo '</ul>';
    }
}

makeList();

Вывод:

1
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l

Кто-нибудь знает, как это исправить и в чем именно проблема? Ура

5
задан Keiran Lovett 12 June 2012 в 09:37
поделиться