用jquery验证并用php修改MSSQL

时间:2013-06-20 09:40:19

标签: php jquery validation pdo

我最近尝试使用PHP的PDO类和MSSQL。 我有一个带有文本框和提交按钮的表单。现在我喜欢做的是用jQuery进行验证,让它更快。每当jQuery完成验证并且所有内容都按照它应该填充时,它应该激活一个php函数,它将该表单作为PDO类的查询添加。
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语句。然后它将使用文本框值填充语句中的打开变量。

现在发生的事情是它似乎执行了php函数,甚至没有用JQuery验证。 我的错误:

  

未定义索引:txtUsername,未定义索引:txtPassword,未定义索引:txtEmail,未定义索引:txtTel

所以我希望有人知道出了什么问题,或者如何像这样使用php jquery。 我希望即使有些东西是其他语言,它仍然是可以理解的。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你只是从javascript中调用一个函数一切都很好然后如何将它们作为post函数传递给你将它们作为参数传递给函数的函数,或者如果每个东西都很好就返回true并将你的函数放在

$('.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 {
            $('.warning4').html('');                            
        }
    }
})
IF($_SERVER['REQUEST_METHOD'] == "POST") {
//call your function
  toevoegen()
} 

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;
    }
}