【问题标题】:Gravity Forms submission to csv issue with headers and data arrayGravity Forms 提交到带有标题和数据数组的 csv 问题
【发布时间】:2019-05-13 21:41:41
【问题描述】:

我在 WordPress 上使用 Gravity Forms 创建了一个表单。我现在正在尝试构建新表单条目并将其附加到 CSV 文件,以便将数据提供给 Qlik。

我正在使用 PHP 操作挂钩 gform_after_submission 从重力表单中获取条目数据。 My form(#11) 有 3 个字段 (1,4,3),但是字段 ID #4 有三个值

然后我通过fputcsv 传递该数据。

我终于能够创建 CSV 文件、填充标题和填充数据。不幸的是,按照我编写函数的方式,每次创建新条目时都会打印标题。我添加了一个 if 语句来检查文件是否存在,如果不存在则只添加标题。它没有按预期工作,所以我手动添加了标题,现在它按预期工作。如果有人可以帮助我指出正确的方向以编程方式添加标题,我将不胜感激。

我更大的问题是数据字段“原因”。它只是一个字段,而是一个具有多个值的复选框。因此,我不能直接引用该字段的 ID(4),而是独立调用每个值。我尝试构建一个包含所有三个值的数组,但无法弄清楚。

如果您已经阅读了这么多,我很感激您抽出宝贵的时间。任何建议/意见表示赞赏。

这是我当前的函数和动作钩子:

function populate_csv( $entry, $form ) {

//Headers info
$headers = array('Nominee', 'Reason1', 'Reason2', 'Reason3', 'Justification');

//Build form data
$data = array(
    'Nominee' => rgar( $entry, '1' ),
    'Reason1' => rgar( $entry, '4.1' ),
    'Reason2' => rgar( $entry, '4.2' ),
    'Reason3' => rgar( $entry, '4.3' ),
    'Justification' => rgar( $entry, '3' ), 
             );

//Open or Create CSV File
$fh = fopen('Nominations.csv', 'a');

// Check to prevent overwriting the headers 
if (!file_exists('Nominations.csv')) {
    //Create headers
    fputcsv($fh, $headers);
}
//Populate the data 
fputcsv($fh,$data);

//Close the file
fclose($fh);
}
add_action( 'gform_after_submission_11', 'populate_csv', 10, 2 );

【问题讨论】:

    标签: php wordpress csv fputcsv gravityforms


    【解决方案1】:

    问题是您正在检查文件是否存在您创建文件之后。首先检查它是否存在,然后打开/创建它。见下文:

    function populate_csv( $entry, $form ) {
    
    //Headers info
    $headers = array('Nominee', 'Reason1', 'Reason2', 'Reason3', 'Justification');
    
    //Build form data
    $data = array(
        'Nominee' => rgar( $entry, '1' ),
        'Reason1' => rgar( $entry, '4.1' ),
        'Reason2' => rgar( $entry, '4.2' ),
        'Reason3' => rgar( $entry, '4.3' ),
        'Justification' => rgar( $entry, '3' ), 
                 );
    
    // check if the file exists or not to determine if headers are needed
    $headersNeeded = !file_exists('Nominations.csv');
    
    //Open or Create CSV File
    $fh = fopen('Nominations.csv', 'a');
    
    // if headers are needed, add them  
    if ($headersNeeded) {
        //Create headers
        fputcsv($fh, $headers);
    }
    //Populate the data 
    fputcsv($fh,$data);
    
    //Close the file
    fclose($fh);
    }
    add_action( 'gform_after_submission_11', 'populate_csv', 10, 2 );
    

    【讨论】:

    • 非常感谢@Peter!我应该早点抓住它。我需要对您的代码进行的唯一修改是删除 if 语句中的一个右括号。
    猜你喜欢
    • 2013-04-20
    • 2013-06-04
    • 1970-01-01
    • 2018-07-29
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多