20.02.2011, 21:34 | #1 |
Специалист
Регистрация: 14.09.2007
Сообщений: 271
Вес репутации: 215
|
Как построить дерево?
Код:
ID | Name | father | mother ---------------------------- 01 | child | 02 | 03 02 | father | 04 | 63 03 | mother | 12 | 51 ... и т.д. Примерно такого вида Untitled-1.jpg Может есть какой нибудь алгоритм? Ничего, кроме запроса к базе для каждой ячейки, в голову не приходит
__________________
|
20.02.2011, 22:57 | #2 |
Специалист
Регистрация: 19.07.2009
Сообщений: 240
Вес репутации: 195
|
Сам сейчас занимаюсь этим же
Пока нашел тут много интересной инфы http://phpclub.ru/faq/Tree/Ns?v=zz4 http://phpclub.ru/faq/Tree/Faq?v=lzx |
21.02.2011, 00:24 | #3 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 374
|
BMG, результатом исходных данных может стать более сложное дерево
|
21.02.2011, 00:55 | #4 |
Специалист
Регистрация: 14.09.2007
Сообщений: 271
Вес репутации: 215
|
Frenk1, интересно, но на ночь глядя не осилить.
Последний Герой, нет, может менятся только количество уровней.
__________________
|
21.02.2011, 01:00 | #5 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 374
|
BMG, всмысле? я говорю вообще о том, что структура графа может быть и вовсе не деревом. а на картинке во вложении как раз и не дерево. дерево это связный граф без циклов.
|
21.02.2011, 01:51 | #6 |
Эксперт
|
нормальное дерево
Добавлено через 6 минут одним запросм ты не извлекеш - смотри аналог работы файловой системы на компе - ведь файлы в папке отображаются тока тогда когда ты 2 раза cчелкнеш по папке прально ? тоесть реальзация алгаритма зависит от вапроса - тебе надо сразу в развернутом виде или при шшелчке на родителя показывать "детей" вот и всё - никакого перебора строк 2 запроса участвуют - запрос SQL первый выбрать всех у кого нет родителей (для старта) - второй выбрать всех у кого родитель указан (оно же проверка есть ли дети) 1 запрос - отобразить всех родителей !! важно - у таких родителй доджен быть внеiний ключ равен 00 (они произошли от бога) 1a - отбражаем родителй на экране 2 отображаем родителя одного - поверячем естьли у него дети - если да то отобажаем если нет то отображдаем следующего родителя всё извеняюсь за ошибки - спехом писал )
__________________
Последний раз редактировалось Anadonam; 21.02.2011 в 02:00. Причина: Добавлено сообщение |
21.02.2011, 22:06 | #7 | |
Специалист
Регистрация: 14.09.2007
Сообщений: 271
Вес репутации: 215
|
Цитата:
Что-то типа такого: PHP код:
__________________
|
|
24.02.2011, 14:36 | #8 |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 254
|
BMG
Рекомендую вытягивать любое поддерево любой сложности ОДНИМ запросом к БД. Это реально, но для этого надо снабдить таблицу дополнительной информацией. Есть несколько алгоритмов на этот счет. В своем движке я реализовал такую выборку. Причем даже сортировка детей в каждом узле выполняеется по полю сортировки, указанному в родителе. И на все про все делается только ОДИН запрос к БД. |
24.02.2011, 19:48 | #9 |
Специалист
Регистрация: 29.02.2008
Сообщений: 121
Вес репутации: 207
|
|
24.02.2011, 20:09 | #10 | |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 254
|
Optimizator1,
Цитата:
|
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подсветка строк при режиме вывода "дерево" | JIucky | Пожелания пользователей системы | 0 | 06.10.2010 19:39 |
Как лучше построить ветку сайтов-филиалов? | skolkov | Общие вопросы оптимизации | 24 | 08.08.2010 20:34 |
(Двоичное Дерево) С++ Очистка памяти | heroin | Курилка | 10 | 05.12.2009 01:58 |
Сколько стоит дом построить? :) | Tony Soprano | Курилка | 28 | 01.12.2009 14:29 |
Получить дерево папок | V!rus | Разработка и сопровождение сайтов | 4 | 17.03.2008 22:22 |
Часовой пояс GMT +3, время: 05:10.