Здравствуйте, уважаемы сетчяне.
Возможно это обсуждалось, но я не нашел обсуждения..
Вопрос такой:
Есть таблица в базе mysql в которой есть поле ord_id (упорядочивание).
Как лучше написать запросы используя PHP, чтобы у двух заданных строк поменять значения этих полей?
Мне в голову пришло только лобовое решение задачи:
Ниже id - идентификатор строки которую нужно "переместить" вверх по упорядочиванию.
function orderUp($id){
$sql="select * from ".$this->dbTable." where mn_id=$id";
$res=$this->db_query($sql); $row=mysql_fetch_array($res); $ord_id=$row[\'ord_id\']; //echo $ord_id."
";
$sql="select * from ".$this->dbTable." where ord_id<=$ord_id order by ord_id desc limit 0,2";
$res=$this->db_query($sql);
$row=mysql_fetch_array($res); $ord1=$row[\'ord_id\']; $mn1=$row[\'mn_id\'];
$row=mysql_fetch_array($res); $ord2=$row[\'ord_id\']; $mn2=$row[\'mn_id\'];
$sql="update ".$this->dbTable." set ord_id=$ord2 where mn_id=$mn1"; //echo "$sql
";
$res=$this->db_query($sql);
$sql="update ".$this->dbTable." set ord_id=$ord1 where mn_id=$mn2";
$res=$this->db_query($sql);
return true;
}
Код получилося большой, понадобилость 3 обращения к базе...
Возможно ли это данную задачу можно решить каким нибудь другим, более простым способом (возможно одним обрадением к базе)?
Спасибо за внимание.