Forum Webscript.Ru
Программирование => PHP => Тема начата: Vad от 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
Подскажите как правильно? И вообще может быть есть другой способ кроме рекурсии а то каждый раз базу гонять.
-
Какие ужасы Вы пишете.. брр..
/* примерно так */
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 = "$name".$link;
}
else{
$link = "$name > ".$link;
}
$cat_id = $fetch[\'cat_parent_id\'];
}
return $link;
}
-
Подскажите как правильно? И вообще может быть есть другой способ кроме рекурсии а то каждый раз базу гонять.
юзай Nested Sets -> http://dev.e-taller.net/dbtree/
-
To Neter
Почему-то неработает ничего невыводит
-
.
Nested Sets -> http://dev.e-taller.net/dbtree/
Я когда-то читал про этот метод и че то мне там непонравлось. Попробую перечитать. А кто делает таким образом поделитесь впечатлениеми. Большинство как я понял все токи через id родителя делают
-
Vad:
Почему-то неработает ничего невыводит
Может быть надо поставить
echo follow_cat(@$_GET[\'cat\']);
и передать скрипту ID текущего каталога в переменной cat..