使用PHP将HTML表单输入写入csv文件

时间:2015-01-16 12:19:35

标签: php html forms csv web-applications

我有一个PHP表单,用户可以在其中输入数据。在提交时,它应该打开一个现有的CSV文件并附加一些数据。我尝试了很多东西,但这是我目前正在使用的最新代码:

HTML:

<html>
<head><title>Design Request</title></head>
<title>Design Request</title>     

  <form action="test2.php" method="POST">
    <fieldset align="left">
    <legend>Executive Sponsor Form</legend>
    <p><i>To be completed by the executive sponsor</i></p>
    <table>
      <tr>
        <td>Name:</td><td><input type="text" name="SPONSOR_NAME" size="40" /></td>
      </tr>
      <tr>
        <td>Position:</td><td><input type="text" name="SPONSOR_POSITION" size="40" /></td>
      </tr>
      <tr>
        <td>Telephone Number:</td><td><input type="text" name="SPONSOR_TELEPHONE_NUMBER" size="40" maxlength="11" /></td>
      </tr>
      <tr>
        <td>Email Address:</td><td><input type="email" name="SPONSOR_EMAIL" size="40" /></td>
      </tr>
      <tr>
        <td>Budget :</td><td><input type="checkbox" /><input type="text" name="BUDGET" size="37" maxlength="6" placeholder="budget code" /></td>
      </tr>
      <tr>
        <td>Aligned to which<br> priority:</td><td><input type="text" name="PRIORITIES" size="40" /></td>
      </tr>
      <tr>
        <td> Benefit to Business:</td><td><textarea cols="42" rows="10" name="BENEFIT"></textarea></td>
      </tr>
    </form>
    <input type="submit" value="Submit">

PHP:

<html>
  <head>
    <title>Your (Ref No: ["SPONSOR_NAME"]) has been submitted.</title>        
  </head>
  <?php
    $data = array("" . ',' . "SPONSOR_NAME" . ',' . "" . ',' . "" . ',' . "SPONSOR_EMAIL" . ',' . "PRIORITIES" . );
    $cr;

    $fp = fopen("/var/www/testdb.csv","w");
    foreach ($data as $fields){
      fputcsv($fp, $fields);
    }
    fclose($fp);
  ?>
</html>

有些字段是在一个工作表上输入的,因为有些字段是在另一个工作表上输入的,这就是为什么我有一些空字段的数组(我想要在BE和F列中的数据),其他列将包含来自另一个表单的数据。

1 个答案:

答案 0 :(得分:0)

因为您已经为数据构建了数组,所以您可以使用PHP的implode()函数将该行写入文件

  $data = array("" . ',' . "SPONSOR_NAME" . ',' . "" . ',' . "" . ',' . "SPONSOR_EMAIL" . ',' . "PRIORITIES" . );

  $file = "/var/www/testdb.csv";          //file to append to
  $current = file_get_contents($file);    //open the file
  $current .= "\n" . implode(",",$data);  //add line-break then comma separated array data
  file_put_contents($file, $current);     //append new content to file

如果你需要从另一个表单填写数据中的空白,你将不得不重新打开文件,提取最后一行数据,将它爆炸()到一个数组,填写丢失的数据,然后覆盖csv中的原始行...我不推荐这个,因为不同的用户可以提交表单的第一部分然后将他们的新数据附加到csv的错误行...在这种情况下你应该真的接受建议@symcbean并使用适当的数据库。