Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите составить запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Из почтовой формы берутся две переменные. Из БД запрашиваются все данные по двум соответствующим полям.
v210270
Отправлено: 19 Июня, 2011 - 22:36:18
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Народ, помогите!
Что-то совсем ничего не понимаю.
Есть две переменные (допустим $dog_name и $dog_surname)
В БД есть две соответствующие колонки dog_name и dog_surname/
Делаем выборку в БД по этим двум колонкам
Надо сравнить переменные с данными в массиве из БД.
В случае совпадения - выдать echo с соответствующей надписью,
В случае несовпадения - отправить переменные в БД через Insert/
У меня вышло вот так, но все время выдает эхо как на совпадение, хотя этого не может быть:
$query = mysql_query("SELECT * FROM data_dog WHERE dog_name AND dog_surname") or die(mysql_error());
$res=mysql_fetch_array($query);$allsqls++;
$sr=("$dog_name; $dog_surname");
if($res<$sr)
{echo "Собака с таким сочетанием клички и заводской приставки уже есть в базе.";
include('pre_add.html'); exit();
}
(Если меняем < на > или = выходит обратный результат - проверяет, но вносит запись, несмотря на то, что она уже присутствует)
else {
$sql = "INSERT INTO data_dog (dog_name, dog_surname, dog_born, dog_sex, dog_color, dog_number, dog_tatoo, dog_cheep, dog_person, dog_person_adress,
dog_factory, dog_factory_adress, dog_name_fath, dog_name_math, dog_surname_fath, dog_surname_math) VALUES('$dog_name','$dog_surname','$dog_born','$dog_sex',
'$dog_color', '$dog_number', '$dog_tatoo', '$dog_cheep', '$dog_person', '$dog_person_adress', '$dog_factory', '$dog_factory_adress', '$dog_name_fath', '$dog_name_math',
'$dog_surname_fath', '$dog_surname_math')";
mysql_query($sql) or die(mysql_error());$allsqls++;?>
Как выйти из положения? Наверное что-то не так делаю?
 
 Top
OrmaJever
Отправлено: 19 Июня, 2011 - 22:42:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




v210270 пишет:
WHERE dog_name AND dog_surname

и с чем мы их тут сравниваем?
должно быть както так
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE dog_name = '$dog_name' AND dog_surname = '$dog_surname'


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
v210270
Отправлено: 19 Июня, 2011 - 22:50:31
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




OrmaJever пишет:
v210270 пишет:
WHERE dog_name AND dog_surname

и с чем мы их тут сравниваем?
должно быть както так
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE dog_name = '$dog_name' AND dog_surname = '$dog_surname'

С удовольствием, но что-то не идет дальше. Все равно выдает, что запись присутствует, хотя ее физически нет в БД
 
 Top
Toxa
Отправлено: 19 Июня, 2011 - 22:51:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


Вы все делаете не так.
Во-первых: научитесь правильно оформлять код, иначе никто ваши сообщения читать не будет.
Во-вторых:
Если я правильно понял, то задача достаточно тривиальна: получаем от пользователя (или еще откуда-то) имя и фамилию собаки, проверяем на уникальность и в соответствии с результатом выполняем какие-либо действия.

Итак, допустим имя и фамилия хранятся в переменных $dog_name и $dog_surname соответственно, в этом случае запрос на уникальность будет таким:
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT * FROM data_dog WHERE dog_name='$dog_name' AND dog_surname='$dog_surname'") or die(mysql_error());
  2. // Далее смотрим, если результат выборки не пустой,
  3. // то очевидно эти имя и фамилия заняты!
  4. if(mysql_num_rows($query) !== 0) {
  5.    echo "Собака с таким сочетанием клички и заводской приставки уже есть в базе.";
  6.    include('pre_add.html');
  7.    exit();
  8. } else {
  9.    // Здесь вставляем в базу
  10. }
  11.  


-----
Удобный сервис для хранения файлов
 
 Top
OrmaJever
Отправлено: 19 Июня, 2011 - 22:52:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




v210270 пишет:
$sr=("$dog_name; $dog_surname");
if($res<$sr)

что это за строка? Что это за условие? А?!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
v210270
Отправлено: 19 Июня, 2011 - 22:53:41
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




v210270 пишет:
OrmaJever пишет:
v210270 пишет:
WHERE dog_name AND dog_surname

и с чем мы их тут сравниваем?
должно быть както так
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE dog_name = '$dog_name' AND dog_surname = '$dog_surname'

С удовольствием, но что-то не идет дальше. Все равно выдает, что запись присутствует, хотя ее физически нет в БД

Я ж говорю - глаз замылился. Поменял на if($res>=1) и все нормально.
За помосчь спс!!
 
 Top
Toxa
Отправлено: 19 Июня, 2011 - 22:55:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


v210270, прочитайте мое сообщение повнимательней, пожалуйста


-----
Удобный сервис для хранения файлов
 
 Top
v210270
Отправлено: 19 Июня, 2011 - 22:58:59
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Toxa пишет:
Вы все делаете не так.
Во-первых: научитесь правильно оформлять код, иначе никто ваши сообщения читать не будет.

Не боги горшки обжигают...
Цитата:
Во-вторых:

if(mysql_num_rows($query) !== 0)

Согласен - можно и так. Наверное просто устал. Да и недостаток практики сказывается.
Но все равно всем спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB