0

入力値をjQueryページに送信するフォームをphpで作成し、jQueryページは情報を別のphpページに送信して値をデータベースに挿入します。

問題は

エラーが発生した場合、ユーザー名が存在するとしましょう。php ページから元のフォームにメッセージを送り返し、リアルタイムで表示できるようにする必要があります。これを行う方法についてのアイデアはありますか?

これは、フォームからデータベースに挿入する php ページへの送信を処理するjQueryです。

// Handle account updates
$('#save_account').click(function() { 
    var log_token = $('#log_token').val();  
    var user_name = $('#user_name').val();  
    var user_pass = $('#user_pass').val();  
    $.post("php/includes/update_account.php", {
        log_token: log_token,
        user_name: user_name,
        user_pass: user_pass
    });
});

データベースに値を挿入するPHPを次に示します。

$log_token = $_POST['log_token'];
$user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];

$db = db_open();
$query = "SELECT user_name FROM users WHERE user_name='$user_name'";
$result = db_query($db, $query);
$result = db_num_rows($result);
if (!$result) {
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
        WHERE user_id='$_SESSION['user']['user_id']'";
    $result = db_query($db, $query);
} else {
    Pass Error to FORM HERE
}
db_close($db);
4

1 に答える 1

0

AJAX を見てみましょう。これは、ページを更新せずにページとの間でデータを送受信する方法です。これを実装する最も簡単な方法は、jQuery の ajax メソッドを使用することです

あなたのコードはほぼそれを持っています:

$('#save_account').click(function() { 
    var log_token = $('#log_token').val();  
    var user_name = $('#user_name').val();  
    var user_pass = $('#user_pass').val();  
    $.post("php/includes/update_account.php", {
        log_token: log_token,
        user_name: user_name,
        user_pass: user_pass
        }, function(data){
            // handle the response from the page here
            if(data != "") {
                alert(data);
            }
        }
    );
});

post 関数に渡される無名関数は、呼び出されたスクリプトから応答を受け取ったときに呼び出されるコールバック関数です。変数データには、ページからの応答が含まれています。

PHP

$log_token = $_POST['log_token'];
$user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];

$db = db_open();
$query = "SELECT user_name FROM users WHERE user_name='$user_name'";
$result = db_query($db, $query);
$result = db_num_rows($result);
if (!$result) {
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
        WHERE user_id='$_SESSION['user']['user_id']'";
    $result = db_query($db, $query);
} else {
    // return there was an error
    echo "There was an error";
}
db_close($db);

これにより、より複雑なことを行うことができます。エラーの配列をページに戻すことができます。JavaScript が簡単に解析できる方法でメッセージを送信する方法については、JSON を参照してください。

于 2013-03-28T20:42:11.640 に答える