Автор Тема: КАк взаимно поменять значения столбцов у двух строк?  (Прочитано 2374 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tigranav

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tigranav.net
Здравствуйте, уважаемы сетчяне.

Возможно это обсуждалось, но я не нашел обсуждения..
Вопрос такой:
Есть таблица в базе 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 обращения к базе...
Возможно ли это данную задачу можно решить каким нибудь другим, более простым способом (возможно одним обрадением к базе)?

Спасибо за внимание.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28