最近、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"> <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ステートメントを準備することです。次に、ステートメントの開いている変数にテキストボックスの値を入力します。
今何が起こるかというと、JQuery で検証することさえせずに php 関数を実行しているようです。私のエラー:
未定義のインデックス: txtUsername 、未定義のインデックス: txtPassword 、未定義のインデックス: txtEmail 、未定義のインデックス: txtTel
ですから、誰かが何がうまくいかなかったか、またはこのようにphp jqueryを一緒に操作する方法を知っていることを願っています. 他の言語であっても、理解できることを願っています。前もって感謝します。