Нужно что бы у основного меню было свое доп меню:
<div id="contaner">
<?php if ($totalRows_rsMainNav > 0) { ?>
<ul id="nav">
<?php do { ?>
<li id="selected"><a href="?p=<?php echo $row_rsMainNav['pg_id']; ?>" <?php getSelectFront($row_rsMainNav['pg_id']); ?>><?php echo $row_rsMainNav['pg_link']; ?></a></li>
<?php } while ($row_rsMainNav = mysql_fetch_assoc($rsMainNav));?>
</ul>
<?php } ?>
<?php if ($totalRows_rsSubMain > 0); { ?>
<ul id="nav">
<?php do { ?>
<li id="selected"><a href="?p=<?php echo $row_rsSubMain['pg_id']; ?>" <?php getSelectFront($row_rsSubMain['pg_id']); ?>><?php echo $row_rsSubMain['pg_link']; ?></a></li>
<?php } while ($row_rsSubMain = mysql_fetch_assoc($rsSubMain));?>
</ul>
<?php } ?>
не соображу как сделать что бы к каждому основному меню было свое доп.
вот sql:
mysql_select_db($database_conndb, $conndb);
$query_rsBottNav = "SELECT pg_id, pg_link FROM tbl_pages WHERE pg_nav = 3 ORDER BY pg_order ASC";
$rsBottNav = mysql_query($query_rsBottNav, $conndb) or die(mysql_error());
$row_rsBottNav = mysql_fetch_assoc($rsBottNav);
$totalRows_rsBottNav = mysql_num_rows($rsMainNav);
Спустя 3 часа, 48 минут, 42 секунды (30.04.2011 - 07:52) Игорь_Vasinsky написал(а):
Для начало покажи хоть структуру таблиц, а то по запросу оч трудно определить мне.
Спустя 5 часов, 24 минуты, 57 секунд (30.04.2011 - 13:17) foxig написал(а):
Есть 2 таблицы tbl_nav, tbl_pages, в 1 табличке находятся меню (то есть, верхнее средне нижние), а в pages уже сами странички
при таком раскладе выводиться где нужно доп.меню, но получиться много кода и самое главное что при выборе доп меню оно само пропадает:
--
-- Table structure for table `tbl_nav`
--
CREATE TABLE IF NOT EXISTS `tbl_nav` (
`nav_id` int(2) NOT NULL AUTO_INCREMENT,
`nav_name` varchar(15) NOT NULL,
PRIMARY KEY (`nav_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `tbl_nav`
--
INSERT INTO `tbl_nav` (`nav_id`, `nav_name`) VALUES
(2, 'Main'),
(3, 'Bottom'),
(1, 'Top'),
(4, 'SubMain');
--
-- Table structure for table `tbl_pages`
--
CREATE TABLE IF NOT EXISTS `tbl_pages` (
`pg_id` int(11) NOT NULL AUTO_INCREMENT,
`pg_link` varchar(150) DEFAULT '',
`pg_title` varchar(255) DEFAULT NULL,
`pg_cont` text,
`pg_nav` int(2) DEFAULT NULL,
`pg_order` tinyint(3) DEFAULT NULL,
PRIMARY KEY (`pg_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;
--
-- Dumping data for table `tbl_pages`
--
INSERT INTO `tbl_pages` (`pg_id`, `pg_link`, `pg_title`, `pg_cont`, `pg_nav`, `pg_order`) VALUES
(22, '1', 'ewqeqwe', 'qweqweqeq', 4, 1),
(21, 'ПОД', 'ПОД', 'asdadsadasdad', 2, 4),
при таком раскладе выводиться где нужно доп.меню, но получиться много кода и самое главное что при выборе доп меню оно само пропадает:
<?php if ($p == 1) { ($totalRows_rsSubMain > 0) ?>
<ul id="nav">
<?php do { ?>
<li id="selected"><a href="?p=<?php echo $row_rsSubMain['pg_id']; ?>" <?php getSelectFront($row_rsSubMain['pg_id']); ?>><?php echo $row_rsSubMain['pg_link']; ?></a></li>
<?php } while ($row_rsSubMain = mysql_fetch_assoc($rsSubMain));?>
</ul>
<?php } ?>
Спустя 9 часов, 27 минут, 26 секунд (30.04.2011 - 22:44) foxig написал(а):
вот если сделать с помощью switch то должно отлично работать
Спустя 50 минут, 50 секунд (30.04.2011 - 23:35) Лена написал(а):
Вы не в ту степь зашли. Надо в базе к каждому элементу меню подцепить нужные элементы подменю. У вас этого нет.
Структура таблицы должна быть такой, как ниже, я добавила в таблицу строки, чтобы было понятно:
я добавила поле `nav_pid` int(11) NOT NULL,
Оно показывает родителя для подпунктов меню.
Смотрите в таблицу. У Пункт1 если два подпункта - Подпункт1 и Подпункт2 - поэтому в поле nav_pid для этих подпунктов я ставлю 1 - это идентификатор(поле nav_id) Пункта1.
Скрипт, который выводит пункты и подпункты меню будет таким:
Скрипт не тестировала.
Можно сделать одним запросом, через JOIN таблиц, чтобы убрать из цикла запрос, который выводит подпункты, я не стала его приводить - вы сейчас запутаетесь и вообще ничего не поймете.
Структура таблицы должна быть такой, как ниже, я добавила в таблицу строки, чтобы было понятно:
CREATE TABLE `tbl_nav` (
`nav_id` int(11) NOT NULL auto_increment,
`nav_pid` int(11) NOT NULL,
`nav_name` varchar(15) NOT NULL,
PRIMARY KEY (`nav_id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
--
-- Дамп данных таблицы `tbl_nav`
--
INSERT INTO `tbl_nav` VALUES (1, 0, 'Пункт1');
INSERT INTO `tbl_nav` VALUES (2, 0, 'Пункт2');
INSERT INTO `tbl_nav` VALUES (8, 1, 'Подпункт1');
INSERT INTO `tbl_nav` VALUES (9, 1, 'Подпункт2');
INSERT INTO `tbl_nav` VALUES (10, 2, 'Подпункт3');
INSERT INTO `tbl_nav` VALUES (11, 2, 'Подпункт4');
я добавила поле `nav_pid` int(11) NOT NULL,
Оно показывает родителя для подпунктов меню.
Смотрите в таблицу. У Пункт1 если два подпункта - Подпункт1 и Подпункт2 - поэтому в поле nav_pid для этих подпунктов я ставлю 1 - это идентификатор(поле nav_id) Пункта1.
Скрипт, который выводит пункты и подпункты меню будет таким:
print '<div id="contaner">';
//вытягиваем основные элементы меню
$sql = "SELECT * FROM tbl_nav
WHERE nav_pid = 0
ORDER BY nav_id";
$res = mysql_query($sql);
if(!$res) exit(mysql_error());
//открываем основной список
print '<ul id="nav">';
while($row = mysql_fetch_assoc($res)){
//выводим элементы основного списка
print '<li id="selected"><a href="">' . $row['nav_id'] . '</a></li>';
//вытягиваем подменю к каждому меню
$sql1 = "SELECT * FROM tbl_nav WHERE nav_pid = " . (int)$row['nav_id'];
$res1 = mysql_query($sql1);
if(!$res1) exit(mysql_error());
//открываем список подменю
print '<ul id="nav">';
while($row1 = mysql_fetch_assoc($res1)){
//выводим элементы зависимого списка
print '<li id="selected"><a href="">' . $row1['nav_id'] . '</a></li>';
}
print ' </ul>';
}
print ' </ul>';
print '</div>';
Скрипт не тестировала.
Можно сделать одним запросом, через JOIN таблиц, чтобы убрать из цикла запрос, который выводит подпункты, я не стала его приводить - вы сейчас запутаетесь и вообще ничего не поймете.
Спустя 1 час, 25 минут, 49 секунд (1.05.2011 - 01:01) foxig написал(а):
Да отличный совет, только по скольку у меня в tbl_nav пункте "Main"
входят все кнопки основного меню, то теперь его надо будет всего лишь разбить, теперь будет не по расположению а по страницам...
Хорошое расширение меню, и как раз для админки сразу удобней можно добавлять новые страницы, как в основное так и в доп меню.
Про join прочитал интересно сделать будет, спасибо Лена
входят все кнопки основного меню, то теперь его надо будет всего лишь разбить, теперь будет не по расположению а по страницам...
Хорошое расширение меню, и как раз для админки сразу удобней можно добавлять новые страницы, как в основное так и в доп меню.
Про join прочитал интересно сделать будет, спасибо Лена
Спустя 20 часов, 22 минуты, 11 секунд (1.05.2011 - 21:23) foxig написал(а):
не не работает пробовал менял, не получилось, по мойму просто не доганяю... точно поттупливаю. логически...
вот мой запрос и вывод:
вот мой запрос и вывод:
mysql_select_db($database_conndb, $conndb);
$query_rsMainNav = "SELECT pg_id, pg_link FROM tbl_pages WHERE pg_nav = 2 ORDER BY pg_order ASC LIMIT 5";
$rsMainNav = mysql_query($query_rsMainNav, $conndb) or die(mysql_error());
$row_rsMainNav = mysql_fetch_assoc($rsMainNav);
$totalRows_rsMainNav = mysql_num_rows($rsMainNav);
mysql_select_db($database_conndb, $conndb);
$query_rsSubMain = "SELECT pg_id, pg_link FROM tbl_pages WHERE pg_nav = 4 ORDER BY pg_order ASC";
$rsSubMain = mysql_query($query_rsSubMain, $conndb) or die(mysql_error());
$row_rsSubMain = mysql_fetch_assoc($rsSubMain);
$totalRows_rsSubMain = mysql_num_rows($rsSubMain);
mysql_select_db($database_conndb, $conndb);
$query_rsContent = "SELECT * FROM tbl_pages WHERE pg_id = $p";
$rsContent = mysql_query($query_rsContent, $conndb) or die(mysql_error());
$row_rsContent = mysql_fetch_assoc($rsContent);
$totalRows_rsContent = mysql_num_rows($rsContent);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Content Management System</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta http-equiv="imagetoolbar" content="no" />
<link href="style/general2.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="hd"></div>
<div id="contaner">
<?php if ($totalRows_rsMainNav > 0) { ?>
<ul id="nav">
<?php do { ?>
<li id="selected"><a href="?p=<?php echo $row_rsMainNav['pg_id']; ?>" <?php getSelectFront($row_rsMainNav['pg_id']); ?>><?php echo $row_rsMainNav['pg_link']; ?></a></li>
<?php } while ($row_rsMainNav = mysql_fetch_assoc($rsMainNav));?>
</ul>
<?php } ?>
<?php if ($totalRows_rsSubMain > 0) { ?>
<ul id="nav">
<?php do { ?>
<li id="selected"><a href="?p=<?php echo $row_rsSubMain['nav_id']; ?>" <?php getSelectFront($row_rsSubMain['nav_id']); ?>><?php echo $row_rsSubMain['nav_id']; ?></a></li>
<?php } while ($row_rsSubMain = mysql_fetch_assoc($rsSubMain));?>
</ul>
<?php } ?>
</div>
<div>
Спустя 1 час, 6 минут (1.05.2011 - 22:29) foxig написал(а):
может кто нибудь подсказать либо направить где почитать ???