[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из Бд
foxig
Есть основное меню которое выводиться из Бд, еще есть дополнительно меню которое так же выводиться из Бд.
Нужно что бы у основного меню было свое доп меню:

 <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) Лена написал(а):
Вы не в ту степь зашли. Надо в базе к каждому элементу меню подцепить нужные элементы подменю. У вас этого нет.
Структура таблицы должна быть такой, как ниже, я добавила в таблицу строки, чтобы было понятно:

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 прочитал интересно сделать будет, спасибо Лена

Спустя 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 написал(а):
может кто нибудь подсказать либо направить где почитать ???
Быстрый ответ:

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