У меня есть таблица с 20 строками, каждая с номером для порядка отображения (1-20).
SELECT * FROM `mytable` ORDER BY `display_order` DESC;
Из административной области вы можете перетаскивать строки или вводить новое число вручную для каждой строки.
Конечно, не следует зацикливаться на запросе ОБНОВЛЕНИЯ для каждой строки, что является альтернативой в одном или нескольких запросах, подходящих для обновления одной ячейки в 20 или более строк, 50-200+?
Редактировать: Много хороших отзывов и идей. Я мог бы расширить идеи, которые я рассматривал до сих пор:
Одна строка массива : Я мог бы иметь порядок в строке, содержащей уникальные идентификаторы строк в нужном мне порядке - например, строки 1,9,2,6,23. Когда заказ обновляется, скрытое поле обновляется с помощью JavaScript и добавляет его в базу данных или текстовый файл по завершении:
UPDATE `my_dispaly_order_table` SET `display_order`='1,9,2,6,23';
Обновлять каждую строку по отдельности : это то, чего я пытался избежать, но это можно было изменить очень редко, поэтому 20-30 вызовов в одном обращении один раз в неделю или месяц не могли бы быть проблемой, так просто я обычно делаю вызов UPDATE для каждой строки:
UPDATE `mytable` SET `display_order`='1' WHERE `rowId` = 1;
UPDATE `mytable` SET `display_order`='2' WHERE `rowId` = 9;
UPDATE `mytable` SET `display_order`='3' WHERE `rowId` = 2;
UPDATE `mytable` SET `display_order`='4' WHERE `rowId` = 6;
UPDATE `mytable` SET `display_order`='5' WHERE `rowId` = 23;