我最近尝试使用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"> <br /> </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。 我希望即使有些东西是其他语言,它仍然是可以理解的。 提前谢谢。
答案 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;
}
}