Имеем 1 таблицу, в ней описание всех услуг. Некоторые услуги имеют дочерние услуги, что регулируется колонкой parent_id
В сети нашлось решение, построился массив - красивый. А дальше ступор. Я противник перемешивания html и php, а также многократного echo, вот и пытаюсь сделать красиво. Но как из правильного массива сделать правильное меню типа?:
CODE ( html):
скопировать код в буфер обмена
<ul><li>Услуга 1</li> <li>Услуга 2 <ul><li>Услуга дочерняя 1 у 2</li> <li>Услуга дочерняя 2 у 2</li></ul> </li> </ul>
PHP:
скопировать код в буфер обмена
$sql_result = mysql_query("SELECT `article_id`, `article-name`, `article-link`, `parent_id` FROM `vip-article` ORDER BY `parent_id`, `article_id`"); // Делаем выборку всех записей из таблицы с меню if($row['parent_id'] == 0) { $menu[] = $row; $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 ]; } }
До этого момента все отлично.
Затем получается вывести подменю уже после всех меню:
PHP:
скопировать код в буфер обмена
$menuleft = "<ul class='leftmenu'>"; 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>";
И таблица базы для наглядности:
CODE ( SQL):
скопировать код в буфер обмена
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`) )
|