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

Форум MySQL

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

 

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

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

тема: Меню вида: Главное > Раздел > Подраздел и т.д.
 
 автор: Shadow69   (14.08.2007 в 11:07)   письмо автору
 
 

Объясню проше.
Есть таблица catalog с полями id, name (название раздела/подраздела), id_parent.

Выводится таблица с помощью нижеприведенного кода:
<A href=index.php?section=1>Недвижимость</A>

Далее, если кликаем по ссылке, "движок" выводит подразделы "Недвижимости" (в соответствии с id_parent). Например,
<A href=index.php?section=2>Сдача/Наём</A>
<A href=index.php?section=3>Продажа</A> и т.д.

Вывести "адресную навигацию" в следующем виде: Главная > Недвижимость; Главная > <Сдача/Наём; Главная > Продажа - просто. Так как выводится всё из одной таблицы.

А вот как сделать чтобы при переходе в подраздел (например, Сдача/Наём. Кликаем Сдача/Наём) сохранялась ссылка на "родительский" раздел: Главная > Недвижимость > Сдача/Наём


<?php
  
// Устанавлинваем соединение с базой данных
  
require_once("config.php");

  
// Если значение параметра secid не установлено, следовательно, выбран самый верхний уровень меню
  
if(!isset($_GET['secid'])) $_GET['secid'] = 0;
  
// Если имеет дело не с корневым каталогом, то выводим ссылку на уровень выше и
  // воспроизводим вышележащее меню
  
if($_GET['secid'] != 0)
  {
    
// Воспроизводим меню древовидного меню
    
$query "SELECT * FROM catalog
              WHERE hide='show' AND id_catalog="
.$_GET['section']."";
    
$ctgc mysql_query($query);
    if(!
$ctgcputerror("Ошибка при обращении к древовидному меню");
    
// Выводим список каталогов
    
while($catc mysql_fetch_array($ctgc))
    {
      
// Выводим ссылку для возврата в предыдущее меню
      
echo "<A href=$_SERVER[PHP_SELF]?section=".$_GET['id_catalog'].">Главная</A> > ".$catc['name']."<BR><BR>";
    }
    
// Воспроизводим меню верхнего уровня
    
$query "SELECT * FROM catalog
              WHERE hide='show' AND id_parent="
.$_GET['section']."";
    
$prev mysql_query($query);
    if(!
$prevputerror("Ошибка при обращении к каталогу");
    
// Выводим список каталогов
    
while($pmenu mysql_fetch_array($prev))
    {
      echo 
"<A href=$_SERVER[PHP_SELF]?section=".$pmenu['id_catalog'].">".$pmenu['name']."</A><BR>";
    }
  }    
  
// Если вышележащий каталог совпадает с текущим, и у него имеются подкаталоги, то выводим их:
  
elseif($_GET['section'] == $pmenu['id_parent'])
  {
    
// Формируем и осуществляем SQL-запрос, извлекающий подкаталоги текущего кателога
    
$query "SELECT * FROM catalog
              WHERE hide='show' AND id_parent="
.$_GET['section']."
              ORDER BY pos"
;
    
$ctg mysql_query($query);
    if (!
$ctgputerror("Ошибка при обращении к каталогу");
    
// Если SQL-запрос вернул хотя бы одну запись, выводим подкаталоги.
    
if(mysql_num_rows($ctg)>0)
    {
      while(
$cat mysql_fetch_array($ctg))
      {
        
// Выводим список каталогов
        
echo "<A href=$_SERVER[PHP_SELF]?section=".$_GET['id_catalog'].">".$cat['name']."</A><BR>";
      }
    }
  }
  
// Если это корневой каталог, просто выводим его подкаталоги
  
else
  {
    
// Выводим список подкаталогов
    
$query "SELECT * FROM catalog
              WHERE hide='show' AND id_parent = 0
              ORDER BY pos"
;
    
$ctg mysql_query($query);
    if (!
$ctgputerror("Ошибка при обращении к каталогу");
    while(
$cat mysql_fetch_array($ctg))
    {
      
// Выводим список подкаталогов корневого каталога
      
echo "<A href=$_SERVER[PHP_SELF]?section=".$cat['id_catalog'].">".$cat['name']."</A><BR>";
    }
  }
?> 


Заранее спасибо.

   
 
 автор: Shadow69   (15.08.2007 в 10:11)   письмо автору
 
   для: Shadow69   (14.08.2007 в 11:07)
 

Trianon, помоги. Ты же знаешь.

   
 
 автор: Trianon   (15.08.2007 в 20:08)   письмо автору
 
   для: Shadow69   (15.08.2007 в 10:11)
 

По-моему, надо просто вывести обратный (ну или прямой путь) к корню.
Уж коль скоро Вы знаете, что я знаю, могли бы и поискать соответствующий ответ в форуме. :)

   
 
 автор: Shadow69   (16.08.2007 в 13:54)   письмо автору
 
   для: Trianon   (15.08.2007 в 20:08)
 

Trianon, извини, не сообразил. :-)

Из этого топика узнал в кратце, суть "рекурсии". Не более.

"По-моему, надо просто вывести обратный (ну или прямой путь) к корню".
Вопрос как? Если не трудно, на каком-нибудь стандартном примере.

   
 
 автор: Trianon   (16.08.2007 в 14:32)   письмо автору
 
   для: Shadow69   (16.08.2007 в 13:54)
 

>Из этого топика узнал в кратце, суть "рекурсии". Не более.

Интересно, как Вам это удалось?
В этом топике не было никакой рекурсии.

>"По-моему, надо просто вывести обратный (ну или прямой путь) к корню".
>Вопрос как? Если не трудно, на каком-нибудь стандартном примере.

Зато в нем был вывод пути. На самом что ни на есть стандартном примере.

PS. Как обычно, если Вам нужно решение "под ключ", я готов рассмотреть Ваше предложение. приватом.

   
 
 автор: oradev   (16.08.2007 в 14:36)   письмо автору
 
   для: Trianon   (16.08.2007 в 14:32)
 

Который раз уже добиваюсь! Продемонстрируете вывод сбалансированного дерева кто-нибудь! Мне самому интересно что MySQL предлагает на этот счет.

   
 
 автор: Trianon   (16.08.2007 в 17:36)   письмо автору
 
   для: oradev   (16.08.2007 в 14:36)
 

Я готов подискутировть на этот предмет, но не в ближайшие дни.
Сейчас я готовлюсь к командировке, и нормально смогу появиться на форуме не раньше среды.

   
 
 автор: oradev   (16.08.2007 в 17:44)   письмо автору
 
   для: Trianon   (16.08.2007 в 17:36)
 


Ок, приятной командировки ( много не пить) :)

   
 
 автор: Shadow69   (16.08.2007 в 15:38)   письмо автору
 
   для: Trianon   (16.08.2007 в 14:32)
 

>>Из этого топика узнал в кратце, суть "рекурсии". Не более.
>
>Интересно, как Вам это удалось?
>В этом топике не было никакой рекурсии.

Не так выразился. Из вышеуказанного топика, я узнал о существовании "рекурсии". :-)

   
Rambler's Top100
вверх

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