javascript — сохранение порядка отображения записей в базе данных.

Я занимаюсь разработкой веб-приложения, в котором изображения будут отображаться в слайдере. Важно, чтобы я мог изменять порядок, в котором они отображаются.

В настоящее время у меня есть столбец в таблице изображений, называемый «порядок», который должен быть установлен для обеспечения правильного порядка упорядочения, но изменение его требует также изменения любого другого, что становится сложным при работе с сотнями записей.

Эта таблица, а также запросы на ее изменение находятся в стадии разработки, поэтому вполне можно изменить способ, которым я это делаю.

Мои вопросы:

  • Когда я вставляю новую строку, как я могу убедиться, что она появляется в конце списка? Автоинкремент в SQL имеет тенденцию оставлять пропуски, если вы удаляете записи из таблицы. Как мне убедиться, что строке назначен порядок на 1 больше, чем самый высокий порядок в таблице?

  • Как мне изменить порядок столов? Представьте, что я использую интерфейс перетаскивания (или аналогичный), чтобы изменить порядок одного изображения, перенести его в верхнюю часть или другую часть списка. Если я сделаю это, мне нужно сбросить нумерацию каждого элемента, что опять-таки неэффективно при работе с сотнями строк.

  • Как не допустить, чтобы две строки имели одинаковый порядок в любой момент времени? УНИКАЛЬНЫЙ флаг на столбце? Предположительно, если я установлю этот флаг, изменение порядка, скажем, 8 в одном ряду откроет другой, чтобы использовать этот номер. Правильно?

Спасибо за ваше время, и я надеюсь, что это не слишком расплывчатый вопрос, на который легко ответить!

3

Решение

  1. Это будет в конце списка. Просто используйте auto increment особенность и не устанавливайте ID вручную (например, lastID + 1) и вы никогда не описали проблему.

  2. Вы можете позволить пользователю изменить порядок списка, а затем просто обновить все order ячейки (для каждого члена списка). Или вы можете использовать Ajax и обменять order значение для двух членов каждый раз, когда пользователь перетаскивает.

  3. Используйте один из подходов, описанных в 2, и у вас никогда не возникнет этой проблемы.

1

Другие решения

  1. Запросите таблицу, в которую вы собираетесь вставить, чтобы найти MAX ID в таблице. Тогда на вашей вставке просто сделайте это +1.

  2. При повторном заказе, скажем, вы хотите установить порядок изображений 6 в порядок 3. Вы хотите обновить все строки от порядка 3 и далее до порядка + 1, а затем установить изображение на порядок 3.

UPDATE table SET id = id+1 WHERE id IN (SELECT * FROM table where id >= 3)

  1. Если вы используете уникальное значение в столбце заказа для переупорядочения, вам придется обновить текущее значение до временного значения, такого как 99999, а затем использовать метод из 2. Однако метод 2 должен помешать этой таблице получать дублирующиеся значения.

Примечание

Вы можете при удалении картинки переоценить идентификаторы, чтобы не было пробелов

UPDATE table SET id = id-1 WHERE id IN (SELECT * from TABLE WHERE id > 3)

Где 3 — удаленный идентификатор

3

По вопросам рекламы [email protected]