phpで必要なjQuery関数を呼び出すのに苦労していたので、それらをjavascriptに追加しましたが、私がよく知っているメソッド(success関数)では、phpがINSERTINTOクエリとSELECTクエリ以外を実行できません。このスクリプトを変更してphpを完成させるにはどうすればよいですか、および/または次のことを実行できるようにコードを組み合わせるにはどうすればよいですか?
フォームを検証します(男性と女性に別々のルールがあります)
検証が成功した場合:両方の性別:parent.close_field('notice'); (現在、javascriptでのみ機能します)
性別が女性の場合:
- customer_infoテーブルに情報を挿入します
- このアカウントに割り当てられたuser_idを識別します
- ユーザーを次のページにリダイレクトします(現在、phpとjavascriptの両方で)
性別が男性の場合:
- リクエストを通知するメールを生成します
- 情報をinvite_requestsテーブルに挿入します
- 男性へのエコーメッセージ(現在は両方で、推奨される方法はphpです)
- Fancybox iframeを閉じます(現在、javascriptでのみ機能します)
私はfancybox2とこのjQuery検証プラグインを使用していますhttp://bassistance.de/jquery-plugins/jquery-plugin-validation/
Javascript
var $custInfo = $("#customer_info");
$(document).ready(function () {
var validator = $custInfo.validate({
rules: {...},
messages: {...},
errorLabelContainer: "#messageBox",
submitHandler: function () {
$custInfo.ajaxSubmit({
success: function () {
if ($('input[name=gender][value=female]').is(':checked')) {
parent.close_field('notice');
window.location.href = "page1.html";
} else if ($('input[name=gender][value=male]').is(':checked')) {
parent.close_field('notice');
parent.$.fancybox.close();
alert("This isn’t available yet for men, but we’ll send you an invitation as soon as it is");
}
}
});
}
});
$custInfo.find("input[name=gender]").change(function () {
if ($(this).val() == "male") {
$custInfo.submit();
}
});
});
PHP
<?php
//Start session and connection to database goes here
//Function to sanitize values received from the form goes here
$gender = $_POST['gender'];
if ($gender==="female" ) {
// INSERT information into customer_info table
$qry = "INSERT INTO customer_info(fname, lname, gender, zip, email, phone, terms, security_question, security_answer, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[security_question]','$_POST[security_answer]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')";
$result = @mysql_query($qry);
if($result) {
// Identifies user_id assigned to this account
$qry="SELECT * FROM customer_info WHERE user_name='$user_name' AND password='".md5($_POST['password'])."'";
$result=mysql_query($qry);
if($result) {
if(mysql_num_rows($result) == 1) {
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_USER_ID'] = $member['user_id'];
$_SESSION['SESS_USER_NAME'] = $member['user_name'];
session_write_close();
// Redirects user to the next page
header("location: page1.html");
exit();
}else { //user_name failed
header("location: login_failed.html");
exit(); }
}else { die("Unable to access your account (Error Message 1)"); }
}else { die("Unable to access your account (Error Message 2)"); }
}
// If Gender is Male
else {
// Notify us of request via email
$sendto = "info@click2fit.com";$userfname = $_POST['fname'];$userlname = $_POST['lname'];$usermail = $_POST['email'];$gender = $_POST['gender'];$subject = "Invite Request - " . ($gender) . " ";
// INSERT information into invite_requests table
$qry = "INSERT INTO invite_requests(fname, lname, gender, zip, email, phone, terms, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')";
$result = @mysql_query($qry);
// Echo message to Men
echo "<p><strong>Click2Fit is not yet available for men, but we'll be sure to send an invitation as soon as it is</strong></p>";
// Redirects user - This should be replaced with the function which closes the fancybox iframe
header("location: home.html");
exit();
}
?>