Проверка, доступно ли имя пользователя с AJAX - PullRequest
1 голос
/ 03 августа 2010

Я использую базовую форму регистрации с AJAX, но форма не подключается к базе данных.Я явно что-то упускаю.

Так вот поле, которое я хочу проверить.

Username:<input type="text" name="user" id="user" maxlength="30">
<span id="msgbox" style="display:none"/></input>

Затем я использую jQuery, вот код:

$(document).ready(function() {
    $("#user").blur(function() {

        //remove all the class add the messagebox classes and start fading
        $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
        //check the username exists or not from ajax
        $.post("user_availability.php",{ user_name:$(this).val() },
            function(data) {
                if(data=='no') { //if username not avaiable
                    $("#msgbox").fadeTo(200,0.1,function() {//start fading the messagebox
                        //add message and change the class of the box and start fading
                        $(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
                    });       

                } else {
                    $("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox
                        //add message and change the class of the box and start fading
                        $(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);   
                    });
                } // else
             } // function

        ); // $.post
    }); // blur
}); // ready

У меня есть этот код, user_availability.php:

mysql_connect(localhost,$user,$password);
    or die('There is error to connect to server:-'.mysqli_connect_error());

$db_selected = mysql_select_db($database);
$user_name=$_POST['user_name'];
$sql = "select * from members where username='$user_name'";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))   
{
    $existing_users[] = $row['username'];
}

if (in_array($user_name, $existing_users))
{
    echo "no"; //user name is not availble
}
else
{
    echo "yes"; //user name is available
}

Я не получаю ошибок базы данных.Форма будет более содержательной, но я не могу заставить ее работать с этим полем.Есть предложения?

Ответы [ 2 ]

1 голос
/ 03 августа 2010

Просто придирка к утверждению select.Поскольку вам нужно только узнать, сколько строк существует для введенного имени пользователя, вам не нужно делать «выбор *», так как в зависимости от количества столбцов в вашей таблице пользователей вы можете возвращать довольно много данных.Я бы пересмотрел ваш запрос так:

$sql = "select COUNT(username) from members where username=$user_name";

Затем вы проверяете, чтобы убедиться, что результат запроса равен нулю.Если это так, то имя пользователя доступно.

Я знаю, что вышеупомянутое не было ответом на ваш вопрос, но просто подумал, что укажу на это, поскольку эта функция будет вызыватьсямного в зависимости от трафика на вашей регистрационной форме и креативности ваших посетителей.

0 голосов
/ 03 августа 2010

Проверьте ваш запрос:

 $sql = "select * from members where username='$user_name'";

В этом запросе должно быть:

 $sql = "select * from members where username=$user_name";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...