За последние 24 часа нас посетили 17505 программистов и 1650 роботов. Сейчас ищут 895 программистов ...

Проверка существования заказа в бд

Тема в разделе "PHP для новичков", создана пользователем Magnum, 2 сен 2016.

  1. Magnum

    Magnum Активный пользователь

    С нами с:
    19 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    И снова здравствуйте, мастера. Копался в скрипте, и пытался немного добавить ему функционала. Суть скрипта: автор создает тему, в ней оставляют комментарии, и у автора есть возможность выбора лучшего поста. Пост можно выбрать только один, и целесообразно ли так проверять (делать несколько таких проверок). Просто так потом может 100500 запросов на одну страницу быть
    Написано, только на обычно mysql, так что сильно не ругайте:cool:

    PHP:
    1. $id = intval($_GET['id']);
    2. $zakaz_uid = mysql_result(mysql_query("SELECT `who` FROM `zakaz` WHERE `id` = '$id' LIMIT 1"), 0);
    3.  
    4. if(isset($_GET['executor']) && $user['id'] == $zakaz_uid) {
    5.     $zid = intval($_GET['zid']);
    6.     //если нажата кнопка выбор исполнителя, и id пользователя = id заказчика
    7.     //если такая заявка существует
    8.     $check_zayavka = mysql_result(mysql_query("SELECT COUNT(id) FROM `zayavka` WHERE `id` = '$zid'"), 0);
    9.     //если исполнитель не выбран
    10.     $check_executor = mysql_result(mysql_query("SELECT COUNT(id) FROM `zayavka` WHERE `id` = '$zid' AND `status` = '2'"), 0);
    11.     if($check_executor == '0' AND $check_zayavka != '0') {
    12.         mysql_query("UPDATE `zayavka` SET `status` = '2' WHERE `id` = '$zayavka'");
    13.         header('Location: index.php');
    14.         exit;
    15.     } else echo 'Ошибка';
    16. }
    Спасибо за внимание
     
    #1 Magnum, 2 сен 2016
    Последнее редактирование: 2 сен 2016
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    два раза зачем?
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    1. Не совсем понятно... у каждой заявки свой уникальный id в таблице.... Зачем ты дополнительно вызываешь count, всегда же будет 1.
    Код (Text):
    1. $check_zayavka = mysql_result(mysql_query("SELECT COUNT(id) FROM `zayavka` WHERE `id` = '$zid'"), 0);
    2. А нельзя в запросе
    Код (Text):
    1. $check_zayavka = mysql_result(mysql_query("SELECT COUNT(id) FROM `zayavka` WHERE `id` = '$zid'"), 0);
    Получить значение статуса и в пхп проверить это значение? o_O Тогда не нужен будет второй запрос в базу.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прочитай про инъекции
    --- Добавлено ---
    а нельзя ли хранить выбранный ответ в поле в заявке и всё. он всегда будет гарантированно один.