-2

フォーム付きのモーダル ウィンドウがあり、フィールド データをデータベースに送信し、モーダル ウィンドウを閉じず、モーダル ウィンドウをフェードアウトする前に「You have been RSVP'd」と表示することになっています。

2つのこと:

1) 送信すると、モーダル ウィンドウが閉じますか?! 開いたままにしておく必要があります 2) データがデータベースに挿入されていません..

モーダル ウィンドウ HTML

<form id="rsvp-yes" action="#" method="post" name="rsvp-yes">
<label for="email">Your E-mail</label>
    <input id="email" class="txt" type="email" name="email" />
    <label for="location">Choose your location</label>
    <select name="city" id="city">
    <option value="None Selected" selected>Select</option>
    <option value="Perth">Perth</option>
    <option value="Brisbane">Brisbane</option>
    <option value="Sydney">Sydney</option>
    <option value="Melbourne">Melbourne</option>
    </select>

    <button id="rsvp">RSVP</button></form></div>

ジャバスクリプト

$(document).ready(function() {
        $(".modalbox").fancybox();
        $("#rsvp").submit(function() { return false; });

        function validateEmail(email) { 
        var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return reg.test(email);
    }

        $("#rsvp").on("click", function(){
            var emailval  = $("#email").val();
            var city      = $("#city").val();
            var mailvalid = validateEmail(emailval);

            if(mailvalid == false) {
                $("#email").addClass("error");
            }
            else if(mailvalid == true){
                $("#email").removeClass("error");
            }

            if(mailvalid == true) {
                //&& msglen >= 4
                // if both validate we attempt to send the e-mail
                // first we hide the submit btn so the user doesnt click twice
                $("#rsvp").replaceWith("<em>RSVP'ing you...</em>");

                $.ajax({
                    type: 'POST',
                    url: 'rsvp-yes.php',
                    data: $("#rsvp-yes").serialize(),
                    success: function(data) {
                        if(data == "true") {
                            $("#rsvp-yes").fadeOut("fast", function(){
                                $(this).before("<p><strong>You have been RSVP'd</strong></p>");
                                setTimeout("$.fancybox.close()", 1000);
                            });
                        }
                    }
                });

PHP

<?php
$email = $_POST['email'];
$city = $_POST['city'];

mysql_connect(myhost,myuser,mypass) or die("Could not connect: " . 
mysql_error());
mysql_query("USE mydbname");

mysql_query("INSERT INTO rsvp-yes (ID, email, city)
VALUES ('NULL', '".$email"', '".$city"')");

?>
4

2 に答える 2

0

あなたのIDはデータベースで自動インクリームだと思います。だから代わりに

mysql_query("INSERT INTO rsvp-yes (ID, email, city) VALUES ('NULL', '".$email"', '".$city"')");

使用する

mysql_query("INSERT INTO rsvp-yes (ID, email, city) VALUES ('', '".$email"', '".$city"')");

NULLを削除します

于 2012-12-13T06:12:26.113 に答える
-1

関数を使用mysql_real_escape_string()して SQL インジェクションを防ぐ必要があります。また、引用符または二重引用符によるデータの挿入エラーも防ぎます。

$email = $_POST['email'];
$email=mysql_real_escape_string($email);

$city = $_POST['city'];
$city=mysql_real_escape_string($city);

ID列が主キーであり、自動インクリメントフィールドであることを願っています。したがってID、SQL ステートメントに含めないでください。

mysql_query("INSERT INTO rsvp-yes (email, city)
VALUES ('$email', '$city')");
于 2012-12-13T05:33:26.120 に答える