[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Спорим про дерево
Leningrad00
Написали мы как-то дерево. Для навигации. Думали так: таблица со всеми элементами дерева, есть поле parent, в котором указывается родитель; если родитель пустой, то это элемент первого уровня, если нет, — ищем его родителя и выводим дочку после родителя. Дочка второго и большего уровней не знает своего прародителя. Она знает только родителя. Все замечательно.
Потом придумывали редакцию разделов, где можно переопределить родителя. Нажимаешь на кнопочку, вылазит дерево в новом окне, нажимаешь на элемент, который хочешь определить как родителя, и все. Появилась проблема: если я редактирую какого-то родителя и хочу в качестве его родителя определить его текущую дочку, вся ветка дохнет; первый родитель ищет своего, а тот в свою очередь имеет родителем первого, так не бывает. Логика: при редакции раздела ни он, ни любая из его подветвей не должна предлагаться в качестве возможного родителя. Так и сделали. Все хорошо, и девки целы, и хлопцы довольны.
Пример:
A
B
|----B_1
C
Такое дерево. Главные элементы: A,B,C. Элемент B_1 есть дочка для B.
При нашем подходе при редакции раздела B в качестве его возможных родителей предлагаются только A и С.
Сегодня напарник мой говорит, что это есть фуфло, что надо сделать так, чтобы нельзя было определить в качестве родителя для элемента только сам этот элемент. Чтобы можно было при редакции раздела B назначить ему родителем элемент B_1. Чтобы при этом менялись два родителя и эти элементы менялись бы местами.
Я говорю, что это нафек не нужно, ибо если ты засунул элемент в какую-то подветку, значит, чем-то при этом руководствовался. А если объелся шишек или морковки и че-то перепутал, то, будь добр, вначале вынеси все дочки куда-нибудь, поменяй родителя, кому надо, и снова верни дочек на место.
Тот говорит, что надо все предусмотреть.
Кто гонит?



Спустя 1 час, 6 минут, 40 секунд (1.02.2007 - 14:47) Ghost написал(а):
имхо ты прав.
во-первых неочевидно что элементы должны меняться местами.
может все дочки В кроме 1-й должны оставаться дочками В. так даже логичнее
во-вторых система позволяет сделать такую фишку, пусть не в 1 ход а в 2-3, так что непробиваемой стены нет.

но!! ОСНОВНЫМ критерием надо или нет служит ответ на такой вопрос: Как часто такая функция будет использована. Если раз в пол-года юзер просто забудет о ее существовании, и будет делать в 2-3 хода стандартными методами (сама по себе такая шняга стандартом имхо не является)

Спустя 2 часа, 17 минут, 1 секунда (1.02.2007 - 17:04) cage написал(а):
Не верьте ему ,он неправду говорит!!!
На самом деле фича с обменом родителей очень удобна и,призрак,логично то,что удобно и востребовано,нет единой логики для такой многозначной системы,а предлагаемая фича дает преимущество в том,что позволяет напрямую общаться и с родителями и с поколением!

Спустя 18 минут, 7 секунд (1.02.2007 - 17:23) Ghost написал(а):
cage, Как часто такая функция будет использована. ?

Спустя 17 минут, 12 секунд (1.02.2007 - 17:40) cage написал(а):
Цитата(Ghost @ 1.2.2007, 15:23) [snapback]11931[/snapback]

cage, Как часто такая функция будет использована. ?


Это зависит от самого юзера,и вообще этот не должно иметь разницы,метод по-моему должен существовать,ведь он не противоречит логике,или я чего-то не догоняю

ЗЫ хотя бы точку убрал при CtrlV)))))

Спустя 22 минуты, 32 секунды (1.02.2007 - 18:02) Ghost написал(а):
Цитата
метод по-моему должен существовать

по-моему не стоит.. но ваша прога, вам и делать

Спустя 15 часов, 13 минут, 11 секунд (2.02.2007 - 09:15) cage написал(а):
Лучше было бы, если ты сказал или "Это полнейшее фуфло,вы в своем уме?" или "о боже,как это востребовано"(на "О боже,как это гениально" я не претендую)))Призрак,я требую оценки))

Спустя 2 часа, 16 минут, 48 секунд (2.02.2007 - 11:32) Ghost написал(а):
Я и говорю, ИМХО такая шняга не нужна, клиент ей пользоваться не будет - пользователь такая животная, которому нужна одна большая кнопка, которая бы все делала, когда этих кнопки 2 он начинает пугаться.
Твоя функция не стандартна, то бишь скорее всего про нее просто забудут

Спустя 2 часа, 49 минут, 52 секунды (2.02.2007 - 14:22) cage написал(а):
а фича ленинграда стандартна?и не будет никаких лишних вещей просто все перед глазами и нет исключений

Спустя 14 минут, 15 секунд (2.02.2007 - 14:36) Ghost написал(а):
1 в 1 повторяет структуру файлов/папок винды, к которой все привыкли

Спустя 42 минуты, 15 секунд (2.02.2007 - 15:19) cage написал(а):
разве в винде одну ветку мона прикрепить к другой?и чем мое дерево отличается от винды,логика вывода та же

Спустя 6 минут, 15 секунд (2.02.2007 - 15:25) Ghost написал(а):
1. можно
2. реализации твоей функции там нет

Спустя 28 минут, 47 секунд (2.02.2007 - 15:54) cage написал(а):
ну если так ,тогда хэндэ хох,убедили))

Спустя 8 дней, 1 час, 35 минут, 31 секунда (10.02.2007 - 17:29) Timok написал(а):
Тоже столкнулся с деревьями... У меня рекурсивная функция: задаём в параметре id раздела, получаем список потомков, проходим циклом по потомкам, заново вызывая эту же функцию, уже с id потомков и т.к. далее. Проблема в том, что для того чтобы получить список потомков нужно сделать запрос (SELECT `id` FROM `doc` WHERE `parent`=) - так для каждого узла. Т.е. получается - чтобы получить всё дерево нужно сделать столько же запросов сколько записей в таблице. Это ведь не есть хорошо? Как можно это дело оптимизировать?

Была идея получить id и parent сразу всех записей и состряпать из них многомерный массив (где индексы - это id записи, а значение - массивы потомков), но что-то них.. не получается ёё реализовать. Помогите плз, а то я уже зае.....ся с этими деревьями....

Спустя 1 час, 14 минут (10.02.2007 - 18:43) larin написал(а):
Есть еще вложенные множества, поищи в нете.
Вот тебе линк для отправной точки: http://phpclub.ru/faq/wakka.php?wakka=Tree/Ns&v=zz4

Спустя 1 день, 16 часов, 26 минут, 17 секунд (12.02.2007 - 11:09) Leningrad00 написал(а):
Тимок, проверяли. При заблаговременном получении всех записей и их дальнейшем разруливании время работы увеличивается в полтора-два раза.

Спустя 28 минут, 29 секунд (12.02.2007 - 11:38) larin написал(а):
Я еще раз говорю: вложенные множества. По построению и т.д. быстрее не придумаешь, а вот добавление и обновление здесь ресурсоемкие операции, но ИМХО это не критично. Т.к. разделы на большинство сайтов добавляются не каждую минуту.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.