1

使用して

  • jqueryバリデータプラグイン
  • jquery

試してみてください:

  • ユーザー名がデータベースに存在しないことを確認してください
    • フォーム + フィールド + リモートチェック
    • ajaxがあればjqueryにチェックさせたい。

何が機能するか:

  • check-username.php は単独で動作します

しないもの

  • フォームは、リモート jquery 検証を検証するために戻り値のブール値を渡すことができないようです
  • フィールドを検証できるように値を渡すにはどうすればよいですか?

HTML

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js" type="text/javascript"></script> 
    <script language="javascript" src="validate.js"></script>

    <meta name="generator" content="" />
    <style type="text/css"></style>
  </head>
<body>

<form action="/" method="post" id="register-form">
    <div>
        <label for="username">Username<font color="red">*</font>:</label> 
        <input type="text" name="username" size="20" id="username" />
    </div>
    <div>
        <input type="submit" name="submit" value="submit" />
    </div>
</form>
</body>
</html>

JQUERY検証

$().ready(function() {
    // validate signup form on keyup and submit
    $("#register-form").validate({
        rules: {
            username: {
                required: true,
                remote: "check-username.php"
                },
        },
        messages: {
            username:{
                remote: "This username is already taken! Try another."
            },
        },
    });
});

チェック-USERNAME.php

<?php

$searchVal = $_POST['username'];

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$data", $username, $password);

    $sql = "SELECT * FROM users WHERE USERNAME = " . "'" . $searchVal .  "'";
    $stmt = $dbh->query($sql);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

   if($result>0){
     return true;
   }else {
     return false;
   }

    $dbh = null;
    }
        catch(PDOException $e)
    {
        echo $e->getMessage();
    }       
?>
4

3 に答える 3

1

コードの残りの部分をチェックしませんでしたが、これを試してください:

<?php
    $searchVal = $_POST['username'];
    try {
        $dbh = new PDO("mysql:host=$hostname;dbname=$data", $username, $password);
        $sql = "SELECT * FROM users WHERE USERNAME = " . "'" . $searchVal .  "'";
        $stmt = $dbh->query($sql);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);

        if($result>0) {
            $valid = "true";
        } else {
            $valid = "false";
        }

        $dbh = null;

        echo $value;
    }
    catch(PDOException $e) {
        echo $e->getMessage();
    }       

?>

于 2013-06-28T07:29:20.657 に答える
0

こことは別のプラグインを使用したソリューションです。Ajax 呼び出しを使用して名前の可用性を確認するには、次のようにします。

アタッチjquery.validationEngine.jsをダウンロードした後、ロケールは次のようになります。

<script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-"></script>
<script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>

enロケールも必須であることに注意してください。

言語ファイルを開いて変更します。phpデータベースで名前の可用性をチェックするか、デフォルトのファイル名を使用するファイルの場所を指定する必要があります。したがって、jquery.validationEngine-en.js英語を使用する場合は、次の行を見つけてください。

 "ajaxUserCallPhp": {
    "url": "phpajax/ajaxValidateFieldUser.php",

ここで、必要に応じてファイル名を変更できます。

 "ajaxUserCallPhp": {
    "url": "my-file_which_will_check_db.php",

そして、あなたmy-file_which_will_check_db.phpは次のようになります:

<?
/* RECEIVE VALUE */
$validateValue=$_REQUEST['fieldValue'];
$validateId=$_REQUEST['fieldId'];

$validateError= "This username is already taken";
$validateSuccess= "This username is available";

/* RETURN VALUE */
$arrayToJs = array();
$arrayToJs[0] = $validateId;

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); //Connect with your credentials
$stmt = $dbh->query("SELECT * From `users` WHERE `USERNAME` = '{$validateValue}'"); 
$dbh = null;                    // Disconnect

sleep(1); /*added because check is very fast and the label 'checking...' is not visible*/

if ($result = $stmt->fetch()) { 
$arrayToJs[1] = false;          // found user with that name
echo json_encode($arrayToJs);           
}
else {
$arrayToJs[1] = true;
echo json_encode($arrayToJs);       // that user name is free
}
?>

最終的に、HTML マークアップは次のようになります。

<input type="text" name="user_name" id="user_name" class="validate[required],custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCallPhp] text-input" />

ここで追加のclass属性に注意してください。

そして、次のスクリプトを含めます。

<script>
  $(document).ready(function(){
  $("#register_form").validationEngine();
  });
</script>
于 2013-06-29T06:19:05.540 に答える