даже не знаю как назвать это - смена порядка короче...
agat 25.08.2006 18:27
Знаю, что задача самая простая, но под конец рабочего дня никак не могу решить ее, а надо выполнить план.
Есть записи в БД с полем order_position - порядковый номер, определяющий номер записи при выводе списка записей. Вот при добавлении новой записи есть возможность выбора позиции - после 1-ой записи, после 2-ой записи и т.д.
Задача - как прописать правильно порядковый номер, если такой номер уже есть?
Т.е. алгоритм примерно такой:
1. пришел запрос на 3-ью позицию.
2. если такая позиция уже есть, нужно сместить запись с третьей позиции на 4, и добавить новю запись с позицией 3.
Тут нужно организовать рекурсию, т.к. у смещаемой записи новая позиция, на которую смещается запись - может быть занята. Ее тоже надо сместить, и так до последней позиции.
@reorder[position]
$record[^pSQL.table{
SELECT
order_position
FROM
groups
WHERE
order_position = $position
}]
^if($record){
^reorder[^eval($position - 1)]
$result[^pSQL.void{
UPDATE
groups
SET
order_position = $position
WHERE
order_position = ^eval($position - 1)
}]
}
такой вариант прописывет во всех строках последнюю позицию.
Подскажите как нужно правильно сделать? Туплю неимоверно...
- даже не знаю как назвать это - смена порядка короче..., agat 25.08.2006 18:27