|
|
|
| Подскажите как сделать такую вещь
Ветвь 1
Ветвь 1-1
Ветвь 1-2
Ветвь 1-2-1
Ветвь 1-2-2
Ветвь 1-2-2-1 (выбранная)
Ветвь 1-2
Ветвь 2
Ветвь 3
...
При клике в урле передается id ветви.
Все ветви находятся в одной таблице и связаны через parent_id.
Помогите сделать рекурсию (видимо обратную) чтобы открыть все родительские ветви выбранной ветви.
З.Ы. Если есть возможность одним запросом.
Спасибо за помощь. | |
|
|
|
|
|
|
|
для: школьник
(30.07.2008 в 22:21)
| | Здесь не нужна рекурсия.
А одним запросом в общем случае не обойдешься.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=32308
Кроме того, что-то ветвей у Вас лишних чересчур.
Четыре, которые не являются родительскими (помечены минусом)
И один дубль (помечен плюсом)
Ветвь 1
-Ветвь 1-1
Ветвь 1-2
-Ветвь 1-2-1
Ветвь 1-2-2
Ветвь 1-2-2-1 (выбранная)
+Ветвь 1-2
-Ветвь 2
-Ветвь 3 | |
|
|
|
|
|
|
|
для: Trianon
(30.07.2008 в 22:29)
| | Странно, но я нечего не понял) Может есть чтото по конкретней? | |
|
|
|
|
|
|
|
для: Trianon
(30.07.2008 в 22:29)
| | Пожалуйста, подскажите решение? | |
|
|
|
|
|
|
|
для: школьник
(31.07.2008 в 14:23)
| | Я подсказал. Под ссылкой - метод получения всех узлов, составляющих путь от запрошенного узла до корня.
Вы же не ответили даже на указанные Вам нестыковки в формулировке проблемы. | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2008 в 14:53)
| | Вы имеете ввиду этот код?
<?
function get_path($id, $root_id = 0)
{
$list = '';
do{
$sql = "SELECT * FROM tab WHERE id = '$id'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
if($row == 0)
break;
$list = $row['name']. ' | ' . $list;
$id = intval($row['parent_id']);
} while($id != $root_id && $id != 0);
return ' | ' . $list;
}
?>
|
| |
|
|
|
|
|
|
|
для: школьник
(31.07.2008 в 16:35)
| | Да, что-то подобное. | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2008 в 17:08)
| | Ну это же совсем не то,
есть категории первого уровня, второго, третьего и т.д.
и передаем id вы бранной категории, она может быть третьего уровня вложенности.
и при переборки происходит чтото следующее, по первому уровню первому элементу ищем id открытой категории, если таковой нет, то ставим статус "не открывать эту ветку", если id найден в этой ветке, то ставим статус "открыть все род. ветки". | |
|
|
|
|
|
|
|
для: школьник
(31.07.2008 в 17:19)
| | приведенный код даст вам массив id-шек всех ветвей, которых закрывать не надо.
у вас есть этот список, далее при построении дерева просто проверяйте, нет ли данного id в массиве, если есть, то не закрывайте | |
|
|
|