Порядок записи MySQL

0

В одном из моих текущих проектов у меня есть элемент формы выпадающего списка (select). Я заполняю параметры с помощью массива (PHP):

$regions=array(
    1=>'North West',
    2=>'North East',
    3=>'South West',
    4=>'South East',
);

(массив key = значение параметра, значение массива = текст опции)

Теперь это дает мне возможность переустановки параметров по своему усмотрению.

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

То, что это также означает, заключается в том, что нет простого способа (а не того, что я знаю) помещать записи в пользовательский порядок.

Предположим, что я создаю таблицу регионов, которая включает поле sort_order. Кто-нибудь знает какие-либо решения, которые позволят клиенту переупорядочить записи из интерфейса с помощью простых кнопок вверх/вниз?

Теги:

4 ответа

1
Лучший ответ

Единственный способ представления упорядочения в реляционной базе данных - это указать поле, которое определяет порядок, как вы сказали в поле sort_order.

В вашем интерфейсе администратора вы можете заставить кнопки вверх/вниз запускать функцию JavaScript (предполагая веб-приложение), которая будет проходить через вновь упорядоченные регионы и назначать инкрементное целое каждому. Это целое число может быть присвоено скрытому полю для каждого региона и отправлено с данными полной формы при сохранении изменений.

После публикации формы вы можете просто вставить/обновить записи в базе данных с полем sort_order, поскольку оно было рассчитано на стороне клиента.

Получение упорядоченного набора результатов из базы данных обычно довольно просто:

SELECT * FROM your_table ORDER BY sort_order;
  • 0
    Я доволен фактическим обновлением поля порядка сортировки, но мне было интересно, есть ли какие-либо "готовые" решения, которые предоставляют графический интерфейс для перемещения записей вверх и вниз и определения значения порядка сортировки. Может быть, что-то на основе JQuery?
  • 2
    Я бы посмотрел на сортировку jQuery. Я думаю, что примеры имеют именно такой тип ситуации.
Показать ещё 1 комментарий
1

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

create table regions {
  id int primary key,
  name varchar(255) not null,
  sortorder int not null
};

Чтобы получить значения в порядке сортировки, выполните select id,name from regions order by sortorder Если вы хотите, чтобы отображаемый заказ находился на северо-востоке, юго-востоке, северо-западе, юго-западе, ваш стол будет содержать:

id    name         sortorder
1     North West   3
2     North East   1
3     South West   4
4     South East   2

Ваш графический интерфейс просто обновляет столбец сортировки на основе порядка, который пользователь упорядочивает.

1

Извините - нет.
Вы правильно используете столбец sort_order...

Некоторые могут предлагать использовать интервалы, такие как 10 - IE: 10, 20, 30... поэтому вы можете вставлять их между ними. Но в какой-то момент схема должна быть правильно перегруппирована...

Подходом "выжженной земли" является удаление существующих строк и назначение порядка сортировки на основе порядка в пользовательском интерфейсе для вновь вставленных строк.

0

Только с четырьмя вариантами я бы использовал поле списка HTML, чтобы показать четыре элемента, а также кнопку вверх/вниз, которая позволяет их переупорядочивать. Пример этого можно найти здесь.

Когда элементы переупорядочиваются, обновите значение скрытого поля, чтобы сохранить текущий порядок.

Когда форма отправляется на сервер, проанализируйте значение скрытого поля и обновите столбец sort_order для каждого элемента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню