Помощник
|
построение иерархического меню на рекурсии |
hardlviv
|
Сообщение
#1
|
||
|
|
||
|
|||
unnormal |
19.11.2010, 13:52;
Ответить: unnormal
Сообщение
#2
|
|
WHERE `parent` = $parent_id AND `id` IN ('1', '2', '3')
|
|
|
evgenijj |
19.11.2010, 15:56;
Ответить: evgenijj
Сообщение
#3
|
|
А зачем у функции параметр $parent_id? Надо при вызове передать ID нужного раздела. Т.е. чтобы вывести все дерево, передаем 0, чтобы вывести всех потомков какого-то раздела, передаем ID этого раздела.
P.S. [php]<?php function ShowTree ( $parents ) { if ( is_array( $parents ) ) { foreach ( $parents as $id ) ShowTree ( $id ); return; } $query = "SELECT `id`, `parent`, `title` FROM `categories` WHERE `parent` = ".$parents; $res = mysql_query($query); if (mysql_num_rows($res) > 0) { echo '<ul>'; while ($row = mysql_fetch_array($res)) { echo '<li><a href="/?id='.$row['id'].'">'.$row['title'].'</a></li>'; ShowTree ($row['id']); } echo '</ul>'; } } $category = 0; ShowTree ($category); echo '<hr>'; $categories = array( 2, 19 ); ShowTree ($categories); ?>[/php]P.P.S. Отлажено :) |
|
|
unnormal |
19.11.2010, 16:08;
Ответить: unnormal
Сообщение
#4
|
|
[php]function ShowTree ($parent_id, $sections = array()) {
if (!empty($sections)) $and = "AND `id` IN ('".implode("','", $sections)."')"; $sql = "SELECT `id`, `parent`, `name` FROM `tree` WHERE `parent` = $parent_id ".$and; $result = mysql_query($sql); if (mysql_num_rows($result) > 0) { echo '<ul>'; while ($row = mysql_fetch_array($result)) { echo '<li><a href="/?id='.$row['id'].'">'.$row['name'].'</a></li>'; ShowTree ($row['id'], false); } echo '</ul>'; } }[/php]ShowTree(0, array(1,3,5)); Должен вывести в дереве только разделы 1,3,5 (не занимался отладкой :) ) |
|
|
hardlviv
|
Сообщение
#5
|
|
Спасибо! Догнал теперь.
|
|
|
varvashenia |
24.11.2010, 15:04;
Ответить: varvashenia
Сообщение
#6
|
|
|
Для работы с деревьями давно использую данные в виде Nested Sets - при этом прилично усложняются телодвижения с узлами, зато делать выборки - просто прелесть. Данные в любую строну выбираются одним sql-запросом и без рекурсий.
PS: Вдруг пригодится кому.
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Перенести меню | 1 | Викторио_mw | 1469 | 28.8.2018, 0:10 автор: TimurR |
|
Необходимо разрезать и установить Меню для группы ВКонтакте | 2 | boltuk | 3416 | 4.12.2017, 14:44 автор: tezoro |
|
Помогите с меню - переделать в выпадающее | 1 | lepota | 1130 | 4.12.2017, 13:29 автор: yury_mw |
|
Слайдер под меню | 0 | Olya_Poy | 4648 | 29.11.2017, 11:09 автор: -garmoni- |
|
На разных разрешениях меню выглядит по разному | 0 | SPiar | 4817 | 28.9.2017, 17:45 автор: -korotkov- |
Текстовая версия | Сейчас: 25.4.2024, 16:06 |