【问题标题】:store offline html form data in a csv file将离线 html 表单数据存储在 csv 文件中
【发布时间】:2012-02-14 17:10:01
【问题描述】:

我正在寻找一个简单的解决方案,希望能解决一个简单的问题。我想在笔记本电脑上设置一个离线 html 文件,该文件的格式非常短,可以提供 csv 文件。我一直在关注fputcsv() 函数来做到这一点,但我不是最有才华的程序员。如果我有一个如下所示的简单表单:

<?php
    if(isset($_POST['submit']))
    {
        $myfile = fopen('file.csv', 'w');
        fputcsv($myfile,
            array($_POST['first-name'], $_POST['last-name'], $_POST['email']));
        fclose($myfile);
    }
?>

<article role="main">

    <header role="banner">

        <h1>Email Updates</h1> 

    </header> 

    <section>

    <form id="form1" name="form1" method="post" action="<?=$_SERVER['PHP_SELF'];?>">

        <input type="text" id="first-name" maxlength="100" autocorrect placeholder="First name" />
        <input type="text" id="last-name" maxlength="100" autocorrect placeholder="Last name" />
        <input type="text" id="email" maxlength="100" autocorrect placeholder="Email address" />

        <button type="submit" id="submit" class="oneup">Submit</button>

    </form>

    </section> 

</article>

我需要什么样的代码来输入一个简单的 csv 文件?

【问题讨论】:

    标签: php html forms csv fputcsv


    【解决方案1】:

    当(如果)表单(正确)提交时,请执行以下操作:

    if( $fp = fopen('file.csv', 'w') )
    {
      fputcsv($fp, $_POST);
    }
    fclose($fp);
    

    【讨论】:

      【解决方案2】:

      当这个表单被提交时,它会填充 $_POST 数组。

      因此,您应该添加一些 PHP 代码来处理提交的值。

      例如:

      <?php
          if(isset($_POST['submit']))
          {
              $myfile = fopen('file.csv', 'w');
              fputcsv($myfile,
                  array($_POST['first-name'], $_POST['last-name'], $_POST['email']));
              fclose($myfile);
          }
      ?>
      

      【讨论】:

      • 我已将这一点 PHP 添加到我的 html 中,但我仍然没有看到任何数据被馈送到 file.csv。这取决于我把它放在哪里?
      • 通常这会在 HTML 表单代码之前。确保您的文件由服务器作为 php 处理;即它有一个 .php 扩展名并且服务器可以正确识别它。
      • 是的,所有这些条件都满足了。仍然没有结果。请记住,我将 php 文件离线存储,因此它不必连接到任何服务器...
      • 服务器是指处理 PHP 文件解析的任何东西。我假设您正在本地主机上运行某些东西。浏览器本身不会对 PHP 做任何事情。
      • 当我将表单放到网上时,我也看不到任何填充 csv 文件的内容...我已经编辑了我的原始问题以在我的正文标签之间包含整个内容...
      【解决方案3】:

      类似于 djot 的回答,我会使用这个:

      if( $fp = fopen('file.csv', 'w') ){
          fputcsv($fp, print_r($_POST, true));
      }
      fclose($fp);
      

      注意带有 true 标志的 print_r,因为这使它更易于阅读。

      如果您真的想将其编写为 CSV,只需使用:

      $data = implode(',' $_POST);
      if( $fp = fopen('file.csv', 'w') ){
          fputcsv($fp, $data);
      }
      fclose($fp);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-24
        • 2014-01-17
        • 2011-02-14
        • 2021-10-24
        相关资源
        最近更新 更多