Построение древовидной структуры
Постараюсь изложить, как смогу внятно, суть вопроса)))
В общем случае есть таблица (MySQL), в которой содержится ID элемента, ID родительского элемента и доп. инф...
Примерно так:
--------------------
| ID | RootID | INF |
--------------------
| 01 | 0 |......|
| 02 | 01 |......|
| 03 | 01 |......|
| 04 | 02 |......|
| 05 | 04 |......|
| N | ......... |......|
-------------------
RootID 0 есть корневой элемент.
Вопрос: как построить древовидную структуру, если неизвестны количество и глубина зависимостей. Хотелось бы перенести всё в массив, но не получается создавать его налету, так как заранее неизвестна его размерность(((
Реализация на PHP.
Спасибо)
ИМХО одинм SQL запросом можно только в Oracle и PostgreSQL (CONNECT BY) и MS SQL (процедуркой)
PS. я б в массив не складывал, а делал сразу все что нужно (echo?) для каждого уровня ибо при больших объемах массив получится огого...
ЗЫ:
$UCMS - класс с паметрами CMS, так что можешь где надо - по коду убрать его
$DB - мой класс для работы с базой данных, тоже соответсвенно можешь поменять по коду где надо
таблица называется topics, и имеет поля:
int id, int parentTopic (родительский топик, 0 если высший), string title (заголовок), int position (позиция в выводе, т.е. порядковый номер топика в выводе, только пока что ещё иногда лагает, так что осторожней), bool display (выводить раздел на страницу или нет, используется при создании html-кэша).
Для кэша используется путь PATH_ROOT."casche", где PATH_ROOT - константа, содержащяя путь до корня сайта.
Ну вообщем воть) Остальное привести под себя тебе проблем не составит имхо)
Цитата:
public function makeMenu() {
return $this->BuildMenu();
}
return $this->BuildMenu();
}
:D
а остальное (ИМХО) сложно и круто, хоть и логично
А че смешного-то?) Просто я люблю по несколько имен для функции иногда придумывать)
Огромное спасиба!!! Ща попробую...)