DeltaDIM
Новичок
Порядок записей в таблице (сортировка)
Доброго времени суток!
Пишу скрипт наподобие дерева каталогов (для CMS).
Столкнулся с проблемой изменения порядка записей.
Приведу пример:
имеется таблица
|name| |parent| |pos|
index 0 1
about 0 2
soft 0 3
contacts 0 4
soft1 soft 1
soft2 soft 2
phone contacts 1
adress contacts 2
Встает вопрос о добавлении\удалении\перемещении вверх,вниз\изменении родителя
Допустим если я хочу добавить страницу в раздел soft (запись должна иметь последнюю позицию) я высчитываю самую большую позицию (2) и прибавляю 1. Все нормально.
|name| |parent| |pos|
index 0 1
about 0 2
soft 0 3
contacts 0 4
soft1 soft 1
soft2 soft 2
soft3 soft 3
phone contacts 1
adress contacts 2
Теперь если я хочу удалить страницу (например soft2). Удаляем записть и уменьшаем на единицу все позиции, которые больше текущей (в нашем случае только soft3 меняем 3 на 2)
По перемещению записей вверх вниз: присваеваем позиции минимальное (1) или максимальное значение и оставшиеся записи (которые меньше\больше нашей прошлой позиции) увеличиваем\уменьшаем на единицу.
Проблема такого подхода в том, что если мы у какой-либо записи поменяем родителя, то весьма трудно будет это отследить и выставить правильные позиции.
Одним словом, возможно это похоже на маразм)) И возможно это будет очень ресурсоемкий процесс... Ребят, если кто знает, подскажите, какие есть еще решения для организации такой сортировки.
Доброго времени суток!
Пишу скрипт наподобие дерева каталогов (для CMS).
Столкнулся с проблемой изменения порядка записей.
Приведу пример:
имеется таблица
|name| |parent| |pos|
index 0 1
about 0 2
soft 0 3
contacts 0 4
soft1 soft 1
soft2 soft 2
phone contacts 1
adress contacts 2
Встает вопрос о добавлении\удалении\перемещении вверх,вниз\изменении родителя
Допустим если я хочу добавить страницу в раздел soft (запись должна иметь последнюю позицию) я высчитываю самую большую позицию (2) и прибавляю 1. Все нормально.
|name| |parent| |pos|
index 0 1
about 0 2
soft 0 3
contacts 0 4
soft1 soft 1
soft2 soft 2
soft3 soft 3
phone contacts 1
adress contacts 2
Теперь если я хочу удалить страницу (например soft2). Удаляем записть и уменьшаем на единицу все позиции, которые больше текущей (в нашем случае только soft3 меняем 3 на 2)
По перемещению записей вверх вниз: присваеваем позиции минимальное (1) или максимальное значение и оставшиеся записи (которые меньше\больше нашей прошлой позиции) увеличиваем\уменьшаем на единицу.
Проблема такого подхода в том, что если мы у какой-либо записи поменяем родителя, то весьма трудно будет это отследить и выставить правильные позиции.
Одним словом, возможно это похоже на маразм)) И возможно это будет очень ресурсоемкий процесс... Ребят, если кто знает, подскажите, какие есть еще решения для организации такой сортировки.