Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP向CSV文件添加标题_Php_Html_Forms_Csv - Fatal编程技术网

通过PHP向CSV文件添加标题

通过PHP向CSV文件添加标题,php,html,forms,csv,Php,Html,Forms,Csv,我有下面的PHP脚本用于创建CSV并将数据从HTML表单收集到CSV文件,但我无法将标题添加到CSV文件的第一行。我是PHP领域的新手,如果有人能用这段代码帮助我,我将不胜感激: <?php $fieldA = $_POST["prezime"]; $fieldB = $_POST["ime"]; $fieldC = $_POST["datumrodjenja"]; $fieldD = $_POST["mestorodjenja"]; $fieldE = $_POST["rod"]; $

我有下面的PHP脚本用于创建CSV并将数据从HTML表单收集到CSV文件,但我无法将标题添加到CSV文件的第一行。我是PHP领域的新手,如果有人能用这段代码帮助我,我将不胜感激:

<?php

$fieldA = $_POST["prezime"];
$fieldB = $_POST["ime"];
$fieldC = $_POST["datumrodjenja"];
$fieldD = $_POST["mestorodjenja"];
$fieldE = $_POST["rod"];
$fieldF = $_POST["prebivaliste"];
$fieldG = $_POST["brojpasosa"];
$fieldH = $_POST["izdatod"];
$fieldI = $_POST["vazido"];
$fieldJ = $_POST["profesija"];
$fieldK = $_POST["zanimanje"];
$fieldL = $_POST["fiksni"];
$fieldM = $_POST["mobilni"];
$fieldN = $_POST["email"];
$fieldO = $_POST["napomena"];

$keys = array($fieldA,$fieldB,$fieldC,$fieldD,$fieldE,$fieldF,$fieldG,$fieldH,$fieldI,$fieldJ,$fieldK,$fieldL,$fieldM,$fieldN,$fieldO); //THIS IS WHERE YOU PUT THE FORM ELEMENTS ex: array('$fieldA','$fieldB',etc)

$fname = 'prijave.csv';
$fp = fopen($fname,'a');
//add BOM to fix UTF-8 in Excel
fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));

fputcsv($fp, $keys);
fclose($fp);

?>

您可以使用键创建一个数组,并创建一个循环来获取值。然后使用
fputcsv()
写入标题和值:

$keys = ["prezime", "ime", "datumrodjenja", "mestorodjenja", "rod", "prebivaliste",
         "brojpasosa", "izdatod", "vazido", "profesija", "zanimanje", "fiksni", "mobilni",
         "email", "napomena"];

$values = [];
foreach ($keys as $key)
    $values[] = $_POST[$key];

$fname = 'prijave.csv';
$fp = fopen($fname,'a');
//add BOM to fix UTF-8 in Excel
fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
fputcsv($fp, $keys);
fputcsv($fp, $values);
fclose($fp);

编辑:要每次添加值,但不添加BOM表和标题,您可以检查是否存在,并仅在文件为新文件时添加:

// same code as above ($header + $values)
// then,
$fname = 'prijave.csv';
if (!file_exists($fname)) {
    $fp = fopen($fname,'a');
    //add BOM to fix UTF-8 in Excel
    fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
    fputcsv($fp, $keys);
}
else {
    $fp = fopen($fname,'a');
}
fputcsv($fp, $values);
fclose($fp);

您可以使用键创建一个数组,并创建一个循环来获取值。然后使用
fputcsv()
写入标题和值:

$keys = ["prezime", "ime", "datumrodjenja", "mestorodjenja", "rod", "prebivaliste",
         "brojpasosa", "izdatod", "vazido", "profesija", "zanimanje", "fiksni", "mobilni",
         "email", "napomena"];

$values = [];
foreach ($keys as $key)
    $values[] = $_POST[$key];

$fname = 'prijave.csv';
$fp = fopen($fname,'a');
//add BOM to fix UTF-8 in Excel
fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
fputcsv($fp, $keys);
fputcsv($fp, $values);
fclose($fp);

编辑:要每次添加值,但不添加BOM表和标题,您可以检查是否存在,并仅在文件为新文件时添加:

// same code as above ($header + $values)
// then,
$fname = 'prijave.csv';
if (!file_exists($fname)) {
    $fp = fopen($fname,'a');
    //add BOM to fix UTF-8 in Excel
    fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
    fputcsv($fp, $keys);
}
else {
    $fp = fopen($fname,'a');
}
fputcsv($fp, $values);
fclose($fp);
请查看以了解fputcsv的实际工作原理

函数的每次调用都会将一行CSV从数组写入指定的文件

第一个例子很好地说明了这一点:

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>
请查看以了解fputcsv的实际工作原理

函数的每次调用都会将一行CSV从数组写入指定的文件

第一个例子很好地说明了这一点:

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

谢谢我试图使用您提供的代码,但问题是,在我提交表单时,它总是应用标题和数据,因此CSV文件看起来像是第1行=标题、第2行=数据、第3行=标题、第4行=数据等。我需要的标题只是第一行,而不是每秒钟。@kuzmvnovic Ok,因此,您应该添加一个条件,以便仅在文件不存在时添加标题和BOM表标记。我将更新答案。还有一件事,是否可以将标题名称更改为其他名称,而不是与字段名称相同?当我将标题更改为其他内容时,会收到一条错误消息。@kuzmvnovic是的,您可以用标签创建另一个数组,并在第一个
fputcsv()
中使用它。请看一个示例(当然不起作用,因为没有POST值,但向您展示了一种方法)。谢谢!我试图使用您提供的代码,但问题是,在我提交表单时,它总是应用标题和数据,因此CSV文件看起来像是第1行=标题、第2行=数据、第3行=标题、第4行=数据等。我需要的标题只是第一行,而不是每秒钟。@kuzmvnovic Ok,因此,您应该添加一个条件,以便仅在文件不存在时添加标题和BOM表标记。我将更新答案。还有一件事,是否可以将标题名称更改为其他名称,而不是与字段名称相同?当我将标题更改为其他内容时,会收到一条错误消息。@kuzmvnovic是的,您可以用标签创建另一个数组,并在第一个
fputcsv()
中使用它。请看一个示例(当然不起作用,因为没有POST值,但向您展示了一种方法)。谢谢!我试图使用您提供的代码,但问题是,当我提交表单时,它总是应用标题和数据,因此CSV文件看起来像第一行=标题,第二行=数据,第三行=标题,第四行=数据,等等。我只需要第一行上的标题,而不是每秒钟。因此,不要每次都应用它谢谢!我尝试使用您提供的代码,但问题是,当我提交表单时,它总是应用标题和数据,因此CSV文件看起来像第一行=标题,第二行=数据,第三行=标题,第四行=数据,等等。我只需要第一行上的标题,而不是每秒钟。因此,不要每次都应用它