Изменение порядка записей с передней стороны

Я столкнулся с проблемой кодирования моей следующей функции. Я хочу, чтобы пользователь имел возможность переупорядочивать записи и изменять значение display_order. Я использую JQuery UI draggable и droppable, чтобы облегчить это.

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

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

Я, хотя, возможно, использую значение, например, 3.000 для представления порядка, а затем, когда я хочу сделать запись, занять ее место, сделайте ее значение 3 – 0,001, поэтому его 2,999 и будет сортировать от 2 до 3. Но я вижу, что многие вещи ошибочны с этой идеей и не кажется хорошим путем следовать.

Спасибо за любой вклад!

  • добавьте столбец сортировки в таблицу, smallint , mediumint или int зависимости от ожидаемого количества mediumint записей
  • Добавлена ​​новая запись до конца, max(sorting) + 1
  • при переупорядочивании элемента, получить новую позицию, в которой он находится, и соответственно изменить более высокие записи сортировки:

    mysql_query('UPDATE yourTable set sorting = '.$yourNewposition.' where id='.$yourUniqueId .' LIMIT 1');

    mysql_query('UPDATE yourTable set sorting = sorting + 1 where sorting >= '.$yourNewposition.' AND id != '.$yourUniqueId );