Как пересортировать строки в mysql таблице?

Делаю админку. Вывожу список значений из таблицы в порядке `id`.
Использую jquery-UI sortable. Можно переставлять местами строки и отправить форму.

Получаю $_POST массив, в котором лежит список `id` в нужном порядке.
Например: [12, 119, 6, 9]

Теперь мне нужно сделать запрос на UPDATE. Нужно изменить `id` строкам, чтобы при запросе ORDER BY `id` они возвращались в порядке, указанном в этом массиве...

Для примера:

Было в таблице mySql:

id | value
----------------
6 | BMW
9 | Audi
12 | Opel
119 | VW

Получили $_POST массив [12, 119, 6, 9]

Значит нужно сделать:
6 | Opel
9 | VW
12 | BMW
119 | Audi

Как вариант, - удалять их и вставлять заново... но должно быть что-то красивее... :)
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Fernus
@Fernus
Техник - Механик :)
Получили $_POST массив [12, 119, 6, 9]


Может так попробовать?

SELECT `id`, `value`
FROM `table`
ORDER BY 
    CASE `id`
        WHEN 12 then 1
        WHEN 119 then 2
        WHEN 6 then 3
        WHEN 9 then 4
        ELSE NULL
    END
ASC


Сформировать запрос средствами PHP сможешь же?

P.S.: Всё что не окажется в $_POST...окажется в начале списка...но тут можно добавить и условие для выборки, например:

SELECT `id`, `value`
FROM `table`
WHERE `id` IN(12,119,6,9)
ORDER BY 
    CASE `id`
        WHEN 12 then 1
        WHEN 119 then 2
        WHEN 6 then 3
        WHEN 9 then 4
        ELSE NULL
    END
ASC


Делаю админку. Вывожу список значений из таблицы в порядке `id`.
Использую jquery-UI sortable. Можно переставлять местами строки и отправить форму.

Если это задумано для дальнейшего вывода потом "где-то" в том порядке, в котором указали...то логичнее добавить поле в таблицу, например "sort"...в него записывать порядковый номер из списка, который натусовал пользователь в админке...и далее просто ORDER BY `sort`...
Не?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы