Составить алгоритм для сохранения порядка строк ( SQL + PHP )
Задана следующая структура таблицы:
id | name | position
Вывод таблицы всегда сортируется по столбцу position (ASC)
3 Яблоко 1
1 Апельсин 2
4 Груша 3
5 Арбуз 4
2 Персик 5
Предположим, строку Персик мы захотели передвинуть на 1 позицию вверх.
Соответственно position у нее изменится на 4, а у арбуза на 5.
3 Яблоко 1
1 Апельсин 2
4 Груша 3
2 Персик 4
5 Арбуз 5
Задача.
Составить алгоритм (можно псевдо код на PHP) для сохранения нового порядка строк.
Предполагается, что на входе алгоритма мы имеем следующие данные:
ID передвинутой строки (в случае с персиком это 2 )
ID следующей строки (в данном случае следует арбуз, т.е. 5 )
ID предыдущей строки (в данном случае предшествует груша, т.е. 4 )
В алгоритме должны быть SQL запрос(ы).
Предусмотреть все варианты передвижения любой строки на любое место, т.е. возможны случаи, когда будут известны только два параметра.
(например, если бы захотели передвинуть яблоко в самый низ, т.е. не будет ID следующей строки.)
P.S.
Т.е. в конечном счете следует сделать обновление столбца position.
При этом значение MAX position должен равняться MAX значению ID (например, чтобы не было position = 6, когда всего 5 строк)