Помогите построить update

dimnast

Guest
Помогите построить update

Есть таблица товаров, где каждый товар имеет свой идентификатор mesto. Необходимо сделать возмоность менять товар местами.
Я написал такой код оброботки:

if($_GET['mesto']) {
$TableName="price";
$mesto=$_GET['mesto'];
if($mesto>0) {
$Link=mysql_connect($Host,$User,$Password);
$Query="update $TableName set mesto=$mesto-1 where mesto=$mesto";
mysql_db_query($DBName,$Query,$Link);
header("Location:index.php");
}
}
Однако в этом коде товар с номером 2 получает значение 1, а товар с номером 1 остается с тем же значением, то есть имеем 2 товара с номером 1.
Помогите сделать двойной update!! Может у кого есть идеи относительно оптимизациии кода?
 

Фанат

oncle terrible
Команда форума
кроме места, надо ещё иметь уникальный идентификатор товара.
тогда всё получится..
 

dimnast

Guest
Фанат

Идентификатор товара есть, а как построить двойной апдейт?
 

Фанат

oncle terrible
Команда форума
осподи.
насколько я понял, ты меняешь местами.
то есть, в форме ты выбираешь товар, который надо переместить, и товар - на чьё место?
ну так передавай айди и место и того и другого.
а в скрипте два запроса
 

dimnast

Guest
проблема в том, что я не выбираю на чье место и даже не использую форму. Если бы была форма, то это понятно. В системе есть кнопка - перемещение на позицию вниз, то есть стоящие рядом товары обмениваються местами. Идет двойной обмен, из которого я могу написать только первую половину.
$Query="update $TableName set mesto=$mesto-1 where mesto=$mesto"; А как второму товару присвоить первоначальное значение первого?
 

Фанат

oncle terrible
Команда форума
осподи!
СНАЧАЛА достать айди товара со старым местом,
выполнить твой запрос, а потом поправить место у полученного айди.
 

Фанат

oncle terrible
Команда форума
какой именно элемент у тебя не получается?
ты можешь выполнить запрос селект и получить значение?
если умеешь - возьми, да выполни.
тебе надо получить айди товара, у которого место равно $mesto-1
ты в состоянии это сделать? Если нет - купи книжку по пхп и учись работать с базами данных.
дальше выполняй свой запрос.
а дальше - ещё один апдейт, похожий, только в условии вхере указываешь не место, а айди
 

dimnast

Guest
Фанат

// со страницы редактирования получаю id товара и его место ( то, что надо изменить)
if($_GET['id'] && $_GET['mesto']) {
$TableName="price";
$id=$_GET['id'];
$mesto=$_GET['mesto'];
// получаем из БД айди товара с местом $mesto-1
$Link=mysql_connect($Host,$User,$Password);
$Query1="select * from price where mesto=$mesto-1";
$Row=mysql_db_query($DBName,$Query1,$Link);

//товару с местом $mesto присваиваем $mesto-1
$Query="update $TableName set mesto=$mesto-1 where
id=$id";
//товару с местом $mesto-1 присваиваем $mesto
$Query2="update $TableName set mesto=$mesto where id=$Row[id]";

mysql_db_query($DBName,$Query,$Link);
mysql_db_query($DBName,$Query2,$Link);

header("Location:index.php");
}

Я правильно тебя понял?
 
Сверху