[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выпадающее меню
freed-master
Eсть выпадающее меню с такой вот структурой:

<ul id="nav">
<li><a
href="">btn_1</a></li>
<li><a
href="">btn_2</a>
<ul>
<li><a
href="">btn_21</a></li>
<li><a
href="">btn_22</a></li>
<li><a
href="">btn_23</a></li>
</ul>
</li>
<li><a
href="">btn_3</a></li>
<li><a
href="">btn_4</a></li>
</ul>


Есть таблица бд:

id | page | name
1 | 0 | btn_1
2 | 1 | btn_2
2 | 1 | btn_21
2 | 2 | btn_22
3 | 0 | btn_3
4 | 0 | btn_4</span>

Никак не разбирусь с запросом:

$get_id = isset($_GET['id'])?(int)$_GET['id']:1;
$get_page = isset($_GET['page'])?(int)$_GET['page']:1;
$q_menu = mysql_query("SELECT `id`, `page`, `name` FROM `menu`");

while ($r_menu = mysql_fetch_assoc($q_menu))
{
if ($r_menu['page'] == 0)
{
$menu .= '<li><a href="?id='.$r_menu['id'].'">'.$r_menu['name'].'</a></li>';
}
else
{
$q_page = mysql_query("SELECT `id`, `page`, `name` FROM `menu` WHERE `id`='".$r_menu['id']."'");
while ($r_page = mysql_fetch_assoc($q_page))
{
$page .= '<li><a href="?id='.$r_page['id'].'&page='.$r_page['page'].'">'.$r_page['name'].'</a></li>';
}
$menu .= '<li><a href="?id='.$r_menu['id'].'">'.$r_menu['name'].'</a><ul>'.$page.'</ul></li>';
}
}


Но получается какая то хрень.
Направте на путь истенный...



Спустя 13 минут, 19 секунд (23.12.2009 - 00:31) VolCh написал(а):

Спустя 14 минут, 2 секунды (23.12.2009 - 00:45) freed-master написал(а):
не, такой вариант не подходит, это вообще другое...
у меня именно выпадающее меню, и в зависимости от того есть ли в разделе подпункты, формируется ссылка:

<ul id="nav">
<li><a
href="">btn_1</a></li>
<li><a
href="">btn_2</a>
<ul>
<li><a
href="">btn_21</a></li>
<li><a
href="">btn_22</a></li>
<li><a
href="">btn_23</a></li>
</ul>
</li>
<li><a
href="">btn_3</a></li>
<li><a
href="">btn_4</a></li>
</ul>


Спустя 1 минута, 42 секунды (23.12.2009 - 00:46) freed-master написал(а):
Обратите внимание как и где закрывается </li> у btn_1 и у btn_2

Спустя 1 час, 24 минуты, 1 секунда (23.12.2009 - 02:10) qpayct написал(а):
Я не вдуплил тока зачем открывать бд в цикле открытия бд... И чего вообще ты пытаешься добится. Подробней изложи.

Спустя 24 минуты, 48 секунд (23.12.2009 - 02:35) VolCh написал(а):
Кажется понял, что ты хочешь -
Если в базе page = 0, то тупо делаем ссылку, если page>0, то делаем вложенный <ul> со всеми ссылками с этим id и page, но перед ним вставляем ссылку с id, но без page, так?

Но чем вообще в базе у тебя btn2 и btn21 отличаются, и где btn23?

Спустя 6 часов, 54 минуты, 53 секунды (23.12.2009 - 09:30) freed-master написал(а):
Да, именно это я и хотел!
здесь я просто показал схему... идею....
запутался именно в запросах...

Спустя 22 минуты, 49 секунд (23.12.2009 - 09:53) freed-master написал(а):
Все, разобрался! Если кому интересно
БД:

id | page | name
1 | x | btn_1
2 | y | btn_2
2 | 1 | btn_21
2 | 2 | btn_22
2 | 3 | btn_23
3 | x | btn_3
4 | x | btn_4

Запросы:

$get_id = isset($_GET['id'])?(int)$_GET['id']:1;
$get_page = isset($_GET['page'])?(int)$_GET['page']:1;
$q_menu = mysql_query("SELECT `id`, `page`, `name` FROM `menu`");
while ($r_menu = mysql_fetch_assoc($q_menu))
{
if ($r_menu['page'] == 'x')
{
$menu .= '<li><a href="?id='.$r_menu['id'].'">'.$r_menu['name'].'</a></li>';
}
elseif ($r_menu['page'] == 'y')
{
$q_page = mysql_query("SELECT `id`, `page`, `name` FROM `menu` WHERE `id`='".$r_menu['id']."' AND `page`!='y'");
while ($r_page = mysql_fetch_assoc($q_page))
{
$page .= '<li><a href="?id='.$r_page['id'].'&page='.$r_page['page'].'">'.$r_page['name'].'</a></li>';
}
$menu .= '<li><a href="?id='.$r_menu['id'].'">'.$r_menu['name'].'</a><ul>'.$page.'</ul></li>';
}
}


Спустя 32 минуты, 11 секунд (23.12.2009 - 10:25) VolCh написал(а):
С такой БД можно реализовать и одним запросом, без вложенных циклов

Спустя 1 минута, 57 секунд (23.12.2009 - 10:27) freed-master написал(а):
А можно подробнее?

Спустя 16 минут, 41 секунда (23.12.2009 - 10:44) freed-master написал(а):
тфу блин, точно! спасибо!

Спустя 2 часа, 46 минут, 55 секунд (23.12.2009 - 13:31) Xpund написал(а):
<ul id="nav">
<li><a href="">btn_1</a></li>
<li><a href="">btn_2</a></li>
<ul>
<li><a href="">btn_21</a></li>
<li><a href="">btn_22</a></li>
<li><a href="">btn_23</a></li>
</ul>
<ul>
<li><a href="">btn_3</a></li>
<li><a href="">btn_4</a></li>
</ul>

Так попробуй!!


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

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