Двигаем при выводе строчки в таблице друг относительно друга
Часто встречается ситуация, когда необходимо вручную устанавливать порядок вывода записей в некоем списке. То есть клиент должен иметь возможность двигать строчки вверх-вниз друг относительно друга. Некоторые "программисты" изобретают для этого сложнейшие велосипеды. На самом же деле сделать это очень просто. Просто создаем дополнительное поле `customorder`, которое по умолчанию равно `id` (в случае, усли `id` не auto_increment, можно его ставить в (MAX(`customorder`) + 1)). Затем используем вот такую простую функцию:
-
function move_line($id, $up) {
-
FROM `thetable`
-
FROM `thetable`
-
WHERE `customorder` '.($up ? '<' : '>').' '.$o.'
-
ORDER BY `order` '.($up ? 'DESC' : 'ASC').'
-
LIMIT 1');
-
SET `customorder` = '.$no.'
-
WHERE `id` = '.$id);
-
SET `customorder` = '.$o.'
-
WHERE `id` = '.$nid);
-
}
-
} // move_line
И да, я знаю, что это можно сделать меньшим количеством запросов. Но так нагляднее :).

