igortik
Новичок
Еще раз про динамическое меню
Использую для выводв меню функцию:
Как видно из примера, то ссылка формируется исключительно из `page` и я никаких параметров не дописываю в URL, чтобы через GET скрипт мог разобрать что отправить функции и отправлять ли вообще.
Что есть сейчас:
Меню выводится вида:
Пункт 1
- подпункт 1
- подпункт 2
Пункт 2
- подпункт 1
и т.д.
по нажатию на ссылку меню открывается страница и меню выводится целиком, это верно все.
Теперь задача:
Выводить нужно также, как описано выше с отличием в том, что все подпункты должны быть скрыты.
Хорошо, это можно достичь, урезав содержимое в цикле while (убрать все, что после else)
Первый шаг завершен (хотя меню можно было вывести обычным циклом)
А вот тперь то, что как раз и вызвало трудности:
Я хочу, чтобы по нажатию ссылки основной рубрики меню (Пункт1, Пункт2 и т.д.) страница перегружалась и открывала то же сокращенное меню, только уже с отображением подразделов.
Например, есть меню:
Пункт 1
Пункт 2
Пункт 3
Нажали на Пункт 1 и получили:
Пункт 1
- подпункт 1
- подпункт 2
Пункт 2
Пункт 3
P.S. Я не хочу что-то добавлять в url из личных соображений, т.к. там перед формированием ссылки перед .html прописывается латинницей название раздела и лишние цифры не нужны.
Прошу подать идею реализации, т.к. я такого начал мудрить, что аж страшно стало (добавил еще 2 цикла внутрь, начал собирать отдельно массив данных, делал подсчеты кол-ва позиций в базе по каждому пункту) и в итоге запутался еще больше.
Использую для выводв меню функцию:
PHP:
function menu($parent_id, $cnt)
{
$sql=mysql_query("SELECT `id`,`parent_id`,`hidden`,`name`,`page` FROM `content` WHERE parent_id = ".$parent_id." AND `hidden`='0' ORDER by `pos`");
while($mas=mysql_fetch_array($sql))
{
// parent_id = 0 означает, что это основной заглавнй раздел и выводим мы его иначе, чем другие разделы
if($mas[1] == '0')
{
printf("<tr><td class=\"main_page\"><a href=\"%s.htm\" class=\"main_page\">%s</a></td></tr>",$mas[4],$mas[3]);
}
else
//выводим подраздел, если имеется
{
printf("<tr><td class=\"page\"> <a href=\"%s.htm\" class=\"page\">%s</a></td></tr>",$mas[4],$mas[3]);
}
//вызываем саму себя
menu($mas[0], $cnt+=1);
$cnt-=1;
}
}
Что есть сейчас:
Меню выводится вида:
Пункт 1
- подпункт 1
- подпункт 2
Пункт 2
- подпункт 1
и т.д.
по нажатию на ссылку меню открывается страница и меню выводится целиком, это верно все.
Теперь задача:
Выводить нужно также, как описано выше с отличием в том, что все подпункты должны быть скрыты.
Хорошо, это можно достичь, урезав содержимое в цикле while (убрать все, что после else)
PHP:
function menu($parent_id, $cnt)
{
$sql=mysql_query("SELECT `id`,`parent_id`,`hidden`,`name`,`page` FROM `content` WHERE parent_id = ".$parent_id." AND `hidden`='0' ORDER by `pos`");
while($mas=mysql_fetch_array($sql))
{
// parent_id = 0 означает, что это основной заглавнй раздел и выводим мы его иначе, чем другие разделы
if($mas[1] == '0')
{
printf("<tr><td class=\"main_page\"><a href=\"%s.htm\" class=\"main_page\">%s</a></td></tr>",$mas[4],$mas[3]);
}
else
//подразделы не выводим
}
//вызываем саму себя
menu($mas[0], $cnt+=1);
$cnt-=1;
}
А вот тперь то, что как раз и вызвало трудности:
Я хочу, чтобы по нажатию ссылки основной рубрики меню (Пункт1, Пункт2 и т.д.) страница перегружалась и открывала то же сокращенное меню, только уже с отображением подразделов.
Например, есть меню:
Пункт 1
Пункт 2
Пункт 3
Нажали на Пункт 1 и получили:
Пункт 1
- подпункт 1
- подпункт 2
Пункт 2
Пункт 3
P.S. Я не хочу что-то добавлять в url из личных соображений, т.к. там перед формированием ссылки перед .html прописывается латинницей название раздела и лишние цифры не нужны.
Прошу подать идею реализации, т.к. я такого начал мудрить, что аж страшно стало (добавил еще 2 цикла внутрь, начал собирать отдельно массив данных, делал подсчеты кол-ва позиций в базе по каждому пункту) и в итоге запутался еще больше.