0

我有一个用户填写的表格。它的用户注册表单。我希望当用户填写用户名文本时,我的表单应该搜索用户名是否存在。如果存在,则用户名文本字段应该获得焦点。我的数据库表名是用户,它包含名为 id、用户名、密码的列,地位。这是我的代码。

<form name="user" action="#" method="post">
    <label>Username</label>
    <input type="text" maxlength="25" name="username" />
    /*here i want to check from my db table weather username exists or not*/
    <label>Password</label>
    <input type="password" maxlength="25" name="password" />
    <input type="submit" value="Submit" />
</form>

当用户提交表单时我可以这样做。但我的要求是在不提交表单的情况下检查值,并且用户名应该得到关注。在php中我有以下代码

<?php
    mysql_connect("localhost","root","") or die(mysql_error());

    mysql_select_db("test") or die(mysql_error());
    $username = $_REQUEST['username'];
    $query=mysql_query("SELECT * from user where name='$username'");
    $row=mysql_num_rows($query);
    if($row==1){
        echo "true";
    } else {
        echo "false";
    }
?>
4

5 回答 5

3

向您的服务器端脚本发出 ajax 请求,该脚本检查数据库并返回您可以解释的内容。然后在 ajax 成功响应上对其进行操作(聚焦该字段)。

网上有成千上万这样的例子。检查@danish hashmi 的示例(http://blog.webwizo.com/2011/06/03/check-username-availability-in-php-with-jquery-ajax/)或谷歌搜索更多信息。

于 2012-12-04T10:10:14.027 回答
2

HTML 表单

<form method="post" action="register.php">
    ......
    <label for="username">Username</label>
    <input type="text" maxlength="25" name="username" id="username">
    ......
</form>

JS

<script src="jquery-1.8.0.min.js"></script>
<script>
$(document).ready(function(){
    $('#username').keyup(check_username); //use keyup,blur, or change
});
function check_username(){
    var username = $('#username').val();
    jQuery.ajax({
            type: 'POST',
            url: 'check_username.php',
            data: 'username='+ username,
            cache: false,
            success: function(response){
                if(response == 0){
                   alert('available')
                }
                else {
                     alert('not available')
                     //do perform other actions like displaying error messages etc.,
                }
            }
        });
}
</script>

写下你的表用户名签入check_username.php,这个 php 的响应是使用提供的用户名的行数,如下所示

<?php
    /*** mysql hostname ***/
    $hostname = 'localhost';

    /*** mysql username ***/
    $username = 'username';

    /*** mysql password ***/
    $password = 'password';

    /*** mysql databse ***/
    $dbname = 'database';

    try 
    {
        $dbh = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password);
        /*** echo a message saying we have connected ***/
        //echo 'Connected to database';
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }   

    $stmt = $dbh->prepare("SELECT * FROM user where name = ?");
    $stmt->execute(array($_POST['username']));
    echo $stmt->rowCount();
?>
于 2012-12-04T10:10:37.577 回答
0

我正在考虑您在 name="username" 字段的 keyup 事件上绑定检查用户是否存在(应该给它一个 id)。您使用 jquery 或任何其他 js 库吗?
使用库来实现您计划要做的事情会简单得多。

于 2012-12-04T10:11:24.163 回答
0

为此,您可以在更改事件上设置文本框并将文本框值传递给 ajax 调用,如下所示。
input type="text" id="username"

现在在 js 文件中添加以下代码。


$(document).ready(function(){
  $(#username).change(function(e)
  {
    e.preventDefault();
    $.ajax({
       url : 'youphpfile.php?username='+$(#username).val();,
//or $(#username).attr('value') dataType: 'json', success : function() {} }); }); });

现在在 youphpfile.php 文件中检查发送的用户名参数。

$username = $_REQUEST['username']; // $_GET['username']; get will be good for faster response.

mysql_connect

and check username

你完成了。干杯。

于 2012-12-04T10:12:03.990 回答
0

您可能需要一个 Web 服务来检查用户名是否存在,并且当用户名字段失去焦点时,使用 jQuery 对服务进行 ajax 调用。

$(document).ready(function(){
    $('input[name="username"]').blur(function(){
        var txt = $(this);
        var username = txt.val();
        $.ajax({
            type: "POST",
            url: "myUsernameService.php",
            data: { uname: username }
        }).done(function(res) {
            if (res == "false"){
                txt.removeClass("valid").addClass("invalid");
            } else {
                txt.removeClass("invalid").addClass("valid");
            }
        });
    });
});

我不建议再次关注用户名文本框,因为 AJAX 调用可能需要几秒钟才能返回一个值,此时用户可能正忙于输入另一个字段。

上面的代码假定您在“myUsernameService.php”上有一个方法,该方法接受一个名为“uname”的变量并返回一个字符串“true”或“false”。

于 2012-12-04T10:15:50.000 回答