dポイントプレゼントキャンペーン実施中!

簡易掲示板の管理画面を作成しようと思っていますが、
うまくいかずに悩んでいます。

入力フォームで送られてきた内容をcsvファイルに書き込み、
それを表示するという掲示板なのですが、
管理画面ではそのcsvファイルを操作して、
任意の書き込みを修正・削除できるようにしたいと考えています。

以下、PHPコードです。

if($mode == "edit"){
foreach($csv as $val){
list($li_no, $li_date, $li_comment) = split("\t",$val);
if($li_no == $info_no){
$csv[$info_no] = "$id\t$date_y/$date_m/$date_d\t$comment\t\n";
fputs($fp,$csv[$info_no]);
fclose($fp);
}
}
}else{
$dat = "$id\t$date_y/$date_m/$date_d\t$comment\t\n";
$fp = fopen('$csv' , 'w');
fputs ($fp, $dat);
for ($i=0; $i<1000;$i++){
fputs ( $fp,$csv[$i]);
}
fclose($fp);
}


編集用のフォームで$info_noを飛ばして、
CSVファイル内の$li_noと一致した場合、
$li_noの行を書き換えという処理をしているつもりなのですが、
なぜか、他の行がすべて消えて、
編集した行だけがファイル内に残ります。

いろいろと検索して試してはみたのですが、
どうもうまくいきません。

どなたか教えてください。
お願いします。

これ以外の方法で簡単にできる方法があれば
そちらも教えていただけたら幸いです。

A 回答 (1件)

ロジックは書きませんが、



1.CSVの内容をメモリー(変数)に読み込む
2.$li_noと一致した場合 :入力された情報でCSVに書き込む
  $li_noと一致しない場合:メモリの情報でCSVに書き込む

一部の書き換えでは無く、ファイル全体を書き換えが必要になります。

この回答への補足

ありがとうございます。
回答を参考に、

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.さしすせそ

となってしまいます。。。。

補足日時:2009/02/02 10:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!