[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите построить многоуровневое меню
varanika
Имеем 1 таблицу, в ней описание всех услуг. Некоторые услуги имеют дочерние услуги, что регулируется колонкой parent_id
В сети нашлось решение, построился массив - красивый. А дальше ступор. Как из красивого массива сделать красивое меню типа:

<ul><li>Услуга 1</li>
<li>
Услуга 2
<ul><li>Услуга дочерняя 1 у 2</li>
<li>
Услуга дочерняя 2 у 2</li></ul>
</li>
</ul>





$sql_result = mysql_query("SELECT `article_id`, `article-name`, `article-link`, `parent_id` FROM `vip-article` ORDER BY `parent_id`, `article_id`"); // Делаем выборку всех записей из таблицы с меню

$menu = array();
$menu_index = array();
while($row = mysql_fetch_assoc($sql_result)){
if($row['parent_id'] == 0) {
$menu[] = $row;
$menu[sizeof($menu)-1]['child'] = array();
$menu_index[$row['article_id']] = &$menu[sizeof($menu)-1];
} else {
$menu_index[$row['parent_id']]['child'][] = $row;
$menu_index[$row['article_id']] = &$menu_index[$row['parent_id']]['child'][sizeof($menu_index[$row['parent_id']]['child'])-1];
}
}



До этого момента все отлично.
Затем получается вывести подменю уже после всех меню:


$menuleft = "<ul class='leftmenu'>";
while($row = mysql_fetch_assoc($sql_result)){
if($row['parent_id'] == 0) {
$menuleft .= "<li><a href='".$row['article-link']."'>".$row['article-name']."</a></li>";
}
else {
$menuleft .= "<ul>";
$menuleft .= "<li><a href='".$row['article-link']."'>".$row['article-name']."</a></li>";
$menuleft .= "</ul>";
}
}

$menuleft .= "</ul>";



И таблица, для наглядности:

CREATE TABLE IF NOT EXISTS `vip-article` (
`article_id` int(11) NOT NULL AUTO_INCREMENT,
`article-name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`article-link` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`article-discription` text COLLATE utf8_unicode_ci NOT NULL,
`article-title` varchar(350) COLLATE utf8_unicode_ci NOT NULL,
`article-key` varchar(350) COLLATE utf8_unicode_ci NOT NULL,
`parent_id` int(11) NOT NULL,
`article-text` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`article_id`),
KEY `article-id` (`article_id`)
)

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.