Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не отрабатывает проверка, Как проверять выбралось что-то из базы 
:(
    Опции темы
FightInGlory
Дата 2.12.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Вношу данные в базу и надо сверить данные, есть ли такой номер(number) в таблице данных номеров(nomera). Проверяется его статус если статус равен 1 то номер свободен и происходит добавление данных, если же нет, то выдает что номер занят. Код работает так, что данные всегда добавляются, в независимости от статуса.
Код

if (isset($name) && isset($surname) && isset($phone) && isset($pasport) && isset($address) && isset($entryDate) && isset($exitDate) && isset($number))
{
   $sql = "insert into klient (name,surname,pasport,phone,address,entryDate,exitDate,number) values ('$name','$surname','$pasport','$phone','$address','$entryDate','$exitDate','$number')";
   $result = mysql_query($sql);
   $sqll = "select number from nomera where number='$number' and status = 1 ";
   $results = mysql_query($sqll);
      if ($results == 'true')
      {
         if ($result == 'true') 
         {
            mysql_query("update nomera set status = 2 where number='$number'");
            echo "<p>Данные добавлены!</p><form action='index.php'><button>Назад</button></form>";
         }
         else {echo "<p>Данные не добавлены!</p><form action='index.php'><button>Назад</button></form>";}
      }
      else {echo "<p>Этот номер занят!</p><form action='index.php'><button>Назад</button></form>";}    
}
else {echo "<p>Вы не заполнили все поля!</p><form action='index.php'><button>Назад</button></form>";}


Это сообщение отредактировал(а) FightInGlory - 2.12.2009, 10:40
PM MAIL   Вверх
Ипатьев
Дата 2.12.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



почитайте в описании mysql_query из документации, какие значения она возвращает, и в каких случаях.
PM MAIL   Вверх
FightInGlory
Дата 2.12.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Если запрос прошел удачно то возвращает 0.
PM MAIL   Вверх
MoLeX
Дата 2.12.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140



FightInGlory, не верный подход
Код

   $sqll = "select number from nomera where number='$number' and status = 1 ";
   $results = mysql_query($sqll);
      if ( mysql_num_rows($results) == 0 )
      {
            if( mysql_query("update nomera set status = 2 where number='$number'") )
               echo "<p>Данные добавлены!</p><form action='index.php'><button>Назад</button></form>";
            else
               echo "<p>Данные не добавлены!</p><form action='index.php'><button>Назад</button></form>";
      }
      else {echo "<p>Этот номер занят!</p><form action='index.php'><button>Назад</button></form>";}    


Добавлено @ 11:44
Цитата(mysql_query)

Посылает запрос MySQL


Цитата(mysql_num_rows)

Возвращает количество рядов результата запроса


Добавлено @ 11:46
Код

            if( mysql_query("update nomera set status = 2 where number='$number'") )
               echo "<p>Данные добавлены!</p><form action='index.php'><button>Назад</button></form>";

может данные обновлены?!

Это сообщение отредактировал(а) MoLeX - 2.12.2009, 11:47


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
FightInGlory
Дата 2.12.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Проверят вот этот запрос на результат не надо?
Код

$sql = "insert into klient (name,surname,pasport,phone,address,entryDate,exitDate,number) values ('$name','$surname','$pasport','$phone','$address','$entryDate','$exitDate','$number')";
$result = mysql_query($sql);


Цитата

может данные обновлены?!


В том то и дело что происходит внесение данных в таблицу klient и обновление данных в таблице nomera, т.е. обновляется статус того номера, который ввел клиент.
PM MAIL   Вверх
FightInGlory
Дата 2.12.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Все сделал, всем большое спасибо. Понятное дело, что код желает лучшего, но работает вроде правильно.
Код

if (isset($name) && isset($surname) && isset($phone) && isset($pasport) && isset($address) && isset($entryDate) && isset($exitDate) && isset($number))
{ 
   $sqll = "select number from nomera where status = 1 and number='$number'";
   $results = mysql_query($sqll);
      if ( mysql_num_rows($results) != 0 )
      {  
          $sql = "insert into klient (name,surname,pasport,phone,address,entryDate,exitDate,number) values ('$name','$surname','$pasport','$phone','$address','$entryDate','$exitDate','$number')";
          $result = mysql_query($sql);
          if($result == 'true')
              {
                 mysql_query("update nomera set status = 2, date = '$exitDate' where number = '$number'");
                 echo "<p>Данные добавлены!</p><form action='index.php'><button>Назад</button></form>";
              }
      }
     else 
     {
        echo "<p>Этот номер занят! Данные не добавлены!</p>";
        $resultd = mysql_query("select date from nomera where number='$number'");
        $row = mysql_fetch_array($resultd);
        echo "<p>Номер освободится: </p>";
        echo $row["date"];
        echo "<form action='index.php'><button>Назад</button></form>";
     }
}
else {echo "<p>Данные не добавлены!</p><form action='index.php'><button>Назад</button></form>";} 

PM MAIL   Вверх
BobiKK
Дата 2.12.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: нет
Всего: 16



Сработало разик - не значит правильно.

Код

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. 
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error. 


if($result == 'true') - это неравильно. mysql_query() никогда в жизни не вернет строку.
Правильнее:
if ($result != FALSE) или просто if ($result)
PM MAIL   Вверх
Ипатьев
Дата 2.12.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



Цитата(FightInGlory @  2.12.2009,  11:39 Найти цитируемый пост)
Если запрос прошел удачно то возвращает 0. 

Это вы в документации такое прочли?

Это сообщение отредактировал(а) Ипатьев - 2.12.2009, 14:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.