doutang2017 2018-04-14 11:16
浏览 66
已采纳

通过PHP将标头添加到CSV文件

I have the following PHP script for creating CSV and collecting data from HTML form to CSV file, but I can't add headers to the first row of CSV file. I'm a newbie in PHP world so I'll appreciate if anyone can use this code to help me with that:

<?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);

?>
  • 写回答

2条回答 默认 最新

  • dongzhi6905 2018-04-14 11:21
    关注

    You could create a array with your keys, and create a loop to get values. Then use fputcsv() to write header and values:

    $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);
    

    Edit: To add values but not BOM and headers each time, you could check if the file exists, and add them only if the file is new:

    // 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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