Форумы портала PHP.SU » » Работа с СУБД » Вывод данных из Бд

Страниц (1): [1]
 

1. foxig - 04 Мая, 2011 - 17:01:58 - перейти к сообщению
Здравствуйте! Извините за повтор!!!!!!!!!!
Пишу меню у которого должен быть родитель и подпункт меню, в итоге:

PHP:
скопировать код в буфер обмена
  1.  
  2.     <?PHP
  3.     print '<div id="contaner">';
  4.     //вытягиваем основные элементы меню
  5.     $sql = "SELECT * FROM tbl_pages
  6.    WHERE pg_pid = 0
  7.    ORDER BY pg_id";
  8.     $res = mysql_query($sql);
  9.     if(!$res) exit(mysql_error());
  10.     //открываем основной список
  11.     print '<ul id="nav">';
  12.     while($row = mysql_fetch_assoc($res)){
  13.     //выводим элементы основного списка
  14.                 print '<li id="selected"><a href="?p='. $row['pg_id'].'">' . $row['pg_link'] . '</a>';
  15.      
  16.        
  17.         //вытягиваем подменю к каждому меню
  18.         $sql1 = "SELECT * FROM tbl_pages WHERE pg_pid = " . (int)$row['pg_id'];
  19.         $res1 = mysql_query($sql1);
  20.         if(!$res1) exit(mysql_error());
  21.         //открываем список подменю
  22.         print '<ul id="nav1">';
  23.         while($row1 = mysql_fetch_assoc($res1)){
  24.         //выводим элементы зависимого списка
  25.            print '<li id="selected"><a href="?p='.$row1['pg_id'].'">'.$row1['pg_link'].'</a></li>';    
  26.         }
  27.         print ' </ul></li>';
  28.     }
  29.     print ' </ul>';
  30.     print '</div>';
  31.     ?>
  32.      
  33.  


CODE (SQL):
скопировать код в буфер обмена
  1.   CREATE TABLE `tbl_pages` (
  2.       `pg_id` int(11) NOT NULL AUTO_INCREMENT,
  3.       `pg_link` varchar(150) NOT NULL,
  4.       `pg_title` varchar(255) NOT NULL,
  5.       `pg_cont` text, NOT NULL,
  6.       `pg_nav` int(2), NOT NULL,
  7.       `pg_order` tinyint(2), NOT NULL,
  8.       `pg_pid` int(11), NOT NULL,
  9.       PRIMARY KEY  (`nav_id`)
  10.     ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
  11.      
  12.     --
  13.     -- Дамп данных таблицы `tbl_nav`
  14.     --
  15.      
  16.     INSERT INTO `tbl_pages` VALUES (1, 0, 'Пункт1');
  17.     INSERT INTO `tbl_pages` VALUES (2, 0, 'Пункт2');
  18.     INSERT INTO `tbl_pages` VALUES (8, 1, 'Подпункт1');
  19.     INSERT INTO `tbl_pages` VALUES (9, 1, 'Подпункт2');
  20.     INSERT INTO `tbl_pages` VALUES (10, 2, 'Подпункт3');
  21.     INSERT INTO `tbl_pages` VALUES (11, 2, 'Подпункт4');
  22.      




я добавил поле `nav_pid` int(11) NOT NULL,
Оно показывает родителя для подпунктов меню.
Смотрите в таблицу. У Пункт1 если два подпункта - Подпункт1 и Подпункт2 - поэтому в поле nav_pid для этих подпунктов я ставлю 1 - это идентификатор(поле nav_id) Пункта1.

Подпункты выводятся, но не у своего родителя а у всех. и со стилями проблема.
Возможно надо изменить с id на class.
Подскажите как можно проще вывести правильно данные. неважна нагрузка защита и тп тп ..
(Добавление)
Возможно это ошибка стилей????


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     #contaner {                  // блок в котором выводиться меню
  3.            width:800px;
  4.         margin:0px auto;
  5.             margin-top:10px;
  6.     }
  7.     ul, li {
  8.         margin:0;
  9.         padding:0;
  10.     }
  11.     #blob {                       // эффект для меню
  12.       background:#0b2b61;
  13.       border-right: 1px solid #0059ec;
  14.       border-left: 1px solid #0059ec;
  15.       position: absolute;
  16.         z-index: 1;
  17.         top: 0;
  18.         background: -moz-linear-gradient(top,  #F89323, #FC0);
  19.       background: -webkit-gradient(linear, left top, left bottom, from(#0b2b61), to(#1153c0));
  20.       -moz-border-radius: 4px;
  21.         -webkit-border-radius: 4px;
  22.         -moz-box-shadow: 3px 3px 15px #011331;
  23.       -webkit-box-shadow: 3px 3px 15px #011331;
  24.    }
  25.     #nav {        // основное меню т.е. родитель
  26.       position: relative;
  27.             background:;
  28.         float: left;
  29.     }
  30.     #nav li {
  31.       float: left;
  32.         list-style: none;
  33.         border-right: 1px solid #4a4a4a;
  34.       border-left: 1px solid black;
  35.     }
  36.     #nav li a {
  37.       color: #000;/*шрифт*/
  38.       z-index: 2;
  39.         position: relative;
  40.         cursor: pointer;
  41.         float: left;
  42.         font-size: 15px;
  43.         font-family: Arial, Helvetica, sans-serif;
  44.         text-decoration: none;
  45.         padding: 10px 40px;
  46.     }
  47.     #nav1  {     // под.меню
  48.       position: relative;
  49.             background:;
  50.         float:right;
  51.     }
  52.     #nav1 li  {
  53.       float: right;
  54.         list-style: none;
  55.         border-right: 1px solid #4a4a4a;
  56.       border-left: 1px solid black;
  57.     }
  58.     #nav1 li a {
  59.       color: #000;/*шрифт*/
  60.       z-index: 0;
  61.         position: relative;
  62.         cursor: pointer;
  63.         float: right;
  64.         font-size: 15px;
  65.         font-family: Arial, Helvetica, sans-serif;
  66.         text-decoration: none;
  67.         padding: 10px 40px;
  68.     }
  69.  


