Не получается заголовок при преобразовании значений HTML-формы в CSV - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь получить значения в CSV-файл из HTML-формы.Ниже приведен код, который я использую

my.php:

if($error == '')
{
    $file_open = fopen("contact_data.csv", "a");
    $no_rows = count(file("contact_data.csv"));
    if($no_rows > 1)
    {
        $no_rows = ($no_rows - 1) + 1;
    }
    $form_data = array(
        'sr_no'     =>  $no_rows,
        'name'      =>  $name,
        'email'     =>  $email,
        'subject'   =>  $subject,
        'message'   =>  $message
    );
    fputcsv($file_open, $form_data);
    $error = '<label class="text-success">Thank you for contacting us</label>';
    $name = '';
    $email = '';
    $subject = '';
    $message = '';
}

, но я получаю CSV без заголовков.(в формате CSV)

   test,test@g.com,test_sub,test_msg
   user,user@g.com,user_sub,user_msg

Ожидаемый результат: (в формате CSV)

    name, email,      subject,  message
    test, test@g.com, test_sub, test_msg
    user, user@g.com, user_sub, user_msg

1 Ответ

0 голосов
/ 25 сентября 2018

Когда вы передаете ассоциативный массив $form_data функции fputcsv так, как вы это делаете - fputcsv($file_open, $form_data), он выводит только часть значения частиассоциативный массив, а не keys .

Так что вам нужно будет подробно добавить ключи, напишите keys part .ie, заголовки к CSV.Вы можете сделать это одним из следующих способов -


Динамически извлекать ключи и сохранять их в отдельном массиве:

$keys = [];    // declare new array to store key values

foreach($form_data as $key => $value) {
    array_push($keys, $key);
}

Или кодировать ключи в массиве:

$keys = array('name','email','subject','message');

Теперь вы можете записать в файл csv следующим образом -

fputcsv($file_open, $keys);

И затем написать свой второй fputcsv () - fputcsv($file_open, $form_data);

Это не вызовет проблем, так как вы открыли файл csv в режиме "a" (добавление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...