Многоуровневое меню 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>