将html表格表头写入csv文件

时间:2016-04-07 16:49:09

标签: php csv

我有2个问题/问题,我现在想弄清楚。我有一个HTML表单,表单内部是表格。我想要做的是包括我所拥有的表头,并将其作为第一行写入csv文件。我似乎无法想出那一个。这就是我的html表单。

<html>
<form>
<table>
<h1> Shorts </h1>
<thead>
<tr>
  <th> Header 1 </th>
  <th> Header 2 </th>
  <th> Header 3 </th>
  <th> Header 4 </th>
  <th> Header 5 </th>
</tr>
</thead>
//form input here....

</table>
</form>
</html>

这是我有的PHP脚本

     <?php

function myfputcsv($handle, $array, $delimiter = ',', $enclosure = '"', $eol = "\n") {
    $return = fputcsv($handle, $array, $delimiter, $enclosure);
    if($return !== FALSE && "\n" != $eol && 0 === fseek($handle, -1, SEEK_CUR)) {
        fwrite($handle, $eol);
    }
    return $return;
}

if(isset($_POST['mydrivers']))  {  
$header=array("Driver", "Date", "Customer #", "Invoice #", "Product Description", "Size", "CS", "Btls", "CHK Itls");
$data=array();

$rows = 0;
$fp = fopen('driver' . date('m-d-y'). ".csv", 'a');

while ( ! feof($fp) ) 
{ 
    $stuff = fgets($fp); 
    if ($stuff) $rows++; 
} 
fseek($fp, 0);

//myfputcsv($handle, $header);
 fputcsv($fp, $header);
 foreach (array_slice($_POST,0,count($_POST)-1) as $key => $value) {    
     //$header[]=$key;
     $data[]=$value;
 }  



    myfputcsv($fp, $data);
fclose($fp);
echo "data added";
}

?>

当我打开csv文件时,唯一的信息就是输入数据。如何在第一行中包含所有<th>元素?

我的第二个问题是如何将此文件保存到其他位置?该文件将被命名为'filename'. date('m-d-y'). ".csv",并且该位置可以说我希望它保存在我的桌面上,我会创建一个带有桌面路径加上文件名变量的变量,并在使用fopen()时调用吗?我没有将其作为附件下载的原因是因为数据将不断添加到文件中。

1 个答案:

答案 0 :(得分:0)

由于您的标题是硬编码的,我建议您将表单中的标题硬编码为隐藏变量,如下所示:

$_POST['headerN']

然后只需通过N阅读它们,其中$headers = array("header 1", "header 2", "header 3", "header 4", "header 5"); fputcsv($handle, $headers); 为1-5。或者,您可以简单地在服务器端对数组进行硬编码。

或者,您可以简单地对数组中的标头服务器端进行硬编码,然后在循环数据之前将其写入CSV文件:

{{1}}