• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでCSVファイルの任意の行だけを編集したい)

PHPでCSVファイルの任意の行だけを編集する方法

このQ&Aのポイント
  • 簡易掲示板の管理画面を作成しようと思っていますが、うまくいかずに悩んでいます。入力フォームで送られてきた内容をcsvファイルに書き込み、それを表示するという掲示板なのですが、管理画面ではそのcsvファイルを操作して、任意の書き込みを修正・削除できるようにしたいと考えています。
  • 編集用のフォームで$info_noを飛ばして、CSVファイル内の$li_noと一致した場合、$li_noの行を書き換えという処理をしているつもりなのですが、なぜか、他の行がすべて消えて、編集した行だけがファイル内に残ります。いろいろと検索して試してはみたのですが、どうもうまくいきません。
  • 上記の方法以外にも、PHPのCSVファイルの任意の行を編集する方法はあります。別の方法としては、CSVファイル全体を配列に読み込んでから、編集したい行だけを書き換えて再度CSVファイルに保存する方法があります。この方法を使えば、行を削除する場合も配列から該当する行を削除してからCSVファイルに保存することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

ロジックは書きませんが、 1.CSVの内容をメモリー(変数)に読み込む 2.$li_noと一致した場合 :入力された情報でCSVに書き込む   $li_noと一致しない場合:メモリの情報でCSVに書き込む 一部の書き換えでは無く、ファイル全体を書き換えが必要になります。

hukazuo
質問者

補足

ありがとうございます。 回答を参考に、 if($mode == "edit"){ foreach($csv as $val){ list($li_id, $li_date, $li_comment) = split("\t",$val); $fp = fopen(csv' , 'w'); if($li_id == $info_no){ $csv[$li_id] = "$li_id\t$date_y/$date_m/$date_d\t$comment\t\n"; }else{ $csv[$li_id] = "$li_id\t$li_date\t$li_comment\t\n"; } } $fp = fopen('csv' , 'w'); fputs ($fp, $csv[$li_id]); for ($i=0; $i<1000; $i++){ fputs ( $fp,$csv[$i]); } fclose($fp); } としたのですが、うまくいきませんでした。 なぜか、編集した文章と、最後に新規で追記した文章が追加されてしまいます・・・・。 1. あいうえお 2. かきくけこ 3. さしすせそ の2を編集すると 1.あいうえお 1.あいうえお 2.かきくけこ(編集した) 3.さしすせそ となってしまいます。。。。

関連するQ&A