Php 使用多行数据将HTML表单转换为CSV

Php 使用多行数据将HTML表单转换为CSV,php,html,arrays,csv,foreach,Php,Html,Arrays,Csv,Foreach,目前,我有一个可以填写的表单,该表单生成一个csv文件,其中包含一行数据和多列数据。这些列是HTML表单中的“我的选择”元素,选择将应用于标题下的行。我需要复制我拥有的选择元素的能力,但我不确定如何在csv中填充第二行、第三行、第四行等 预期结果 标题 名称、电子邮件、客户、经销商、激活日期、带宽、部署类型、位置、类型、操作系统 第2行 名称输入、电子邮件输入、客户输入、经销商输入、激活日期输入、带宽输入、部署类型输入、位置输入、类型输入、操作系统输入 第3行 名称输入、电子邮件输入、客户输入、

目前,我有一个可以填写的表单,该表单生成一个csv文件,其中包含一行数据和多列数据。这些列是HTML表单中的“我的选择”元素,选择将应用于标题下的行。我需要复制我拥有的选择元素的能力,但我不确定如何在csv中填充第二行、第三行、第四行等

预期结果

标题

名称、电子邮件、客户、经销商、激活日期、带宽、部署类型、位置、类型、操作系统

第2行

名称输入、电子邮件输入、客户输入、经销商输入、激活日期输入、带宽输入、部署类型输入、位置输入、类型输入、操作系统输入

第3行

名称输入、电子邮件输入、客户输入、经销商输入、激活日期输入、带宽输入、部署类型输入、位置输入、类型输入、操作系统输入

第4行

名称输入、电子邮件输入、客户输入、经销商输入、激活日期输入、带宽输入、部署类型输入、位置输入、类型输入、操作系统输入


部署位置
服务器类型
服务器操作系统
挑选
洞穴
绿云
前提条件

挑选 域控制器 加利福尼亚州 应用 SQL 无线电数据系统 交换 效用 其他
挑选 窗户 Linux 卵子 其他
添加行


如果(isset($_POST[“提交”])){
$data=array();
$data['name']=$\U POST[“name”]??“”;
$data['email']=$\u POST[“email”]??“;
$data['customer']=$\u POST[“customer”]??“;
$data['RELESER']=$\u POST[“RELESER”]??“;
$data['activationdate']=$\u POST[“activationdate”]??“;
$data['firewall']=$\u POST[“带宽”]??“;
$data['deploytype']=$\U POST[“deploytype”]??“;
$data['location']=$\u POST[“location”]??“;
$data['type']=$\u POST[“type”]??“”;
$data['os']=$\u POST[“os”]??“;
$errors='';
foreach($key=>$value形式的数据){
如果($key='type'| |$key='os'| |$key==''deploytype'){}//
否则{
if(空($value)){
//字段为空(&E)
如果($key=='email'){
如果(!filter_var($data['email'],filter_VALIDATE_email)){
$errors.=“请输入有效的电子邮件地址
”; } }否则{ //字段为空&&!电子邮件 $errors.=$key.'字段是必需的。
'; } } } } //如果没有错误,则继续 if(空($errors)){ //#CSV的标题 $Content=“名称、电子邮件、客户、经销商、激活日期、带宽、部署类型、位置、类型、操作系统\n”; //设置CSV的数据 //在每个字段中添加“”作为分隔符 $row=''; foreach($key=>$value形式的数据){ #将包含在引号中的值和尾随逗号追加到行 $row.=''.$value'.'','; } //删除尾随逗号 $row=mb_substr($row,0,-1); $Content.=$row; //#设置文件名并创建CSV文件 $timestamp=date(“Y-m-d_H-i-s”);//$timestamp取当前时间 $myFile=$timestamp.“\u new-voice-deployment.csv”;//向文件名添加时间戳 $csv_handler=fopen($myFile,'a');//将“w”更改为“a” if(fwrite($csv\u handler,$Content)){ echo“表单提交成功”; }否则{ 回显“表单提交未成功”; } fclose($csv_handler); }否则{ 回音$错误; } }
标题具有选择元素选项
要在表单中选择行

继续上面的注释,似乎只需要更改这两行:

$myFile = $timestamp."_new-voice-deployment.csv"; // add timestamp to the file name
$csv_handler = fopen ($myFile,'w');
变成这样:

$myFile = "data.csv"; // or any other filename...
$csv_handler = fopen ($myFile,'a'); // instead of w
希望我最终能理解


编辑,我希望(现在)我终于理解了您的请求(添加了代码注释):


继续上面的评论,似乎您只需要更改这两行:

$myFile = $timestamp."_new-voice-deployment.csv"; // add timestamp to the file name
$csv_handler = fopen ($myFile,'w');
变成这样:

$myFile = "data.csv"; // or any other filename...
$csv_handler = fopen ($myFile,'a'); // instead of w
希望我最终能理解


编辑,我希望(现在)我终于理解了您的请求(添加了代码注释):


您也可以共享php吗?这是我正在使用的php,我正在将其用于我的另一个项目,并希望编辑此项目以处理多行。很抱歉,我不明白期望的结果是什么?似乎在每次提交时,您都在创建包含一长行数据的新文件。你想改变什么?您希望一个文件向其中添加新行,还是希望断开长行?如果正确,此脚本将在提交文件时创建一个包含单行数据的文件。理想的结果是在同一个文件中创建多行数据。在HTML中,我有一个“添加行”按钮,可以复制元素,因此如果您填写表单而不单击此按钮,那么它将是一行数据。但是,如果单击“添加行”并复制元素,则会在同一文件中获得第二行数据。希望helpsHere是我的数组向php吐出的内容,所以在我的表单中,我动态复制了两次helpsHere,这样我总共有三行数据要填写。它将这些选择放入子数组中,但我的PHP脚本如何解析位置、类型和操作系统数组,并将它们添加到csv文件中的单独行中,这让我感到困惑。[location]=>Array([0]=>cavern[1]=>greencloud[2]=>onprem)[type]=>Array([0]=>util[1]=>rds[2]=>ca)[os]=>Array([0]=>windows[1]=>linux[2]=>ova][submit submit Form-你也可以分享php吗?这就是我正在开发的php,我正在将此用于我的另一个项目,并希望编辑此项目以处理多行。抱歉,我不明白期望的结果是什么?似乎在每次提交时,您都在创建包含一长行数据的新文件。什么