Автор Тема: Вывод цепочки навигации  (Прочитано 3713 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Вывод цепочки навигации
« : 30 Мая 2003, 20:01:09 »
Надо сделать цепочку навигации по каталогу с неограниченой вложеностью
Структура базы (MySQL)
Cat_id      cat_name   cat_parent_id

Пытаюсь сделать это через рекурсию

Function cat_pass($category_id)
{
   if ($category_id)
   {      
      $sql="select * FROM catalog WHERE cat_id=$category_id";
      $result = mysql_query ($sql);
         while ($row = mysql_fetch_array($result))
            {
               $category_id = $row [cat_parent_id];
               $cat_name = $row [cat_name];
               echo "$cat_name ";
               return cat_pass($category_id);         
            };
   };
}

Результат выдает типа: Notebooks -> Computers ->
А надо Computers -> Notebooks

Подскажите как правильно? И вообще может быть есть другой способ кроме рекурсии а то каждый раз базу гонять.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Вывод цепочки навигации
« Ответ #1 : 30 Мая 2003, 21:03:26 »
Какие ужасы Вы пишете.. брр..


/* примерно так */

follow_cat(@$_GET[\'cat\']);

function follow_cat($cat){
$link = "";
$cat_id = $cat;
while ($cat_id != 0){
	
$res = mysql_query("SELECT cat_parent_id, cat_name FROM catalog WHERE cat_id=$cat_id");
	
$fetch = mysql_fetch_array($res);
	
$name = $fetch[\'cat_name\'];
	
	
if ($cat_id == $cat){
	
	
	
$link = "<b><a href=\\"/?cat=$cat_id\\">$name</a></b>".$link;
	
	
	
}
        else{
	
	
	
$link = "<a href=\\"/?cat=$cat_id\\">$name</a> > ".$link; 
	
	
	
}
	

	
$cat_id = $fetch[\'cat_parent_id\'];
}
return $link;
}
Мне тормоз послужил толчком...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вывод цепочки навигации
« Ответ #2 : 31 Мая 2003, 12:17:47 »
Цитировать
Подскажите как правильно? И вообще может быть есть другой способ кроме рекурсии а то каждый раз базу гонять.
юзай Nested Sets -> http://dev.e-taller.net/dbtree/
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Вывод цепочки навигации
« Ответ #3 : 31 Мая 2003, 15:11:59 »
To Neter
Почему-то неработает ничего невыводит

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Вывод цепочки навигации
« Ответ #4 : 31 Мая 2003, 15:46:21 »
.
Цитировать
Nested Sets -> http://dev.e-taller.net/dbtree/

Я когда-то читал про этот метод и че то мне там непонравлось. Попробую перечитать. А кто делает таким образом поделитесь впечатлениеми. Большинство как я понял все токи через id родителя делают

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Вывод цепочки навигации
« Ответ #5 : 31 Мая 2003, 16:40:52 »
Цитировать
Vad:
Почему-то неработает ничего невыводит


Может быть надо поставить
echo follow_cat(@$_GET[\'cat\']); 
и передать скрипту ID текущего каталога в переменной cat..
Мне тормоз послужил толчком...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28