2011-07-18 20 views
1

JQueryを使用して電子メールのサブスクリプション入力ボックスを作成しようとしていますが、何らかの理由で入力した電子メールアドレスがMySqlデータベースに挿入されません。すべてのヘルプは大歓迎です.Post()を使用してPHPにJQuery変数を渡す

require("config.php"); 

$db = mysql_connect($dbhost, $dbuser, $dbpassword); 
mysql_select_db($dbdatabase, $db); 

$subsql = "INSERT INTO subscribe(email) VALUES(".$_POST['add'].");"; 
mysql_query($subsql); 

And here is the code in my other php page to display the input box: 

<div id="newsletter" data-default="[email protected]" data-subscribed="Thank you for subscribing."> 

<form action="#" method="POST"> 
<input type="text" name="email" value="[email protected]" /> 
<input type="submit" value="submit" /> 
</form> 
<h2>Sign Up to Our Newsletter!</h2> 

</div> 

:ここに私のnewsletter.phpファイル内のコードがある

jQuery(function($){ 

var validateRegexps = { 
    email: /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, 
    "default": /.{4}/ 
    } 

if ($("#newsletter form").length == 0) return 

var defaultMessage = $("#newsletter").attr("data-default") 
var subscribedMessage = $("#newsletter").attr("data-subscribed") 
var newsletterForm = $("#newsletter form") 

/* newsletter code */ 
function newsletter(send) { 
     var subscribe = true 
     newsletterForm.find('input[type="submit"]').val(subscribe ? "Sign Up" : "Unsubscribe") 

     var email = newsletterForm.find('input[name="email"]') 
     var check = true 

     if (email.val() == defaultMessage || email.val() == subscribedMessage) { 
      email.val("") 
      if (!send) check = false 
     } 

     if (check) { 
      if(validateRegexps["email"].test(email.val())) { 
        // valid mail 
        email.removeClass("error") 
        if (send) { 
          $.post("php/newsletter.php",{add: email.val()}, function(data) { 
            email.val(subscribedMessage) 
          }); 
          email.val("sending") 
        } 

      } else { 
        // invalid mail 
        email.addClass("error") 
      } 
     } 


     return false 
} 

function restore(e) { 
    var jqEl = $(e.currentTarget) 
    if (jqEl.val() == "") { 
     jqEl.val(defaultMessage) 
    } 
    return true 
} 

function signUp() { 
     return newsletter(false) 
} 

function signUpAndSend() { 
     return newsletter(true) 
} 

newsletterForm.find('input[name="email"]').focus(signUp).focusout(restore) 
newsletterForm.change(signUp) 
newsletterForm.submit(signUpAndSend) 

}); 

:ここ

は私newsletter.jsファイルを持っているコードです。事前にどうもありがとうございました!!!

+0

$ _POST ['add']には何を手に入れていますか? Btwの場合、変数をバインドしない場合は、データベースに挿入する前に入力をサニタイズする必要があります:$ add = mysql_real_escape_string($ _ POST ['add']); – kinakuta

答えて

1

Hmm!あなたのコードを見ても間違いを直接指摘することはありませんが、最も明白な問題は、電子メールアドレスが一重引用符で囲まれていないというINSERTクエリのようです。

$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');"; 

うまくいけば、上記のINSERTは正常に動作するはずです。問題はまだかかわらず、存在する場合、クエリがエラーを発生させる可能性がある場合、見つけるしてみてください:

$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');"; 
mysql_query($subsql); 
if (mysql_error()) { 
    echo mysql_error(); 
} 

エラーが見つからないと、問題がまだ存在している場合、それは同様に、他の基本に見ても意味があります:

  1. $_POST['add']は「newsletter.php」で利用できますか?
  2. "newsletter.php"にMySQL接続が正しく設定されていますか?
  3. POST要求がまったく送信されない、または空のメールアドレスで送信されるというJavaScriptの問題はありますか?

希望します。

関連する問題