首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fgetcsv写入CSV

使用fgetcsv写入CSV
EN

Stack Overflow用户
提问于 2011-12-23 03:46:45
回答 1查看 1.3K关注 0票数 0

我的PHP代码出了点问题。基本上,我在CSV中有一个人员列表,并且我使用fgetcsv将该文件读取到一个表中。我正在尝试做的是让他们的名字显示为一个链接,他们点击这个链接,它调用fputcsv,并在他们的名字旁边加一个1。

目前我只有显示部分在工作。我真的不确定从哪里开始写作部分。

任何见解都将不胜感激。

非常感谢!

代码语言:javascript
复制
  <?php
  $row = 1;
  $handle = fopen("test/list.csv", "r");
  echo("<table>");
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
      echo("<tr>\r\n");
      foreach ($data as $index=>$val) {
              echo("\t<td><a href=\"#\">$val</a></td>\r\n");
      }
      echo("</tr>\r\n");
  }
  echo("</table>");
  fclose($handle);
  ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-23 03:56:58

您不能直接将csv文件视为数据库。您需要有一些方法来指示单击的行来自原始csv文件中的哪一行。或者通过行号,或者(优选)每行中的某个唯一ID字段。

我假设csv文件的第0列是此行的唯一标识符,因此您将使用下面的输出:

代码语言:javascript
复制
  foreach ($data as $index=>$val) {
          echo("\t<td><a href=\"update.php?id={$data[0]}\">$val</a></td>\r\n");
  }

然后在update.php脚本中,使用基本的伪代码:

代码语言:javascript
复制
<?php
$id = $GET['id'];

$fh = fopen('test/list.csv', 'rb');
$out = fopen('newlist.csv', 'wb');
while($row = fgetcsv($fh)) {
   if ($row[0] == $id) {
       $row[xxx] = 1; // write '1' for this row because it's the row that was clicked on
   }
   fputcsv($out, $row); // write out to new file
}

请注意,我对修改后的输出使用了第二个文件。这比尝试就地编辑原始csv更安全。一旦进行了必要的更改,您只需将新文件移到旧文件上,即可完成编辑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8608970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档