За последние 24 часа нас посетили 17874 программиста и 1697 роботов. Сейчас ищут 1622 программиста ...

Проверка на существование записи в БД

Тема в разделе "PHP и базы данных", создана пользователем NyaNeko, 16 сен 2010.

  1. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте, помогите пожалуйста разобраться, как организовать проверку при записи в БД сразу по по фамилии имени и отчеству, т.е. сообщение об ошибке должно выдаваться, только если в базе существуют все 3 записи (name, surname, patronymic ).
    PHP:
    1.  
    2. <?
    3. $name = !empty($_POST['name']) ? $_POST['name'] : '';
    4. $surname = !empty($_POST['surname']) ? $_POST['surname'] : '';
    5. $patronymic = !empty($_POST['patronymic']) ? $_POST['patronymic'] : '';
    6. $specialty = !empty($_POST['specialty']) ? $_POST['specialty'] : '';
    7. $group = !empty($_POST['group']) ? $_POST['group'] : '';
    8. $year = !empty($_POST['year']) ? $_POST['year'] : '';
    9. if (!$name || !$surname || !$patronymic || !$specialty || !$group || !$year)
    10. {
    11.     echo "You have not entered all the required details. Please go back and try again.";
    12. }
    13.  
    14. $number=0;
    15. mysql_connect('localhost','root','') OR die("Dont connect");
    16. @mysql_query('set character_set_client="utf8"');
    17. @mysql_query('set collation_connection="utf8_general_ci"');
    18.  
    19. $result = mysql_query("SELECT * FROM 'name' WHERE login = $name");
    20. if(@mysql_num_rows($result) > 0 ) {
    21. echo "Извините такой логин уже есть";
    22. }
    23.  
    24. else{
    25.  
    26. $query="insert into `users` (`number`, `name`, `surname`, `patronymic`, `specialty`, `group`, `year`) values (null, '".$name."', '".$surname."', '".$patronymic."', '".$specialty."', '".$group."', '".$year."')";
    27.  
    28. mysql_query($query) or die(mysql_error());
    29. echo "User ADD";
    30. }
    31. ?>
    32.  
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    $temp = mysql_query("SELECT COUNT(*) FROM `table1` WHERE `name` = '".$name."' AND `surname` = '".$surname."' AND `patronymic` = '".$patronymic ."'");

    if(mysql_result($temp, 0) > 0) echo 'Уже есть';
    else {.... добавляем}
     
  3. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Пишет следующую ошибку: "Warning: mysql_result() expects parameter 1 to be resource, boolean given in Z:\home\users.ru\www\adduser.php on line 28"
    И не смотря на это добавляет запись в базу.

    PHP:
    1. <?
    2. $name = !empty($_POST['name']) ? $_POST['name'] : '';
    3. $surname = !empty($_POST['surname']) ? $_POST['surname'] : '';
    4. $patronymic = !empty($_POST['patronymic']) ? $_POST['patronymic'] : '';
    5. $specialty = !empty($_POST['specialty']) ? $_POST['specialty'] : '';
    6. $group = !empty($_POST['group']) ? $_POST['group'] : '';
    7. $year = !empty($_POST['year']) ? $_POST['year'] : '';
    8. if (!$name || !$surname || !$patronymic || !$specialty || !$group || !$year)
    9. {
    10.     echo "You have not entered all the required details. Please go back and try again.";
    11. }
    12.  
    13. $number=0;
    14. mysql_connect('localhost','root','') OR die("Dont connect");
    15. @mysql_query('set character_set_client="utf8"');
    16. @mysql_query('set collation_connection="utf8_general_ci"');
    17.  
    18. $temp = mysql_query("SELECT COUNT(*) FROM `table1` WHERE `name` = '".$name."' AND `surname` = '".$surname."' AND `patronymic` = '".$patronymic ."'");
    19.  
    20. if(mysql_result($temp, 0) > 0) echo 'Уже есть';
    21.  
    22. else{
    23.  
    24. $query="insert into `users` (`number`, `name`, `surname`, `patronymic`, `specialty`, `group`, `year`) values (null, '".$name."', '".$surname."', '".$patronymic."', '".$specialty."', '".$group."', '".$year."')";
    25.  
    26. mysql_query($query) or die(mysql_error());
    27. echo "User ADD";
    28. }
    29. ?>
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Попробуй так вместо

    Код (Text):
    1. $temp = mysql_query("SELECT COUNT(*) FROM `table1` WHERE `name` = '".$name."' AND `surname` = '".$surname."' AND `patronymic` = '".$patronymic ."'");
    заменить

    Код (Text):
    1. $query = "SELECT COUNT(*) FROM `table1` WHERE `name` = '".$name."' AND `surname` = '".$surname."' AND `patronymic` = '".$patronymic ."'";
    2.  
    3. $temp = mysql_query($query);
     
  5. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    не проходит проверка.
    ругается
    Warning: mysql_result() expects parameter 1 to be resource, boolean given in Z:\home\users.ru\www\adduser.php on line 22

    как я понимаю, вот на это
    Код (Text):
    1. if(mysql_result($temp, 0) > 0) echo 'Уже есть';
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    после вот этой строки
    Код (Text):
    1. $query = "SELECT COUNT(*) FROM `table1` WHERE `name` = '".$name."' AND `surname` = '".$surname."' AND `patronymic` = '".$patronymic ."'";
    пишешь echo $query; die();

    И смотрим получившийся запрос.
     
  7. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    для теста использую 1,2,3 в этих 3 формах

    Код (Text):
    1. SELECT COUNT(*) FROM `table1` WHERE `name` = '1' AND `surname` = '2' AND `patronymic` = '3'
     
  8. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Невнимательность :(

    надо было просто исправить `table1` на имя моей таблицы `users`

    Сейчас все заработало, спасибо.
     
  9. NyaNeko

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

    С нами с:
    16 сен 2010
    Сообщения:
    11
    Симпатии:
    0
    Еще такой вопросик, как можно реализовать, чтобы при ошибке добавления, если заполнены не все поля или такой пользователь уже есть, сообщение об ошибке выводилось на той же страничке, где находятся сами формы для ввода данных, желательно над ними, а в случае успешного добавления переходило на другую страничку.(сейчас все сообщения выдаются на новой чистой странице)
     
  10. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    NyaNeko
    На AJAX