Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用fgetcsv写入CSV_Php_Csv_Fgetcsv_Fputcsv - Fatal编程技术网

Php 使用fgetcsv写入CSV

Php 使用fgetcsv写入CSV,php,csv,fgetcsv,fputcsv,Php,Csv,Fgetcsv,Fputcsv,我的PHP代码有一些问题。 基本上,我有一个CSV格式的人员列表,我正在使用fgetcsv将该文件读入一个表中。我想做的是让他们的名字显示为一个链接,他们点击链接,它调用fputcsv,并在他们的名字旁边放一个1 目前我只有显示部分工作。 我不确定从哪里开始写作 如有任何见解,将不胜感激 非常感谢 <?php $row = 1; $handle = fopen("test/list.csv", "r"); echo("<table>"); while (($

我的PHP代码有一些问题。 基本上,我有一个CSV格式的人员列表,我正在使用fgetcsv将该文件读入一个表中。我想做的是让他们的名字显示为一个链接,他们点击链接,它调用fputcsv,并在他们的名字旁边放一个1

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

如有任何见解,将不胜感激

非常感谢

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

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

我将假设csv文件的第0列是该行的唯一标识符,因此您将有以下内容用于ouptut:

  foreach ($data as $index=>$val) {
          echo("\t<td><a href=\"update.php?id={$data[0]}\">$val</a></td>\r\n");
  }
foreach($index=>$val的数据){
回音(“\t\r\n”);
}
然后在update.php脚本中,在基本伪ish代码中:

<?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
}

@Mark B谢谢!现在我知道从哪里开始了。对于显示部分,我遇到了一个问题。。。如何在显示CSV时跳过唯一标识符?我的CSV文件看起来像:1,Kevin Johnson 2,Steve Jobs 3,Bill Gates 4,Steve Woz如何使用fgetcsv隐藏1,2,3,4?
while($data=fgetcsv($handle,1000,“,”)!==FALSE){echo(“\r\n”);foreach($data as$index=>$val){echo(\t\r\n”);}
fgetcsv按行分析csv并返回单个字段的数组。这意味着$row[0]依次是1,2,3,4,$row[1]是名称。