Выкладываю скрипт для обработки многоуровневого меню.
Если Вы захотели сделать меню на сайте с неограниченным вложением пунктов меню, вы можете воспользоваться данным скриптом.
Требования: php, mySQL
/* ДАМП ТАБЛИЦЫ ДЛЯ МЕНЮ CREATE TABLE `tt_menu` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `alt_name` varchar(255) NOT NULL, `pos` tinyint(4) NOT NULL, `par` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; */ $dbpf = 'tt'; //префикс таблицы меню //функция предварительного вызова обработчика меню function sel_cat($par=0){ global $dbpf; $out = ''; if ($par==0) {$out = '
- Главная
- ';
$out .= sel_cat_r($par);
$out .= '
- '.stripslashes($rez['name']).''; $out .= sel_cat_r($rez['id']); $out .= ' '."\n"; $lev--; } return $out; } //ВЫЗОВ ФУНКЦИИ echo sel_cat(0); /* РЕЗУЛЬТАТ РАБОТЫ */
Для заполнения таблицы вам необходимо внести данные
`id` — номер автоматически (auto_increment)
`name` — имя меню
`alt_name` — альтернативное имя, для ЧПУ
`pos` — позиция (сортировка пунктов меню)
`par` — родитель
id name par
1 Главная 0
2 О нас 0
3 контакты 2
4 проезд 2
5 Продукция 0
6 авто 5
7 мото 5
получим меню
Главная
О нас
— контакты
— проезд
Продукция
— авто
— мото
Разобрался но получается всего два уровня может дето баг ?
Многоуровневое это ж
Главная
о нас
контакты
проезд итп…..
с этим скриплом получается
Главная
о нас
контакты
проезд
в пред коменте не получилось того что я набырал потому что были удалены пробелы
хотелось бы знать можно зделать меню в виде дерева ? весь нет облазил ничего не нашел .
Для многоуровневого меню:
id____name____par
1____Главная___0
2____О нас_____0
3____контакты__2
4____проезд____2
5____Продукция_0
6____авто______5
7____мото_____5
8____honda____6
9____opel______6
получим меню
Главная
О нас
____контакты
____проезд
Продукция
____авто
_______honda — это третий уровень
_______opel
____мото
Уведомление: WD-1
Не слишком ли много будет запросов БД ??
а может стоит одним запросом выбрать все категории в массив (или два массива), и уже продолжить работу с массивами?
так кол-во запросов уменьшается до 1)))))
Ужас, столько запросов к базе на одной страничке.
Пример явно не юзабелин для рабочих проектов.
Такой способ только нагружает сайт. Создавать многоуровневое меню можно и на CSS. Так намного проще и сайт будет бистрее работать.
samsim, Причем тут CSS
В статье речь идет о хранении в БД меню и извлечении из БД.