Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проверка поля емайл на повторение


Автор: Defer 1.9.2010, 17:30
Доброго времени суток!

Вообщем возникла такая проблема.
У меня имеется регистрационная форма которая подключена к базе.
Имя там фамилия и главное поле-емайл.
Поле емайл будет являтся логином,и надо чтоб если пользователь при регистрации ввел уже существующий емайл ему вернулась бы ошибка аля такой пользователь с емайлом уже есть.

Так вот я создал 2 файла.
1 файл там находятся инпуты аля текстовые строки  с кнопкой а во 2 файле коннект к базе и вставка информации в базу.

Непонятно почему не работает .
Вообщем если  count(*) равен 0 то такого емайла нет в базе а если  count(*) равен 1 то есть.

Что бы я хотел сделать чтобы если  count(*) был бы не равен 0,то выдавалась бы ошибка через  echo или sql чтобы пользовател видел при этом,insert бы не проходил

 Ну а если равен нулю то все нормально insert работает

Код
if('email')
 {
    $sql="SELECT count(*) FROM 'db_registration' WHERE 'db_registration.email'='email'";
    if($sql != 0)
    {
      echo "error the Email is already taken";
    }
    if($sql==0)
    {
       $insert_query = 'insert into db_registration (
                    name,
                    lastname,
                    student,
                    professor,
                    email,                        
                    password
                    )
                    values
                    (
                    
                    "' . $_POST['name'] . '", 
                    "' . $_POST['lastname'] . '",
                    "' . $_POST['student'] . '",
                    "' . $_POST['professor'] . '",
                    "' . $_POST['email'] . '",
                    "' . md5($_POST['password']) . '"
                    )';
        mysql_query($insert_query);
     }
  }



Надеюсь на помощь или совет

Автор: enoff 1.9.2010, 17:40
Код


