Нестандартное дерево - как лучше поступить?

12
M2
На сайте с 11.01.2011
Offline
341
766

Доброго времени суток,

Я сразу к делу. Имеем таблицу следующей структуры:

---------------------------------------------------------------

group_id | level_id | name

---------------------------------------------------------------

Где:

group_id: ID группы. Может принимать значения либо 1 либо 0. Если значение равно 1, значит находимся в папке (не важно какого уровня). Если 0, значит в текущей строке элемент, который в папке.

level_id: Уровень. Принимает значения от 1 до 3, где значения 1 и 2 означают папки, 3 - элемент.

name: Наименование.

Ещё раз: структура такая:

--Папка 1 [1, 1]

----Папка 2 [1, 2]

------Элемент 1 [0, 3]

------Элемент 2 [0, 3]

------Элемент 3 [0, 3]

------Элемент 4 [0, 3]

----Папка 3 [1, 2]

------Элемент 5 [0, 3]

------Элемент 6 [0, 3]

------Элемент 7 [0, 3]

--Папка 4 [1, 2]

------Элемент 8 [0, 3]

------Элемент 9 [0, 3]

В квадратных скобках левое число означает group_id, правое - level_id.

Вот.... это было предисловие....

Всю эту структуру надо вывести в виде дерева. Всё понимаю, что тип дерева нестандартный, что есть там списки смежности, вложенные множества и т.д. и т.п..... но структура именно такая, обсуждению и пересмотру не подлежит. И вывести в виде дерева нужно именно так, как представлено...

Буду благодарен за любую помощь от уважаемых форумчан :)

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
G2
На сайте с 27.10.2009
Offline
62
#1

А по-русски? Формат:

Исходные данные, желаемый результат, вопрос.

Если я правильно понимаю что имелось в виду, то:

к таблице прибавляется id (primary элемента), parent_id (к кому относимся), weight(положение, если не подходит стандартная сортировка), name (собственно, текст).

При этом group_id и level_id не используются. На основании только их - построить дерево невозможно.

КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
tester999
На сайте с 21.10.2004
Offline
149
#2

Выбрать все дерево в массив, а потом рекурсивно его отсортировать. Это ж похапе, да?

orphelin
На сайте с 02.07.2006
Offline
261
#3
mark2011:
----Папка 2 [1, 2]
----Папка 3 [1, 2]
--Папка 4 [1, 2]

имеют равные ид при разной вложенности. поэтому я думаю не получится сделать из этого дерево.

G2
На сайте с 27.10.2009
Offline
62
#4
orphelin:
имеют равные ид при разной вложенности. поэтому я думаю не получится сделать из этого дерево.

Это очевидно. Тут куда более интересный вопрос - что же на самом деле имел в виду автор?🙄

Тем более, что при такой структуре не получится как-либо настраивать дерево - переносить пункты, сортировать..

tester999
На сайте с 21.10.2004
Offline
149
#5

Господа, что там не понятного? Смотрим например:

Элемент 5 [0, 3]

Комбинация 5-0-3 - уникальная, так же и остальные элементы имеют отличные друг от друга индексы. Дерево строится на ура. )))

orphelin
На сайте с 02.07.2006
Offline
261
#6

tester999, а можно в коде и с реальными данными на ура?

имена (элемент 5) никак не привязан к какой-то группе. да, его выведешь на третьем уровне, укажешь что это файл, а не папка. и все. вкакую группу его пристроить в дереве?

tester999
На сайте с 21.10.2004
Offline
149
#7

в коде - лениво.

Объясню на пальцах... Грубо говоря, создаем еще одну таблицу, куда вносим принадлежность Элемента той или иной Папке (и принадлежность Папки другой Папке тоже вносим). Потом джойнами вытягиваем все в массив и строим дерево... Да, вот так...)) А вообще ТС-у нужно задания на лабораторную работу тщательнее списывать. )))

G2
На сайте с 27.10.2009
Offline
62
#8
Комбинация 5-0-3

Нет такой комбинации. "Элемент 5" это просто имя, которое в реальности будет ababagalamaga. И оно, кстати, тоже должно где-то храниться..

Просто принадлежность тоже не катит, ибо как ты собираешься менять порядок следования элементов?

orphelin
На сайте с 02.07.2006
Offline
261
#9
mark2011:
но структура именно такая, обсуждению и пересмотру не подлежит.
tester999:
Грубо говоря, создаем еще одну таблицу,

уже новый способ изобрел?

tester999
На сайте с 21.10.2004
Offline
149
#10

Господа, зачем я там смайлов понаставлял? После ваших ответов №4 и №5 было всем ясно, что "дерево там такое". Не ломайте голову, ТС сегодня точно перепишет задание лабы и тогда будем думать.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий