Отправка гравитационных форм в csv с заголовками и массивом данных - PullRequest
0 голосов
/ 12 декабря 2018

Я создал форму, используя Gravity Forms на WordPress.Сейчас я пытаюсь создать и добавить новые записи формы в файл CSV, чтобы я мог передать данные в Qlik.

Я использую ловушку действия PHP gform_after_submission для получения данных вводаиз гравитационных форм. Моя форма (# 11) имеет 3 поля (1,4,3), однако идентификатор поля # 4 имеет три значения

Затем я передаю эти данные через fputcsv .

Я наконец смог создать файл CSV, заполнить заголовки и заполнить данные.К сожалению, как я написал свою функцию, заголовки печатались каждый раз, когда создавалась новая запись.Я добавил оператор if, чтобы проверить, существует ли файл, и добавил заголовки, только если его нет.Это не сработало, как ожидалось, поэтому я вручную добавил заголовки, и теперь он работает, как и ожидалось.Если кто-то может помочь мне указать правильное направление для программного добавления заголовков, я был бы очень признателен.

Моя большая проблема связана с полем данных «Причина».Это только одно поле, но флажок с несколькими значениями.Из-за этого я не могу напрямую ссылаться на идентификатор (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 голосов
/ 12 декабря 2018

Проблема в том, что вы проверяете, существует ли файл после , когда вы создаете файл.Проверьте, существует ли он сначала, затем откройте / создайте его.Смотрите ниже:

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