2011-07-18 28 views
1

我试图创建使用JQuery电子邮件订阅输入框,但出于某种原因,所输入的电子邮件地址不插入MySQL数据库,谁能帮助我?使用。员额()到一个jQuery变量传递给PHP

这里是我在我的newsletter.js文件中的代码:

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.php文件中的代码:

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> 

任何帮助是极大的赞赏。非常感谢您提前!

+0

你想说什么了$ _ POST [“添加”]?顺便说一句,如果你不打算绑定变量,你应该在插入数据库之前清理你的输入:$ add = mysql_real_escape_string($ _ POST ['add']); – kinakuta

回答

1

哼!查看你的代码并不直接指向任何错误,但最明显的问题似乎是在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. 是MySQL连接正确建立在 “newsletter.php”?
  3. 是否有任何JavaScript的问题是,POST请求没有在所有发送或也许一个空的电子邮件地址发送?

希望这有助于!