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

Тема в разделе "Базы данных", создана пользователем Runapa, 14 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Runapa

    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. qaim

    qaim Читатель

    Заблокирован
    Регистр.:
    12 май 2010
    Сообщения:
    84
    Симпатии:
    3
    Не силён в php, но условие не правильное.
    Писать нужно так:
    if (условие)
    {если выполнено}
    else
    {если не выполнено}
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    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']."'"); }
     
  4. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    239
    Симпатии:
    65
    То же самое, но попроще.

    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']."'";
     
  5. qePH

    qePH Писатель

    Регистр.:
    8 ноя 2010
    Сообщения:
    2
    Симпатии:
    0
    Или ещё проще (аж 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']."'"
     
  6. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5

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

    А что за переменная такая - $r ?
     
  7. BSunV

    BSunV

    Регистр.:
    8 окт 2008
    Сообщения:
    186
    Симпатии:
    45
    _(mysql_query("select show from tbl WHERE id = '".$_GET['id_usr'].")- запрос к базе выбирающий show с id, который передан через массив $_GET.
    ___mysql_fetch_array - помещает в $r ассоциативный массив, в качестве индекса которого - ["show"].
     
  8. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    любителям "попроще" - в ваших примерах при возврате пустого результата всегда будет срабатывать второе условие, вместо того чтобы игнорировать вообще апдейт.
     
  9. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    А вот так не проще?
    PHP:
    UPDATE tbl SET show = IF(show=='yes','no','yes'WHERE id '".$_GET['id_usr']."'
     
Статус темы:
Закрыта.