Forum Webscript.Ru

Программирование => Perl => Тема начата: GrAfF от 13 Февраля 2004, 14:58:34

Название: создание и сортировка дерева
Отправлено: GrAfF от 13 Февраля 2004, 14:58:34
Привет!
С XML вроде разобрался. Но мы снова не ищем легких путей. :)

Нужно как-то научиться создавать, использовать и редактировать такую штуку. Предположим, разделы сайта. Похоже на вложенные директории. Карта.

корень
_часть1
__раздел1
___раздел1.1
__раздел2
_часть2
__раздел1

Смысл в том, что каждому(ой) разделу (части) приписывается некий уникальный UID, который потом указывается в свойствах объектов, "содержащихся" в этих разделах. В соответствии с этой картой объекты обрабатываются.

Вопросы.
1. В чем хранить базу? SQL нельзя. Предположим, типа-XML.

_
__
___
____
___

__

__
___
__



2. Как сделать навигацию по дереву? Т.е. как, например, получить текстом то-то вроде:
-------------
1
_sfdfg
__jkyut
__fght
-------------

3. Как произвольно менять порядок следования одноранговых записей, чтобы они шли не по алфавиту и не в порядке нахождения в XML?

4. Как делать наследование параметров, чтобы неуказанный параметр брался от чуть более близкого к корню элемента? Например, style.

5. Как объединять разные объекты в группы?


Какая-то муть получилась. В общем, помогите советами, как организовать дерево произвольной степени вложенности.
Проблема в том, что одна часть сайта можеть быть очень простой, можно html просто в корень покидать. Вторая же нуждается во влженных папках, при этом некоторые html неплохо бы группировать по смыслу, а не расположению.

При этом одна часть не должна никак перекликаться с другой. То есть два дизайна, две карты и т.д. Но не писать же два движка. Нужно как-то в одну базу всё. И общая статистика, модерация.


Понимаю, что непростая штука. Формат хранения, IMHO, неплохой. Но как организовать именно работу с объектами, указывать наследственность, т.д. что-то придумать не могу.

В общем, рад любой помощи. Если это тупо - подскажите пару красивых идей. Желательно опять-таки без чужих или сложных модулей.

Отмазки: SQL низя. Да, делать нечего, пишу движок сайта. Для себя. Чтобы научиться. Сайт не коммерческий и делается для души.

add: Один из самых мощных вопросов - как это хранить в скрипте, забивать ли в массивы, хэши и т.д. и какии методами обрабатывать. Поэтому-то это в Perl я и повесил.
Название: создание и сортировка дерева
Отправлено: metton от 13 Февраля 2004, 17:14:44
Цитировать
GrAfF:
2. Как сделать навигацию по дереву? Т.е. как, например, получить текстом то-то вроде:
-------------
1
_sfdfg
__jkyut
__fght


Что именно ты имеешь ввиду под навигацией? И что есть "sfdfg" и т.д.?


Цитировать
3. Как произвольно менять порядок следования одноранговых записей, чтобы они шли не по алфавиту и не в порядке нахождения в XML?

Смотря КАК ты будешь строить дерево. Самое простое, наверное, прилепить объекту свойство типа ранга (номера).


Цитировать
4. Как делать наследование параметров, чтобы неуказанный параметр брался от чуть более близкого к корню элемента? Например, style.

Это уже вопрос по работе алгоритма. Которого нет.


Конкретизируй вопросы - будут ответы.
Название: создание и сортировка дерева
Отправлено: GrAfF от 14 Февраля 2004, 00:08:46
Цитировать
Что именно ты имеешь ввиду под навигацией? И что есть "sfdfg" и т.д.?

1
_sfdfg
__jkyut
__fght

В index.html раздела, у которого UID sfdfg нужно бы выдать линки на fght и jkyut. То есть вложенные. А в карте сайта показать всё, что входит в 1, т.е. все три.

Вообще в голове каша, поэтому вопросы чуть расплывчатые. Алгоритм чуть зависит от реализации, реализация от алгоритма...
Цитировать
Конкретизируй вопросы - будут ответы.

Нет ничего конкретного. Нужно мощное дерево, которое может выполнить некоторые задачи. Чтобы раз написать скрипт, базу и front-end к нему. Поэтому и написал всё что придумалось, может быть это можно решить намного проще.
Название: создание и сортировка дерева
Отправлено: metton от 14 Февраля 2004, 00:53:01
Цитировать
GrAfF:
Нет ничего конкретного

Вот. Это основная фраза всей темы. Если ты сам не знаешь что тебе нужно, как мы сможем тебе помочь?

Цитировать

Нужно мощное дерево

я так понимаю, в данном контексте, дерево - структура данных. тогда что значит мощное - с большой вложенностью и большим количеством ответвлений?
Название: создание и сортировка дерева
Отправлено: GrAfF от 14 Февраля 2004, 13:11:35
metton, в общем, нужны рубрики с настройками. Зачем?
1. Автоматическое создание директорий этих рубрик на сервере с обновлением навигации и карты сайта.
2. Генерация файлов внутри директорий с дизайном, который прописан в настройках рубрики.

Т.е. создание базы - дерева рубрик и работа с ней. Плюс есть база текстов, каждый из которых будет привязн к нужной рубрике с помощью некотого уникального номера рубрики.

Наверное, вся проблема в том, что нужна вложенность директорий. И настройки дизайна...
Название: создание и сортировка дерева
Отправлено: metton от 14 Февраля 2004, 18:21:36
Самое простое дерево: каждой категории кроме своего идентификатора прилепляешь родительский.
Название: создание и сортировка дерева
Отправлено: GrAfF от 14 Февраля 2004, 21:32:37
metton, а можешь подкинуть ещё парочку советов? О релизации и алгоритмах. Немного "что" и чуть "как". Формат хранения - наверное XML вроде приведённого выше. А дальше?

Есть ещё мысль. Раскидать по диркам файлы настроек, а обрабатывать всё сканером дирок. По сравнению с базой, кажется чуть проще с точки зрения синхронизации базы.

В общем, завяз.
Название: создание и сортировка дерева
Отправлено: metton от 14 Февраля 2004, 22:00:33
GrAfF
Вот почитай, мы тут обсуждали это вопрос: http://flasher.ru/forum/showthread.php?s=&threadid=40267&highlight=dead+brain
Там и линки кое-каие есть
Название: создание и сортировка дерева
Отправлено: GrAfF от 16 Февраля 2004, 02:35:02
metton, спасибки. Сходил, посмотрел, нашел что почитать.

Вот интересные линки, если кто то же потом будет искать:
http://myphp.net.ru/lessons/index.php?18
http://detail.phpclub.net/article/db_tree
http://www.webscript.ru/stories/03/10/22/6752491