Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Построение древовидной структуры

17K
30 марта 2008 года
Omni_13
18 / / 25.01.2007
Доброго времени суток, уважаемые! Нужна помощь!!!
Постараюсь изложить, как смогу внятно, суть вопроса)))
В общем случае есть таблица (MySQL), в которой содержится ID элемента, ID родительского элемента и доп. инф...
Примерно так:
--------------------
| ID | RootID | INF |
--------------------
| 01 | 0 |......|
| 02 | 01 |......|
| 03 | 01 |......|
| 04 | 02 |......|
| 05 | 04 |......|
| N | ......... |......|
-------------------
RootID 0 есть корневой элемент.
Вопрос: как построить древовидную структуру, если неизвестны количество и глубина зависимостей. Хотелось бы перенести всё в массив, но не получается создавать его налету, так как заранее неизвестна его размерность(((
Реализация на PHP.
Спасибо)
17K
30 марта 2008 года
savostin
37 / / 12.10.2006
Рекурсивная php функция.
ИМХО одинм SQL запросом можно только в Oracle и PostgreSQL (CONNECT BY) и MS SQL (процедуркой)

PS. я б в массив не складывал, а делал сразу все что нужно (echo?) для каждого уровня ибо при больших объемах массив получится огого...
244
30 марта 2008 года
UAS
2.0K / / 19.07.2006
Короче я тебе щас класс скину свой. Для CMS писал. Может там и много лишнего, но как-то руки не доходят дооптимизировать. Думаю там сам разберешься:

ЗЫ:
$UCMS - класс с паметрами CMS, так что можешь где надо - по коду убрать его
$DB - мой класс для работы с базой данных, тоже соответсвенно можешь поменять по коду где надо
таблица называется topics, и имеет поля:
int id, int parentTopic (родительский топик, 0 если высший), string title (заголовок), int position (позиция в выводе, т.е. порядковый номер топика в выводе, только пока что ещё иногда лагает, так что осторожней), bool display (выводить раздел на страницу или нет, используется при создании html-кэша).
Для кэша используется путь PATH_ROOT."casche", где PATH_ROOT - константа, содержащяя путь до корня сайта.

Ну вообщем воть) Остальное привести под себя тебе проблем не составит имхо)
17K
30 марта 2008 года
savostin
37 / / 12.10.2006
Цитата:
public function makeMenu() {
return $this->BuildMenu();
}

:D
а остальное (ИМХО) сложно и круто, хоть и логично

244
30 марта 2008 года
UAS
2.0K / / 19.07.2006
А че смешного-то?) Просто я люблю по несколько имен для функции иногда придумывать)
17K
31 марта 2008 года
Omni_13
18 / / 25.01.2007
Огромное спасиба!!! Ща попробую...)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог