0

最近、MSSQL で php の PDO クラスを使用しようとしました。テキストボックスと送信ボタンのあるフォームがあります。今私がやりたいことは、jQuery で検証を行って高速化することです。jQuery が検証を完了し、すべてが正常に入力されると、フォームを PDO クラスのクエリとして追加する php 関数をアクティブにする必要があります。
HTML コード:

<div id="registreren">
    <div class="titel">
            <p class="big"> Registreren| </p>
            <p class="small"> Registreer met jouw gewenste gegevens.</p>
    </div>
    <div id="form">
        <form method="POST" action="" onsubmit="return false;">
            <table border = '1'>
                <tr>
                    <td>Username:</td>
                    <td><input type="textbox" name="txtUsername" /></td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td><input type="password" name="txtPassword" /></td>
                </tr>   
                <tr>
                    <td>E-mail:</td>
                    <td><input type="textbox" name="txtEmail" /></td>
                </tr>
                <tr>
                    <td>Telefoonnummer:</td>
                    <td><input type="textbox" name="txtTel" /></td>
                </tr>   
                <tr>
                    <td></td>
                    <td  class="showPass"><input type="checkbox" name="showPass" />Laat password zien</td>
                </tr>                   
                <tr>
                    <td><p class="warning4">&nbsp;<br /> &nbsp;</p></td>
                    <td><button type="submit" name="registreren" value="registreren" class="btnRegistrate">Registreren</button></td>
                </tr>
            </table>
        </form>
    </div>

JQuery コード:

var registrateEmpty;

$('.btnRegistrate').click(function() {
    $('.warning4').html('');
    registrateEmpty = false;
    $('#registreren input').each(function() {
        if($(this).val() == "")
        {
            $('.warning4').html('Vul alle velden in!');
            registrateEmpty = true;
            return false;
        }
    })

    if(registrateEmpty!=true) {
        if($('input[name=txtUsername]').val().length < 5 || $('input[name=txtPassword]').val().length < 5) {
            $('.warning4').html('Username en password moeten minimaal uit 5 tekens bestaan.');
            return false;
        }
        else if($('input[name=txtTel]').val().match(/[a-zA-Z]/) || $('input[name=txtTel]').val().length != 10) {
            $('.warning4').html('Vul een geldige telefoonnummer in.');          
            return false;
        }
        else if($('input[name=txtEmail]').val().indexOf('@') == -1 || $('input[name=txtEmail]').val().length < 5) {
            $('.warning4').html('Vul een geldige e-mail adres in.');    
            return false;               
        }
        else {
            <?php 
                toevoegen();
            ?>
            $('.warning4').html('');                            
        }
    }
})

このスクリプトが実際に行うことは、空の入力があるかどうかを最初にチェックすることです。すべてが入力されている場合は、入力されている値の特定の長さをチェックします。すべてが「良好」の場合、php 関数をアクティブにします。

PHP 関数:

include('connect.php');

function toevoegen() {
    global $pdo;
    try {
        $sql = "INSERT INTO account 
                                    (acc_Username, acc_Password, acc_Email, acc_Tel, join_Date, privilege) 
                                    VALUES 
                                    (:username, :password, :email, :tel, :jdate, 1);
                                    ";

        $s = $pdo -> prepare($sql); //doet hetzelfde als query() alleen moet je hier nog een trigger functie sturen

        $s->bindValue(':username', $_POST['txtUsername'], PDO::PARAM_STR);
        $s->bindValue(':password', $_POST['txtPassword'], PDO::PARAM_STR);
        $s->bindValue(':email', $_POST['txtEmail'], PDO::PARAM_STR);
        $s->bindValue(':tel', $_POST['txtTel'], PDO::PARAM_STR);                
        $s->bindValue(':jdate', date('d-m-Y'), PDO::PARAM_STR);

        $s->execute(); 

        $message = "Succeed!";
    }
    catch (PDOException $e)
    {
        echo 'Fout bij inserten van een rij: ' . $e->getMessage();
        exit;
    }
}

これが行うことは、最初にSQLステートメントを準備することです。次に、ステートメントの開いている変数にテキストボックスの値を入力します。

今何が起こるかというと、JQuery で検証することさえせずに php 関数を実行しているようです。私のエラー:

未定義のインデックス: txtUsername 、未定義のインデックス: txtPassword 、未定義のインデックス: txtEmail 、未定義のインデックス: txtTel

ですから、誰かが何がうまくいかなかったか、またはこのようにphp jqueryを一緒に操作する方法を知っていることを願っています. 他の言語であっても、理解できることを願っています。前もって感謝します。

4

1 に答える 1