headers 和数据数组的重力表单提交到 csv 问题
Gravity Forms submission to csv issue with headers and data array
我在 WordPress 上使用 Gravity Forms 创建了一个表单。我现在正在尝试构建新的表单条目并将其附加到 CSV 文件,以便我可以将数据提供给 Qlik。
我正在使用 PHP 操作挂钩 gform_after_submission to get the entry data from Gravity Forms. My form(#11) 有 3 个字段 (1,4,3),但是字段 ID #4 有三个值
然后我将通过 fputcsv 传递该数据。
我终于能够创建 CSV 文件,填充 headers,并填充数据。不幸的是,我编写函数的方式是,每次创建新条目时都会打印 headers。我添加了一个 if 语句来检查文件是否存在,如果不存在则只添加 headers 。它没有按预期工作,所以我手动添加了 headers,现在它按预期工作了。如果有人能帮助我指出正确的方向以编程方式添加 headers,我将不胜感激。
我更大的问题是数据字段 'Reason'。它只是一个字段,而是一个具有多个值的复选框。因此,我不能直接引用字段的 ID(4),而是独立调用每个值。我尝试用所有三个值构建一个数组,但无法弄清楚。
如果您已经读到这里,非常感谢您抽出宝贵的时间。任何 advice/input 表示赞赏。
这是我当前的函数和操作挂钩:
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 );
问题是您在创建文件后检查文件是否存在。首先检查它是否存在,然后 open/create 它。见下文:
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 );
我在 WordPress 上使用 Gravity Forms 创建了一个表单。我现在正在尝试构建新的表单条目并将其附加到 CSV 文件,以便我可以将数据提供给 Qlik。
我正在使用 PHP 操作挂钩 gform_after_submission to get the entry data from Gravity Forms. My form(#11) 有 3 个字段 (1,4,3),但是字段 ID #4 有三个值
然后我将通过 fputcsv 传递该数据。
我终于能够创建 CSV 文件,填充 headers,并填充数据。不幸的是,我编写函数的方式是,每次创建新条目时都会打印 headers。我添加了一个 if 语句来检查文件是否存在,如果不存在则只添加 headers 。它没有按预期工作,所以我手动添加了 headers,现在它按预期工作了。如果有人能帮助我指出正确的方向以编程方式添加 headers,我将不胜感激。
我更大的问题是数据字段 'Reason'。它只是一个字段,而是一个具有多个值的复选框。因此,我不能直接引用字段的 ID(4),而是独立调用每个值。我尝试用所有三个值构建一个数组,但无法弄清楚。
如果您已经读到这里,非常感谢您抽出宝贵的时间。任何 advice/input 表示赞赏。
这是我当前的函数和操作挂钩:
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 );
问题是您在创建文件后检查文件是否存在。首先检查它是否存在,然后 open/create 它。见下文:
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 );