|
|
|
| Подскажите, пожалуйста, как заставить оставаться на месте
пункты второго уровня, когда я на них кликаю? См. рисунок.
<?
$query = "SELECT * FROM menu WHERE id_parent_page = 0 ORDER BY id_page ASC";
$result = mysql_query($query);
echo "<ul>";
while ( $print = mysql_fetch_array($result))
{
//Выбираем сраницу с id_page,
//выводим ее ссылку
$ide = $print['id_page'];
echo "<li>";
echo "<a href=?id_page=".$ide.">".$print['name']."</a>";
if ($ide == $_GET['id_page'])
{
$query2 = "SELECT * FROM menu WHERE id_parent_page = ".$ide." ORDER BY id_page ASC";
$result2 = mysql_query($query2);
while ( $print2 = mysql_fetch_array($result2))
{
$ide2 = $print2['id_page'];
echo "<p><a href=?id_page=".$ide2.">".$print2['name']."</a></p>";
}
}
}
echo "</ul>";
?>
|
CREATE TABLE `menu` (
`id_page` int(11) NOT NULL auto_increment,
`name` tinytext NOT NULL,
`content` text NOT NULL,
`id_parent_page` int(11) NOT NULL default '0',
PRIMARY KEY (`id_page`)
) TYPE=MyISAM AUTO_INCREMENT=17 ;
#
# Дамп данных таблицы `menu`
#
INSERT INTO `menu` VALUES (1, 'Продукция', 'Тут продукция', 0);
INSERT INTO `menu` VALUES (2, 'ОПН', 'Тут про ОПН', 1);
INSERT INTO `menu` VALUES (3, 'Изоляторы', 'Тут про изолятоы', 1);
INSERT INTO `menu` VALUES (6, 'О компании', 'Про компанию', 0);
INSERT INTO `menu` VALUES (4, 'Производство', '', 0);
INSERT INTO `menu` VALUES (5, 'Стекло', '', 4);
INSERT INTO `menu` VALUES (7, 'Резина', '', 4);
|
| |
|
|
|
|
|
|
|
для: Boris
(06.02.2007 в 08:06)
| | Введите ещё один GET-параметр id_subpage
<?php
$query = "SELECT * FROM menu WHERE id_parent_page = 0 ORDER BY id_page ASC";
$result = mysql_query($query);
echo "<ul>";
while ( $print = mysql_fetch_array($result))
{
//Выбираем сраницу с id_page,
//выводим ее ссылку
$ide = $print['id_page'];
echo "<li>";
echo "<a href=?id_page=".$ide.">".$print['name']."</a>";
if ($ide == $_GET['id_page'])
{
$query2 = "SELECT * FROM menu WHERE id_parent_page = ".$ide." ORDER BY id_page ASC";
$result2 = mysql_query($query2);
while ( $print2 = mysql_fetch_array($result2))
{
$ide2 = $print2['id_page'];
echo "<p><a href=?id_page=".$ide."&id_subpage=".ide2.">".$print2['name']."</a></p>";
}
}
}
echo "</ul>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.02.2007 в 12:21)
| | Ого! :О Работает, а то я тут написал функцию вспоминания родителей и добавил еще два обращения к БД :*)
Ваш метод гораздо лучше! Спасибо.
Поясните, пожалуйста, как это получается? Никак не пойму.
Вроде адресуется на id_page - родителя. Каким образом помогает id_subpage? Это особенность запросов MySQL?
Да, и вопрос, который меня волнует в перспективе:
Можно ли этот код изменить, чтобы воложенность была неограниченная?
Поди рекурсивное что-то городить надо? | |
|
|
|
|
|
|
|
для: Boris
(06.02.2007 в 12:41)
| | Да нет, просто id_subpage позволяет не перезатирать id_page - понадобится вам вложнный каталог - возьмёте id_subpage, понадобится внешинй - возмёте id_page. | |
|
|
|