Php 将html表单表头写入csv文件
我现在有两个问题要解决。我有一个html表单,表单中有一个表格。我试图做的是包含我已经准备好的表头,并将其作为第一行写入csv文件。我似乎想不出那一个。这就是我的html表单的外观Php 将html表单表头写入csv文件,php,csv,Php,Csv,我现在有两个问题要解决。我有一个html表单,表单中有一个表格。我试图做的是包含我已经准备好的表头,并将其作为第一行写入csv文件。我似乎想不出那一个。这就是我的html表单的外观 <html> <form> <table> <h1> Shorts </h1> <thead> <tr> <th> Header 1 </th> <th> Header 2 </th&
<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>
短裤
标题1
标题2
标题3
标题4
标题5
//这里的表单输入。。。。
这是我的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文件时,唯一的信息就是输入数据。如何在第一行中包含所有
元素
我的第二个问题是如何将此文件保存到其他位置?该文件将命名为
'filename'。日期(“m-d-y”)。“.csv”
并且该位置允许我将其保存在桌面上,我是否会创建一个带有桌面路径和文件名变量的变量,并在使用fopen()时被调用?我之所以没有将其作为附件下载,是因为数据将不断添加到文件中 由于标题是硬编码的,我建议您将表单中的标题硬编码为隐藏变量,如下所示:
<form method="post" action="...">
<input type="hidden" name="header1" value="Header 1">
<input type="hidden" name="header2" value="Header 2">
<input type="hidden" name="header3" value="Header 3">
<input type="hidden" name="header4" value="Header 4">
<input type="hidden" name="header5" value="Header 5">
...
</form>
提交发件人时,只能传递
input
和textarea
元素。使用Ajax是以编程方式生成服务器端的表头还是以HTML硬编码的?表头是以HTML硬编码的。是否可以在数组中写入头,然后让该数组写入文件?我曾想过这是否可能,但我不知道如何编写代码。我想我的headers变量应该是这样的<代码>$headers=数组(“头1”、“头2”、“头3”、“头4”、“头5”)但是我不知道从这里该怎么办。@bobdon Yes,我在下面更新了我的答案以包含此选项当我硬编码头服务器端时,我收到一个错误,说fputcsv()期望参数1是一个资源,而null是给定的。我假设您正在从函数myfputcsv()中调用这两行代码
其中定义了$handle
。如果你在其他地方这样做,我认为你在使用$fp
。在您有myfputcsv($fp$data)的地方尝试这些代码行代码>现在。好的,这确实有效,但问题是当我再次输入数据时,标题再次出现。因此,我没有3行数据,而是4行数据,因为用againI编写的标题也更新了我的代码,以反映您所说的内容。我得到的结果是页眉一直打印一次,条目已经提交。处理这个问题的一个快速方法是计算文件中的行数,如果是0,则放入页眉,否则,跳过该部分并只转储数据。
$headers = array("header 1", "header 2", "header 3", "header 4", "header 5");
fputcsv($handle, $headers);