0

ユーザーが記入するフォームがあります。そのユーザー登録フォーム。ユーザーがユーザー名のテキストを入力するときに、フォームにユーザー名が存在するかどうかを検索する必要があります。存在する場合は、ユーザー名のテキストフィールドにフォーカスがあります。データベーステーブル名はusersであり、id、username、passwordという名前の列が含まれています。 、状態。これが私のコードです。

<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/)を確認するか、Googleで詳細を確認してください。

于 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」という1つの変数を受け入れ、「true」または「false」の文字列を返すメソッドがあることを前提としています。

于 2012-12-04T10:15:50.000 に答える