0

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

1 に答える 1

2

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");
  }

そして、update.phpスクリプトで、基本的な疑似っぽいコードで:

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

変更された出力に2番目のファイルを使用していることに注意してください。これは、元のcsvをインプレースで編集するよりも安全です。必要な変更を加えたら、新しいファイルを古いファイルに移動するだけで、編集が完了します。

于 2011-12-22T19:56:58.313 に答える