Пожалуйста, помогите найти ошибку в коде (UPDATE)

atran

Новичок
Пожалуйста, помогите найти ошибку в коде (UPDATE)

Собственно я уже недавно обращался сюда, но тогда ошиюка была в синтаксисе кода - теперь же проблемма в запросе

PHP:
// Значения передаются по GET

$table = $_GET['table'];
$id = $_GET['id'];

if($_GET['pos'] == "up") $new_id = $id + 1;
elseif($_GET['pos'] == "down") $new_id = $id - 1;
else { print "Ошибка "; exit(); }



$o = mysql_query("SELECT dir_gal FROM $table ");
$m1 = mysql_result($o, $id); // Выдается значение dir_gal второй строки new_id
$m2 = mysql_result($o, $new_id);  // Выдает значение dir_gal строки - id

 $query ="UPDATE $table SET gal_pos=".$id." WHERE dir_gal=".$m1."";
 $query2 ="UPDATE $table SET gal_pos=".$new_id." WHERE dir_gal=".$m2."";


if(mysql_query($query) && mysql_query($query2))  print "ОК";
else print "Ошибка";

Сам по себе код работает, но не правильно - к примеру:
Есть две строки

id - gal_pos=0, dir_gal=qw
new-id - gal_pos=1, dir_gal=zxc

В первый раз все нормально работает -
id - gal_pos=0, dir_gal=qw
new-id - gal_pos=1, dir_gal=zxc

А вот когда еще раз меняешь местами - то уже ничего не происходит (хотя хапрос выполняется...


А вот когда больше строк D lв данном случаи 3) совсем, что-то странное начинается -
id - gal_pos=0, dir_gal=qw
new-id - gal_pos=1, dir_gal=zxc
третья строка - gal_pos=2, dir_gal=thg

После нажатия (смены id и new_id)
id - gal_pos=1, dir_gal=qw
new-id - gal_pos=1, dir_gal=zxc
третья строка - gal_pos=0, dir_gal=thg


Так вот не понятно почему запрос как бы пересккивает на другие строки ... ну вот вроже бы все расказал ... Укажите, где я допустил ошибку ...
 

atran

Новичок
Вот, наконец, сделал рабочий код (Про WHERE было "не строгим" и Rsult не те брались )....

PHP:
ini_set('display_errors',1);
error_reporting(E_ALL);


if(isset($_GET['table']) && isset($_GET['id'])  && isset($_GET['pos'])) {
$table = $_GET['table'];
$id = $_GET['id'];

if($_GET['pos'] == "up") $new_id = $id + 1;
elseif($_GET['pos'] == "down") $new_id = $id - 1;
else { print "Ошибка "; exit(); }



$o1 = mysql_query("SELECT * FROM $table WHERE gal_pos='$id' ");
$m1 = mysql_fetch_array($o1);

$o2 = mysql_query("SELECT * FROM $table WHERE gal_pos='$new_id' ");
$m2 = mysql_fetch_array($o2);

print "$id : ".$m1['gal_pos']." - ".$m1['dir_gal']."<br>";
print "$new_id : ".$m2['gal_pos']." - ".$m2['dir_gal']."<br>";





 $query1 ="UPDATE $table SET gal_pos=".$new_id." WHERE dir_gal=".$m1['dir_gal']." AND id_gal=".$m1['id_gal']." ";
 $query2 ="UPDATE $table SET gal_pos=".$id." WHERE dir_gal=".$m2['dir_gal']." AND id_gal=".$m2['id_gal']." ";






if(mysql_query($query1) && mysql_query($query2))  print "<font color=green><b><div align=center style='background-color: #E7FFE1; width: 100;'>Исправлено</div></b></font><div>Через секунду вас переместят …</div><meta http-equiv=Refresh content=1;URL=".$_SERVER['HTTP_REFERER'].">";
else print "<font color=red><b><div align=center style='background-color: #FFD2D2; width: 100;'>Ошибка</div></b></font>";


tr , спасибо за напутствие :)


Да. кстати, когда добавляю кавычки - то сразу перестает работать ...странно
 

Фанат

oncle terrible
Команда форума
http://phpfaq.ru/na_tanke#achtung
http://phpfaq.ru/debug#knowwhat
фтыкать до просветления.

-~{}~ 18.10.06 10:33:

вот это -
print "<font color=green><b><div align=center style='background-color: #E7FFE1; width: 100;'>Исправлено</div></b></font><div>Через секунду вас переместят …</div><meta http-equiv=Refresh content=1;URL=".$_SERVER['HTTP_REFERER'].">";
ГЛУПОСТЬ несусветная
 
Сверху