【问题标题】:feed wp-Gravity form input to custom sql table将 wp-Gravity 表单输入提供给自定义 sql 表
【发布时间】:2017-10-25 21:00:54
【问题描述】:

背景:我有一个 wordpress 安装,带有一个由 cpanel 管理的基本 myslq 数据库结构。我已经实现了 Gravity Forms 插件来生成一种 contact us 表单。如果客户对产品有疑问/投诉,他们会填写表格并提交。然后这将进入我在 wp 数据库中创建的自定义表(wp-contacts)。我使用 ODBC 连接器将表中的数据与 Filemaker 连接起来。然后,我们的客户服务团队可以在我们开发的自定义文件制作器应用程序中查看数据,他们可以回答问题。

问题:我的 PHP 脚本存在问题,该脚本应该将重力从客户的数据输入发送到我创建的自定义 sql 表。当我测试 from 并输入示例数据并单击提交时,我收到 此页面无法显示 错误。此外,我创建的自定义表中没有数据。还有验证码的问题。我已经在重力形式中实现了验证码,所以如果检查了验证码,我会假设我需要某种字段设置为 1 或 0?实现这一点的最佳方法是什么?这是我的脚本:

add_action("gform_after_submission_1", "input_fields", 10, 2);
function input_fields($entry, $form)
{
    global $rhodesba_rhodes;

        $entry["12"] = '$fname';
        $entry["14"] = '$lname';
        $entry["4"] = '$email';
        $entry["5"] = '$address1';
        $entry["15"] = '$address2';
        $entry["16"] = '$city';
        $entry["18"] = '$state';
        $entry["17"] = '$zip';
        $entry["7"] = '$bbd';
        $entry["6"] = '$upc';
        $entry["10"] = '$subject';
        $entry["2"] = '$question';

    $SQL = "INSERT INTO wp_contacts (id, name, last_name, state, city, address, address_2, bbd, subscribe, upc, email, subject, comments, phone, user_ip, answer, answered_by, zipcode, category_id, active, contact_captcha, answered_date, dept, computer_name, created) VALUES ('', '$fname', '$lname', '$state', '$city', '$address1', '$address2', '$bbd', '', '$upc', '$email', '$subject', '$question', '', '', '', '', '$zip', '', '', '', '', '', '', '')";
    $rhodesba_rhodes->query($SQL);
}

我的表格中有一些字段没有通过重力表格联系我们表格填充。相反,这些字段由我们的客户服务器团队在他们的 filemaker 应用程序中回答问题时进行操作(即 answer、answered_by 等),并由 filemaker 用于其他目的。对于这些字段,我使用了占位符 ''。我的 ID 字段设置为添加的每条记录自动递增。
image of database structure

【问题讨论】:

    标签: php mysql wordpress gravityforms


    【解决方案1】:

    所以,经过一番研究,我发现了这一点。我发布解决方案以防其他人有同样的问题。这是我更新的代码:

    add_action("gform_after_submission_1", "input_fields", 10, 2);
    function input_fields($entry, $form)
        {
            $password = "password";
            $username = "username";
            $servername = "localhost";
            $dbname = "db";
            $fname = $entry["12.3"];
            $lname = $entry["14.6"];
            $email = $entry["4"];
            $address1 = $entry["5.1"];
            $address2 = $entry["15.2"];
            $city = $entry["16.3"];
            $state = $entry["18.4"];
            $zip = $entry["17.5"];
            $bbd = $entry["7"];
            $upc = $entry["6"];
            $subject = $entry["10"];
            $question = $entry["2"];
    
    $con=mysqli_connect($servername, $username, $password, $dbname);
    mysqli_query($con,"INSERT INTO wp_contacts (id, name, last_name, state, city, address, address_2, bbd, subscribe, upc, email, subject, comments, phone, user_ip, answer, answered_by, zipcode, category_id, active, contact_captcha, answered_date, dept, computer_name, created) VALUES ('', '$fname', '$lname', '$state', '$city', '$address1', '$address2', '$bbd', '', '$upc', '$email', '$subject', '$question', '', '', '', '', '$zip', '', '', '', '', '', '', '')");
        }
    

    我的第一个问题是我以相反的方式分配了变量声明。

    $entry["12"] = $fname //WRONG
    $fname = $entry["12"] //RIGHT
    

    处理完这件事后,我开始将数据填充到 mysql 表中,但是,只填充了某些字段。经过进一步调查,我注意到用于访问 $entry 的 ID 不正确。为了获得正确的 id,我右键单击浏览器中的每个字段并检查该元素。这向我展示了这样的名称属性:name="input_1.3"。 “input_”前缀后面的数字是用于 $entry 的 id。我更改了错误的 id,现在数据可以完美发布。

    我也用这个来连接数据库:

    mysqli_connect
    

    如果有人有类似的问题,希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 2016-06-27
      • 2021-09-03
      • 2019-03-12
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多