У меня есть таблица с 20 строками, каждая с номером для порядка отображения (1-20).
SELECT * FROM `mytable` ORDER BY `display_order` DESC;
Из области администрирования вы можете перетаскивать строки вокруг или вводить новый номер вручную для каждой строки.
Конечно, нехорошо зацикливать запрос UPDATE для каждой строки, что альтернатива в одном или нескольких запросах, подходящих для обновления одной ячейки в 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;