如何在提交之前将表单数据保存到数据库中

时间:2012-11-15 20:11:21

标签: php html wordpress

我想在提交之前将表单数据保存到wordpress数据库中。请帮忙。继承我的代码和插入数据库的PHP代码:

<form method="post" action="https://app.icontact.com/icp/signup.php" name="icpsignup" 

id="icpsignup1030" accept-charset="UTF-8" onsubmit="return verifyRequired1030();">
<input type="hidden" name="redirect" value="http://www.123.com/thank-you.html">
<input type="hidden" name="errorredirect" value="http://www.123.com/error.html">
<input type="hidden" name="listid" value="16360">
<input type="hidden" name="specialid:16360" value="MA3A">

<input type="hidden" name="clientid" value="1259610">
<input type="hidden" name="formid" value="1030">
<input type="hidden" name="reallistid" value="1">
<input type="hidden" name="doubleopt" value="0">
<input type="text" name="fields_email" size="21" style="padding:5px;">
<input type="image" name="submit" src="signup button top.png" value="" height="32px">

</form>

要插入DB的代码:

<?php   
    require_once('../../../wp-config.php');
    global $wpdb;
    $table_name = "icontact_emails";
    $email = $_POST[fields_email];
    if (trim($email) != ""){
    $wpdb->insert($table_name, array('email' => $email, 'timestamp'=> date("Y- m-d h:i:s")));
    }
?> 

4 个答案:

答案 0 :(得分:1)

“提交”是将其传输到服务器的唯一方法,无论您是通过AJAX还是传统方法提交表单 - 没有区别。

请记住,这是一个客户端 - 服务器模型。表单在客户端上,数据库在服务器上。

答案 1 :(得分:0)

我建议使用Contact Form 7(WP插件)。内置了一个PHP钩子,您可以使用它来执行此操作,称为wpcf7_before_send_mail。它会将包含所有联系表单数据的对象传递给您可以用来写入数据库或执行其他服务器端的自定义函数。这是一个(真的)简短的例子(这在functions.php中):

add_action( 'wpcf7_before_send_mail', 'save_contact_to_db' );
function save_contact_to_db( $cf7 ) {
    $email = $cf7->posted_data['fields_email'];
    // put database writing stuff here
}

有一个little more info to be had here。另外this link should be helpful因为人们正在讨论如何做同样的事情。还有a plugin会自动将CF7或Jetpack表单提交给数据库,但我从未使用它,所以我无法评论它。一般情况下,我建议使用联系表单7,特别是因为您将表单发布数据发送到服务器上不存在的PHP脚本。

答案 2 :(得分:0)

我可以从您的问题中推断出您的真实含义:我正在尝试将此表单保存到数据库,然后再将其提交给我无法控制的另一个站点。这意味着在将数据提交给第三方之前,您希望将其保存到自己的数据库中。

如果是这种情况,我建议:

使用表单的onSubmit事件(<form onSubmit="YourJavasScriptMethod();">)。使用JQuery和$ .ajax()读取所有表单输入并将其提交到您自己的脚本,该脚本可以将值保存到数据库中。在onSubmit方法结束时,请务必返回true,以便浏览器继续提交表单。

这是一个伪代码示例:

<form id="myForm" onSubmit="SaveToMyOwnDatabase();">

    <input />... //your inputs

</form>

和你的javascript:

function SaveToMyOwnDatabase()
{
    // Create Json object by selecting each of the form inputs
    // Call $.ajax and submit the Json to your script which processes the json

    return true;
}

答案 3 :(得分:0)

我认为解决方案很简单:将表单提交到PHP页面,该页面将:1)将其保存在您的数据库中; 2)将其发送到您想要的任何地方。到目前为止,您的案例中最简单,最常用的解决方案!