Честно говоря, уже месяц изобретаю велосипед... и он... как ни странно... не получается.
Суть такова - пользователи создают альбом, в альбоме могут создать под альбомы, в под альбомах могут создавать под под альбомы... в общем неограниченная иерархия уровней.
в таблице categories сделал 3 столбца - (id, name, up).
up - это id категории, в которой находится текущий альбом.
То есть, предположим есть 6 альбомов в таблице
id name up
1 Альбом1 2
2 Альбом2 4
3 Альбом3 4
4 Альбом4 0
5 Альбом5 0
6 Альбом6 0
(0 - это верхний уровень)
Когда пользователь заходит на страницу списка альбомов, он видит 3 альбома (Альбом4, Альбом5, Альбом6).
Заходя в альбом 4, сайт делает выборку по up=4 и соответственно потом отобразит 2 альбома (Альбом2 и Альбом3). Ну и ответственно. заходя в альбом 2 сайт отображает Альбом1.
А теперь предположим я хочу дать возможность пользователю перенести любой альбом в другой.
При таком раскладе невозможно отобразить список альбомов, в котором будут исключены вложенные подальбомы.
То есть, если пользователь захочет перенести Альбом4 в другой, то необходимо исключить из списка все его под альбомы, а что бы исключить альбом1, необходимо сделать как минимум 2 выборки.
А если допустим пользователь создал 5 уровней альбомов, то необходио будет делать 4 выборки, что бы исключить возможность переноса альбома во все его подъальбомы.
Есть ли какой-нибудь менее извращённый способ реализовать то, что мне нужно?
Создавать каждому пользователю новую таблицу - это не вариант... к сожалению...
P.S. Надеюсь я смог нормально вс пояснить
|