1

我正在尝试在提交表单数据之前将其保存到 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>

以及插入数据库的代码:

<?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

4 回答 4

1

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

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

于 2012-11-15T20:13:15.087 回答
1

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

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

使用表单的 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;
}
于 2012-11-15T20:27:45.497 回答
0

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

于 2012-11-15T20:53:36.327 回答
0

我建议使用联系表 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
}

这里还有更多信息。此外,此链接应该会有所帮助,因为人们正在讨论如何做与您所要求的完全相同的事情。还有一个插件会自动为您将 CF7 或 Jetpack 表单提交写入数据库,但我从未使用过它,所以我无法评论它。一般来说,尽管我建议为此使用联系表 7,尤其是因为您将表单发布数据发送到不在您服务器上的 php 脚本。

于 2012-11-15T20:26:26.900 回答