带有标题和数据数组的重力形式提交给csv问题

时间:2018-12-12 18:04:20

标签: php wordpress csv fputcsv gravityforms

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

我正在使用PHP操作钩子gform_after_submission从Gravity Forms获取条目数据。 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 );

1 个答案:

答案 0 :(得分:0)

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

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 );