$result = mysql_query("SELECT COUNT(*)...");
$count = mysql_result($result, 0);
if($count > 0) {
echo "E-mail уже есть";
...

Автор: Defer 1.9.2010, 17:59
Warning: mysql_result() expects parameter 1 to be resource, boolean given in /Applications/MAMP/php/Registration form/db_registration.php on line 15

не помогло

Автор: gta4kv 1.9.2010, 18:18
Ошибку в гугл.

Автор: enoff 1.9.2010, 18:53
Так и знал  smile 
Код

$result = mysql_query("SELECT...");
if(!$result) {
    exit(mysql_error());
}
$count = ...;


Добавлено через 28 секунд
http://php.net

Автор: Defer 2.9.2010, 11:07
чтото ничего не помогает может напишешь мне тупому как все в месту будет выглядеть?


заранее блогадарен

Автор: Defer 2.9.2010, 11:33
хммм странно пишу

Код
$result = mysql_query("SELECT count(*) FROM db_registration WHERE db_registration.email=email");
 echo $result;


а выводит должен 0 если нет такого емайла и 1 если есть

А он мне выводит Resource id #3 

может запрос корявый или плохой?

Автор: gta4kv 2.9.2010, 11:37
Вы вообще знаете что такой mysql и как с ним работать? Вы пытаетесь вывести ссылку (индефикатор) mysql запроса.

Автор: enoff 2.9.2010, 11:43
Позже код полностью напишу.

Добавлено через 1 минуту и 1 секунду
И ссылок много накидаю smile 

Автор: skyboy 2.9.2010, 11:49
Defer, обрати внимание на кнопку "Код" над полем ввода сообщения. Использовать для выделения программного кода bold - это усложнять чтение тем, кто мог бы ответить на вопрос.

Автор: Defer 2.9.2010, 13:32
Простите меня больше не буду незнал


enoff Пасиб буду ждать

Автор: bars80080 2.9.2010, 13:48
Цитата(Defer @  2.9.2010,  13:32 Найти цитируемый пост)
Простите меня больше не буду незнал


Defer, это было не просто так сказано, как и то что вы написали. вы же не от балды писали запрос? не думаю, что случайно потарабанив пальцами по клавиатуре можно получить осмысленный код. вы знали, что вначале слово select, затем count(*), потом from и т.д. и это знание не от божественного вмешательства, а потому что вы это где-то увидели. как запрос, так и то, в какую функцию на php надо засовывать этот запрос. неужели вы не стали читать до конца, и не разобрали как полностью надо читать результат из БД?

аналогия такая: вы приходите на урок вождения, инструктор говорит, что надо выжать сцепление, вы кричите "знаю", выжимаете сцепление, а потом задаёте вопрос: "а почему я не еду?"

можно же было вычитать полную процедуру чтения данных

Автор: skyboy 2.9.2010, 14:28
работа с mysql через расширение mysql(все эти функции, начинающиеся с "mysql_") происходит следующим образом:
0. подключение к серверу(http://php.net/mysql_connect или http://php.net/mysql_pconnect)
1а. выполнение запроса(http://php.net/mysql_query, http://php.net/mysql_exec). если запрос на выборку(select, вызов процедуры, возвращающей данные).
1б. перебор данных, путем запроса очередной порции  данных(mysql_fetch_assoc, mysql_fetch_array, mysql_fetch_object).
пункты 1а и 1б повторяются на каждом запросе.
результат выполнения каждого пункта передается в следующий пункт. т.о. то, что вернет mysql_connect(если не ошибка - false), можно передать в mysql_query; то что вернет mysql_query нужно передать в mysql_fetch_*

Автор: -=Ustas=- 2.9.2010, 15:24
Жуть...
[off]сорри за оффтоп[/off]

Автор: Defer 2.9.2010, 16:38
Цитата

работа с mysql через расширение mysql(все эти функции, начинающиеся с "mysql_") происходит следующим образом:
0. подключение к серверу(mysql_connect или mysql_pconnect)
1а. выполнение запроса(mysql_query, mysql_exec). если запрос на выборку(select, вызов процедуры, возвращающей данные).
1б. перебор данных, путем запроса очередной порции  данных(mysql_fetch_assoc, mysql_fetch_array, mysql_fetch_object).
пункты 1а и 1б повторяются на каждом запросе.
результат выполнения каждого пункта передается в следующий пункт. т.о. то, что вернет mysql_connect(если не ошибка - false), можно передать в mysql_query; то что вернет mysql_query нужно передать в mysql_fetch_* 


Спасибо за справку,легче было бы если бы просто вписали в моем коде ошибки,и показали как надо.
Рассусоливать и я могу.

Всем спасибо все свободны.

Добавлено через 1 минуту и 55 секунд
Отдельное спасибо enoff что подсказал в каком направлении двигаться.

Автор: gta4kv 2.9.2010, 17:34
Цитата(Defer @ 2.9.2010,  16:38)
легче было бы если бы просто вписали в моем коде ошибки,и показали как надо.
Рассусоливать и я могу.

Так вот, это делается (дают справку, а не готовый код) не для того, что бы поиздеваться над тобой и потратить время.
Это делается для того, что бы в пустой голове, которой еще хватает наглости хамить, людям которые тебя учат — появились какие то знания. Можешь всю жизнь ходить на готовенькое и так ничего не уметь, или пытаться что-то делать самому (в данном случае, минимальное - залезть в справку по-функциям mysql_* и разобраться в чем же проблема).

Решать тебе.

Автор: Defer 3.9.2010, 10:50
Цитата

Так вот, это делается (дают справку, а не готовый код) не для того, что бы поиздеваться над тобой и потратить время.
Это делается для того, что бы в пустой голове, которой еще хватает наглости хамить, людям которые тебя учат — появились какие то знания. Можешь всю жизнь ходить на готовенькое и так ничего не уметь, или пытаться что-то делать самому (в данном случае, минимальное - залезть в справку по-функциям mysql_* и разобраться в чем же проблема).

Решать тебе.


Посылать в гугл тоже все могут в данном контексте всеравно что послать человека на... Вместо того чтобы если знаешь сразу объяснить причину ошибки.
В следующий раз если нечего сказать пройди мимо и не засоряй тему выражениями аля валите в гугл, для того ведь и существуют такие форумы чтобы помогать а не в гугл посылать сразу.


Сорри за небольшой оффтоп.

Зы закройте тему она уже неактуальна.
Спасибо.

Автор: bars80080 3.9.2010, 13:44
дык, подсказали же: вы не полностью прочитали документацию.
если бы вы после этого спросили: "а где её можно почитать полностью?" - вам бы быстро скинули пару-тройку ссылок


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)