Многоуровневое меню PHP и MySQL

Всем привет. Есть задача: построить многоуровневое меню, используя один запрос к MySQL. Соответственно, этим запросом мы извлекаем все существующие элементы меню, их ID и Parent_ID. После этого нужно получившийся результат пропарсить в многомерный массив. Есть ли существующие решения? я думаю есть, чтобы не изобретать велосипед

1 ответов



<?php
$result = mysql_query("SELECT `id`, `parent_id`, `name`, `order` FROM `catalog` ORDER BY `id`, `parent_id`, `order`");
$menu = array();
$menu_index = array();
while($row = mysql_fetch_assoc($result)){
  if($row['parent_id'] == 0) {
    $menu[] = $row;
    $menu[sizeof($menu)-1]['child'] = array();
    $menu_index[$row['id']] = &$menu[sizeof($menu)-1];
  } else {
    $menu_index[$row['parent_id']]['child'][] = $row;
    $menu_index[$row['id']] = &$menu_index[$row['parent_id']]['child'][sizeof($menu_index[$row['parent_id']]['child'])-1];
  }
}
print_r($menu);
?>
 

а как вывести это все используя смарти?
Я имею в виду в таком виде.


<ul>
<li><a href="">Первый уровень</a>
    <ul>
        <li><a href="">Второй уровень</a></li>
          ......................................
            <ul>
                  <li><a href="">N-уровень</a></li>
            <ul>
    </ul>
</li>
</ul>