помогите с запросом в бд mysql

Статус
В этой теме нельзя размещать новые ответы.

Runapa

Постоялец
Регистрация
30 Окт 2010
Сообщения
63
Реакции
5
Такая проблема возникла.
У меня в бд есть поле show которое имеет тип enum('yes','no').
Вопрос такой -
Как мне сделать так, чтобы при записии значения в это поле, если там стоит yes, записывалось no. А если стоит no, тогда бы записывалось yes.
Я делал примерно так.
PHP:
if (mysql_query("UPDATE tbl SET show = 'yes' WHERE id = '".$_GET['id_usr']."'"))
else{(mysql_query("UPDATE tbl SET show = 'no' WHERE id = '".$_GET['id_usr']."'"));}
Но при такой структуре первый запрос выполнялся, а второй уже нет. Вобщем нужен совет.
Спасибо.
 
  • Заблокирован
  • #2
Не силён в php, но условие не правильное.
Писать нужно так:
if (условие)
{если выполнено}
else
{если не выполнено}
 
PHP:
if ($r = mysql_fetch_array(mysql_query("select show from tbl WHERE id = '".$_GET['id_usr']."'")))
{
if ($r["show"] == "yes")
mysql_query("UPDATE tbl SET show = 'no' WHERE id = '".$_GET['id_usr']."'"); else  
mysql_query("UPDATE tbl SET show = 'yes' WHERE id = '".$_GET['id_usr']."'"); }
 
PHP:
if ($r = mysql_fetch_array(mysql_query("select show from tbl WHERE id = '".$_GET['id_usr']."'")))
{
if ($r["show"] == "yes")
mysql_query("UPDATE tbl SET show = 'no' WHERE id = '".$_GET['id_usr']."'"); else  
mysql_query("UPDATE tbl SET show = 'yes' WHERE id = '".$_GET['id_usr']."'"); }

То же самое, но попроще.

PHP:
$r = mysql_fetch_array(mysql_query("SELECT `show` FROM `tbl` WHERE `id` = '".$_GET['id_usr']."'";
$out = ($r['show'] == "yes")?'yes':'no';
mysql_query("UPDATE `tbl` SET `show` = '".$out."' WHERE `id` = '".$_GET['id_usr']."'";
 
То же самое, но попроще.
PHP:
$r = mysql_fetch_array(mysql_query("SELECT `show` FROM `tbl` WHERE `id` = '".$_GET['id_usr']."'";
$out = ($r['show'] == "yes")?'yes':'no';
mysql_query("UPDATE `tbl` SET `show` = '".$out."' WHERE `id` = '".$_GET['id_usr']."'";
Или ещё проще (аж 2 строчки!:(

PHP:
$r = mysql_fetch_array(mysql_query("SELECT `show` FROM `tbl` WHERE `id` = '".$_GET['id_usr']."'";
mysql_query("UPDATE `tbl` SET `show` = '".($r['show'] == "yes")?'yes':'no'."' WHERE `id` = '".$_GET['id_usr']."'";
 
PHP:
if ($r = mysql_fetch_array(mysql_query("select show from tbl WHERE id = '".$_GET['id_usr']."'")))
{
if ($r["show"] == "yes")
mysql_query("UPDATE tbl SET show = 'no' WHERE id = '".$_GET['id_usr']."'"); else  
mysql_query("UPDATE tbl SET show = 'yes' WHERE id = '".$_GET['id_usr']."'"); }


Спасибо. Всё работает!

А что за переменная такая - $r ?
 
Спасибо. Всё работает!
А что за переменная такая - $r ?
_(mysql_query("select show from tbl WHERE id = '".$_GET['id_usr'].")- запрос к базе выбирающий show с id, который передан через массив $_GET.
___mysql_fetch_array - помещает в $r ассоциативный массив, в качестве индекса которого - ["show"].
 
любителям "попроще" - в ваших примерах при возврате пустого результата всегда будет срабатывать второе условие, вместо того чтобы игнорировать вообще апдейт.
 
А вот так не проще?
PHP:
UPDATE tbl SET show = IF(show=='yes','no','yes') WHERE id = '".$_GET['id_usr']."'
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху