Войти

Показать полную графическую версию : Создание многоуровневого меню


Coutty
15-07-2006, 11:21
ТЗ: нужно сделать меню, как в справках .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
15-07-2006, 15:15
Люди для этого вроде используют деревья

Coutty
15-07-2006, 15:26
vadimiron, каким образом можно сохранить древовидную структуру в БД?
Или надо использовать текстовый файл? Может xml?

vadimiron
15-07-2006, 17:33
Могу только пару статей посоветовать, дальше поиск в инете поможет:
здесь (http://dev.mysql.com/tech-resources/articles/hierarchical-data.html)
ещё одно интересное решение (http://jan.kneschke.de/projects/mysql/sp/)
более старая статья но интересная (http://www.sitepoint.com/article/hierarchical-data-database)




© OSzone.net 2001-2012