Цепочка навигации

Kirill_L

Новичок
Цепочка навигации

Привет, всем! Стоит задача организовать горизонтальное меню в виде цепочки навигации:
например,
категория/подкатегория/тема/.../ и т.д. Вот как сверху в этом форуме

PHP Club форумы: > PHP и базы данных
 

Groove

Новичок
Поздравляем, это здорово когда стоит...
Скажи как ты пытался решить задачу? Какие сложности возникли? Чтобы не писать тебе советы, которые ты уже может быть использовал...
 

Кром

Новичок
>Стоит задача организовать горизонтальное меню в виде цепочки навигации

Это в раздел "статьи". Почитай про деревья.
 

Kirill_L

Новичок
Groove
Есть следующее:
$sql_2="SELECT * FROM $tbl_menu WHERE pid=".$_GET['pid']." AND id=".$_GET['item'];
$res_2=mysql_query($sql_2);
while ($tree=mysql_fetch_array($res_2)) {
$itm="<a href=# class=item>/".$tree['name']."/</a>";
}
print $itm;
То есть я знаю где я нахожусь. Дальше проблема в том, что позицию надо запомнить как-то, чтобы вывести всю цепочку, а не имя категории где я нахожусь
 

Groove

Новичок
Kirill_L
Кром тебе ответил....
там на первый взгляд кажется все очень сложным, зато полностью решит твою проблему... и докуентацияя полная и с картинками, и пользоваться удобно...
Но это оправдано когда у твоего меню большая и переменная вложенность для листьев дерева, если у тебя всего два-три уровня этого можно избежать.
Какой вариант у тебя?
напиши свой случай например в таком виде:
Главная / Новости проекта / Новость №1
Главная / Форумы / Форум №1 / Топик №1
 

Kirill_L

Новичок
Groove
Вид примерно такой:
Купить/ Бытовая техника/ Стиральные машины...то есть. может быть 3-4 уровня. Больше люди просто психологически не поймут и покинут сайт. А может урл скините еще какой?
 

kos

Новичок
всегда делаю так:
БД типа такого
[sql]
CREATE TABLE `menu` (
`id` int(11) NOT NULL auto_increment,
`master_id` int(11) NOT NULL default '0',
`level` tinyint(4) NOT NULL default '0',
`title` varchar(50) NOT NULL default '',
UNIQUE KEY `id` (`id`)
);
[/sql]
а вывод типа такого
PHP:
$menu_var=fetch_array("SELECT `master_id`,`level`,`title` FROM `".$tb."menu` WHERE `id`='".$_GET["p"]."'");
$n=$menu_var["level"];
$pages[$n]=$_GET["p"];
$title=" :: ".$menu_var["title"];
while(true){
   $menu=query("SELECT `id`,`master_id`,`title` FROM `".$tb."menu` WHERE `id`='".$menu_var["master_id"]."'");
   if(mysql_num_rows($menu)==0)
      break;
   $menu_var=mysql_fetch_array($menu);
   $n--;
   $pages[$n]=$menu_var["id"];
   $title=" :: ".$menu_var["title"].$title;
}
$title=$OPTION["site_title"].$title;
$tpl->assign("index",array(TITLE=>$title));
 

y4an

Новичок
Kirill_L

while ($tree=mysql_fetch_array($res_2)) {
$itm . = ($item!='') ? " / <a href=# class=item>".$tree['name']."</a>" : "<a href=# class=item>".$tree['name']."</a>";;
}
 

Kirill_L

Новичок
Спасибо всем! Я решил это дело следующим образом:
функция обработки
PHP:
function nav_chain ($it){   $link = "";   $it_id = $it;   while ($it_id != 0){       $res = mysql_query("SELECT pid, name FROM menu WHERE id=$it_id");       $fetch = mysql_fetch_array($res);             $name = $fetch['name'];           if ($it_id == $it){               $link = "<font class=new>$name</font>".$link;               }           else{               $link = "<a class=item href=\"/city_d.php?id={$_GET['id']}&item=$it_id&pid={$fetch['pid']}\">$name</a> <b>::</b> ".$link;               }           $it_id = $fetch['pid'];   }   return $link;   }
вывод цепочки

PHP:
echo nav_chain(@$_GET['item']);
 
Сверху