Подскажите пожалуйста в чем у меня загвоздка? либо это вывод из БД либо стили?
2. vlom - 04 Мая, 2011 - 18:39:43 - перейти к сообщению
советую тебе разбит на две таблицы основная разделы и вторая категории
3. Мелкий - 04 Мая, 2011 - 19:19:00 - перейти к сообщению
vlom пишет:
советую тебе разбит на две таблицы основная разделы и вторая категории

Совет из разряда плохих.

foxig пишет:
либо это вывод из БД либо стили?

phpfaq.ru/debug
Цитата:
7. И САМОЕ ВАЖНОЕ: запуская скрипт, смотрите не то, что показывает браузер, а ИСХОДНЫЙ HTML код!.
4. vlom - 04 Мая, 2011 - 19:29:45 - перейти к сообщению
Мелкий пишет:
Совет из разряда плохих.

почему???
5. foxig - 04 Мая, 2011 - 19:41:02 - перейти к сообщению
Ну по поводу разбить, пробовал, есть еще вторая табличка с tbl_nav где есть пункты основного меню main top bottom,
Top вернее меню
Main среднее
bottom - нижнее,

Было так, но в итоге у меня получается аналогично. в итоге не получается вывести древо
________________________________ ________________________________ ________
Мелкий пишет:
Мелкий

В том то и дело что ошибок никаких нет, и по крайней мере не было, в вот выстроить как это должно быть не могу. У меня получается что у Основного меню:
(состоящего из Пункт1 Пункт2 Пункт3) должен выводиться свой подпункт т.е Подпункт1 к Пункту1 и т.д.
Структура такая:

Пункт1 Пунтк2 Пункт3
подпункт1 подпункт1 подпункт1

или
Пункт1 Пунтк2 Пункт3
подпункт2 подпункт2 подпункт2

или
Пункт1 Пунтк2 Пункт3
подпункт3 подпункт3 подпункт3

А у меня подпункт1 выводится у всех Пунктов1, 2, 3.
Не понимаю что мне нужно указать что бы у кнопки основного меню выводилось свое подменю.
Только начал заниматься "зрз" и вроде интересно, классно, но в такие моменты начинает раздражать и хочется уйти от компа но проблема останется.
Покажите хоть где об этом можно прочитать либо аналогичные меню,

 

Powered by ExBB FM 1.0 RC1