Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вертикальное меню из двух уровней
 
 автор: Boris   (06.02.2007 в 08:06)   письмо автору
 
 

Подскажите, пожалуйста, как заставить оставаться на месте
пункты второго уровня, когда я на них кликаю? См. рисунок.

<? 
    $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);

   
 
 автор: cheops   (06.02.2007 в 12:21)   письмо автору
 
   для: 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>";  
?>

   
 
 автор: Boris   (06.02.2007 в 12:41)   письмо автору
 
   для: cheops   (06.02.2007 в 12:21)
 

Ого! :О Работает, а то я тут написал функцию вспоминания родителей и добавил еще два обращения к БД :*)

Ваш метод гораздо лучше! Спасибо.

Поясните, пожалуйста, как это получается? Никак не пойму.
Вроде адресуется на id_page - родителя. Каким образом помогает id_subpage? Это особенность запросов MySQL?

Да, и вопрос, который меня волнует в перспективе:
Можно ли этот код изменить, чтобы воложенность была неограниченная?
Поди рекурсивное что-то городить надо?

   
 
 автор: cheops   (07.02.2007 в 01:46)   письмо автору
 
   для: Boris   (06.02.2007 в 12:41)
 

Да нет, просто id_subpage позволяет не перезатирать id_page - понадобится вам вложнный каталог - возьмёте id_subpage, понадобится внешинй - возмёте id_page.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования