[ Everything is possible. Everything takes time. ]
Древовидная навигация по сайту
Долго я искал способ построения древовидной навигации для сайта. Я не спорю, возможно этот велосипед уже не раз изобретался. Но дерево без ограничения в уровнях - действительно являлось проблеммой для меня.
Ранее я делал нечто подобное на SQL. Это была хранимая процедура на сервере MySQL, при вызове которой мы получали HTML код навигации. Но в коде были свои недостатки, которые я от проекта к проекту решал путем прямого вмешательства.
В этом же коде, написанном на php очень легко реализовано дерево объектов.
В таблице данные я храню в виде:
id int auto_increment,
parent int,
title varchar
Первым делом я загоняю в массив id активного объекта и всех родительских уровней. Делаю это функцией array_unshift($id, $parents_array) для того, чтобы нулевой уровень (родитель объектов первого уровня всегда равен нулю, т.к. у объектов первого уровня нет родителя) был внесен в $parents_array[0], а $id активного элемента был последним в списке ($id активного элемента я вношу в данный массив, потому, что у данного объекта тоже могут оказаться элементы-потомки, которые тоже необходимо выводить).