На ввод, т.е. задача сохранять элементы в новом порядке, а не выводить. Не помню, писал или нет, но повторюсь. Сейчас у меня так:
PHP:
public function savesort($posArr) {
$possTmp = array();
foreach ($posArr as $k => $v) {
$possTmp[] = "(" . (int)$v . "," . (int)$k . ")";
}
mysql_query("insert into `" . $this->tableName . "` (`id`, `pos`) values " . implode(", ", $possTmp) . " on duplicate key update `pos` = values(`pos`)");
return true;
}
Соответственно, jQuery посылает серверу перечень айдишников в нужном порядке. Способ не плох, но нужно постоянно следить, чтобы в списке не было удаленных айдишников, иначе элементы создадутся вновь
Второй способ, это связанный список. Тогда jQuery будет посылать только айди старого соседа перемещаемого элемента и айди нового соседа. Правда эти айди еще нужно вычислить, но это уже проблема клиента. Сохранение на сервере в этом случае подразумевает вычисление столбца order, как WMix писал.
А задача сортировки подразумевает как изменение порядка одного элемента, так и группы (задача максимум).