[PHP-users 4083] Re: テキスト入力フィールドへ入力した値を CSV へ保存

Go Yano php-users@php.gr.jp
Mon, 3 Dec 2001 17:51:51 +0900


矢野です。

#ダブリでメールを送ったときは一言入れたほうがいいと思います。
#Subjectがおかしかったので、それだと思いますが。

> CSVファイルからfgetcsv関数を用いてデータをオープンし、
> 各値を配列($csv[$i][$j])に入れてテキスト入力フィールド
> に格納しています。
>
> $fp = fopen ("sample.csv","rb");

微妙に言いたいことが分かるような気もしますが、MLではみんなに
分かるように説明した方が言いと思います。
fgetcsv関数で・・・と書いてあるのにそれに関する記述がなく、この
次にはいきなり書き込みになってますし。

> fwrite ($fp, $string);
>    $string= $csv[$i][$j];

順番としては、
fopen -> fgetcsv -> fwrite
なのでしょうか。それとも
fopen -> fwrite -> fgetcsv
なのでしょうか。
そのあたり正確な記述が欲しいですね。


> と記述し、テキストフィールドに値を入力すると、
> もとのCSVファイルにその値が保存され、ファイルが
> 更新されるという処理を行いたいのですが、できていません。

まず、できていない、というのはどういう状態でしょうか。
・ファイルに書き込みが行われない(fwriteがコケる,エラーが出る)
・エラーは出ないが書き込まれず、古い情報のまま
・書き込みは行われるが、$csvの値が古いまま
だいたいこのような状況が考えられますが。

このように情報が微妙ですのでハズしているかもしれませんが、fgetcsv
の使い方ではないでしょうか。
引数とかではなく、アルゴリズム的なもので。
fopen -> fgetcsv -> fwrite
の順番だったりしたら、$csvの中身は当然古いままですよね。
また、ファイルの読み書きの際にはflock()を使用されることをお勧めし
ます。

ひとまずもう少し詳細で正確な情報をいただければ分かるかもしれません。