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

Форум PHP

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

 

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

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

тема: Дерево, открыть ветки
 
 автор: школьник   (30.07.2008 в 22:21)   письмо автору
 
 

Подскажите как сделать такую вещь

Ветвь 1
Ветвь 1-1
Ветвь 1-2
Ветвь 1-2-1
Ветвь 1-2-2
Ветвь 1-2-2-1 (выбранная)
Ветвь 1-2
Ветвь 2
Ветвь 3
...

При клике в урле передается id ветви.

Все ветви находятся в одной таблице и связаны через parent_id.

Помогите сделать рекурсию (видимо обратную) чтобы открыть все родительские ветви выбранной ветви.

З.Ы. Если есть возможность одним запросом.

Спасибо за помощь.

  Ответить  
 
 автор: Trianon   (30.07.2008 в 22:29)   письмо автору
 
   для: школьник   (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

  Ответить  
 
 автор: школьник   (31.07.2008 в 12:26)   письмо автору
 
   для: Trianon   (30.07.2008 в 22:29)
 

Странно, но я нечего не понял) Может есть чтото по конкретней?

  Ответить  
 
 автор: школьник   (31.07.2008 в 14:23)   письмо автору
 
   для: Trianon   (30.07.2008 в 22:29)
 

Пожалуйста, подскажите решение?

  Ответить  
 
 автор: Trianon   (31.07.2008 в 14:53)   письмо автору
 
   для: школьник   (31.07.2008 в 14:23)
 

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

  Ответить  
 
 автор: школьник   (31.07.2008 в 16:35)   письмо автору
 
   для: 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;
}
?> 

  Ответить  
 
 автор: Trianon   (31.07.2008 в 17:08)   письмо автору
 
   для: школьник   (31.07.2008 в 16:35)
 

Да, что-то подобное.

  Ответить  
 
 автор: школьник   (31.07.2008 в 17:19)   письмо автору
 
   для: Trianon   (31.07.2008 в 17:08)
 

Ну это же совсем не то,
есть категории первого уровня, второго, третьего и т.д.
и передаем id вы бранной категории, она может быть третьего уровня вложенности.

и при переборки происходит чтото следующее, по первому уровню первому элементу ищем id открытой категории, если таковой нет, то ставим статус "не открывать эту ветку", если id найден в этой ветке, то ставим статус "открыть все род. ветки".

  Ответить  
 
 автор: Roma   (31.07.2008 в 17:26)   письмо автору
 
   для: школьник   (31.07.2008 в 17:19)
 

приведенный код даст вам массив id-шек всех ветвей, которых закрывать не надо.
у вас есть этот список, далее при построении дерева просто проверяйте, нет ли данного id в массиве, если есть, то не закрывайте

  Ответить  
Rambler's Top100
вверх

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