Я столкнулся с проблемой кодирования моей следующей функции. Я хочу, чтобы пользователь имел возможность переупорядочивать записи и изменять значение 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 );