проблема с PHP кодом

интернет компьютеры программирование php

Задача, сделать форму авторизации
Форма имеет поля типа имя, почта, пароль, повтор пароля.

при нажатии кнопки ок программа должна проверить не коротко ли имя и не различны ли пароли (работает без проблем)

После чего программа открывает таблицу и сверяет введённого пользователя с теми что уже есть в таблице. Вот тот самый кусок окда который не могу заставить работать!

$names = $_POST["name"]; //запоминаем значение поля ИМЯ
db_connect();

if (validate($_POST) == "OK") { // validate - проверяем введёные данные на какие-либо параметры
$sql = "select * from users where username='$names'"; // делаем запрос в таблице users по полю username
$result = mysql_query($sql); // присваеваем результат в переменную
if (!$result) { //это условие никогда не срабатывает - даже если нет дубликатов
$sql = "insert into users (username, email, password)
values ('".$_POST["name"]."', '".$_POST["email"]."', '".$passwords[0]."')";
$result = mysql_query($sql);


в итоге программа каждый раз говорит что такой пользователь уже существует и вводить его в базу отказывается.
Если в строке сравнения if (!$result) { зачем-то убрать восклицательный знак, то программа (что не удивительно) все имена пишет в таблицу, но сравнение конечно же никогда не срабатывает - все имена якобы уникальны )

Строчу строго по учебнику http://www.ibm.com/developerworks/ru/edu/os-phptut1/section5.html#createdatabase

Думал достаточно авторитетный источник ) - спасайте!

Примечание:
так как я ещё очень далёк от понимания прошу помочь в раъяснении строк
1. $sql = "select * from users where username='$names'"; - что получает в итоге переменная??? что происходит ?
$result = mysql_query($sql); каким является результат... не понимаю что даёт нам функция mysql_query а в учебнике как то туманно разъясняется...

Примечание:
Alex-541, Японский Городовой Спасибо за гениальные ответы, так и тянет к знаниям после таких умозаключений...

а вобщем проблема решилась вот этим if (mysql_num_rows($result) === 0) способом, только 3 знака ровно было видимо чересчур много.
Чем дальше изучаю тем больше вопросов возникает, У кого нибудь есть чтиво на тему PHP для начинающих?

Примечание:
Я не кипятился, просто такие ответы которые не отвечают а лишь указывают человеку на его незнания, какие я услышал здесь в ответ на свой вопрос. Это выше моего понимания. Ламер он ибудет ламером до тех пор пока не научится как делать правильно, и где искать ответы на столь типовые вопросы. Если вам не хотелось опускаться до моего уровня и объяснить мне где я не прав, а лишь указать на неудачно выбранный мной источник - то странный вы выбрали способ высказаться, унизить автора топика. Всё это слегка вводит в недоумение :)

Да я не знаю этого языка программирования, как впрочем и любого другого разве что кроме школьного паскаля из детства, но обстоятельства сложились таким образом, что нужно срочным образом осилить данный вопрос.
Авторитетность источника найденного мной в гугле определил разве что по домену (http://www.ibm.com/). Моя личная ошибка.

Я просто бывали и на противоположном месте, хоть не по этой теме и знаю что такое объяснять ответ на вопрос человека не знающему предмет. И не просто отписаться, а сделать так чтобы меня понимали так же как я понимаю сам. Мне казалось что ВиО как раз для таких случаев.

за 2 фамилии спасибо (Котерова или Коггзолла). Постараюсь найти вменяемые учебники на русском
Ответы:
!$result верно, когда запрос совсем не смог выполниться, произошла какая-то ошибка. Если запрос возвращает пустой ряд, то никакой ошибки нет и условие ложно.
Надо что-то типа  if (mysql_num_rows($result) === 0)
В документации зато всё ясно написано.
$sql = "select * from users where username='$names'";
Строка, в которую подставлено значение переменной $names. Если, например, до этого сказать $names="vasja", то значением $sql будет
select * from users where username='vasja'
Alex, обоснуйте, пожалуйста.
Я так понял, что вы пытаетесь добавить пользователя если такового нету в базе.
Тогда конструкция if(!$result) неверна (как правильно подметил Koryuu).
в переменную $result, возвращается ответ от mysql сервера.
В данном случае, вы ищете совпадения а имеено $result должен содержать 0 элементов массива (совпадений нет)
Если я не ошибаюсь, то лучше будет проверить вот так
if (count(mysql_fetch_row($result)!=0 ))  //mysql_fetch_row возвращает массив $row[0],$row[1] etc. если количество элементов 0 то окей
{ print "Такой пользователь уже существует";
}else{
$sql='insert ..... bla bla bla';
$result=mysql_query($sql);
}
Учебник на developerworks писали конченые дауны. Так что учись по нему хорошенько. Стране нужны грузчики.
>> Alex-541,  Японский Городовой  Спасибо за гениальные ответы, так и тянет к знаниям после таких умозаключений...
вам истину доносят ... не более
Не кипятись. Крепко сказано было специально. Вас же ламеров, пока не пнешь - так и будете сидеть на своем "авторитетный источник". Приходится применять шоковую терапию.
строку  if (!$result) {  
заменить на:

$user_exists = mysql_fetch_row($result);
if(!$user_exists) {


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.