![]() |
Создание многоуровневого меню
ТЗ: нужно сделать меню, как в справках .chm - неограниченная многоуровневость (хотя, пожалуй, пяти уровней хватит); отображение и папок, и документов.
Инструменты: PHP, MySQL Желательно, чтобы вся справка со структурой содержалась в одной таблице. Есть только такой вариант: id - int - идентификатор документа или папки level - smallint - уровень вложенности документа или папки parent - int - идентификатор родительской папки type - smallint - 1, если документ; 0, если папка title - text - название документа или папки content - text - содержание документа; пусто, если папка Но с такой структурой для документа пятого уровня, например, придётся запрашивать: 1. Структуру первого уровня 2. Структуру второго уровня, содержащую документ 3. Структуру третьего уровня, содержащую документ 4. Структуру четвёртого уровня, содержащую документ 5. Структуру пятого уровня, содержащую документ 6. Сам документ Затем нужно обработать всё это таким образом, чтобы структуры были расположены именно в том месте, где надо, а не в конце меню, например. Но такой скрипт займёт немало процессорного времени. Как оптимизировать? В виде статичного HTML - не оптимально. Меню может получится в несколько раз больше самого документа. |
Люди для этого вроде используют деревья
|
vadimiron, каким образом можно сохранить древовидную структуру в БД?
Или надо использовать текстовый файл? Может xml? |
Могу только пару статей посоветовать, дальше поиск в инете поможет:
здесь ещё одно интересное решение более старая статья но интересная |
Время: 18:54. |
Время: 18:54.
© OSzone.net 2001-