[PHP-users 27803] Re: テーブル内のフォームをCSVに書き出し

satoshi@try-square.co.jp satoshi @ try-square.co.jp
2005年 12月 8日 (木) 09:45:51 JST


藤本です。

nomoto <shin-1 @ ca2.so-net.ne.jp>さん:
> 問題の本質は、$_POSTでポストされてきたデータには
> 元のフォームでどういうレイアウトで表示されていた項目か
> なんて情報は含まれて居ないですよ。という事を理解されて
> いないという事では?

たしかに、質問者の方の問題はそれですね。
質問の問題は「行」の定義が書かれていないことです。
でも、ソースをよく見ると、

while (list ($key, $val) = each ($_POST)) {
$csvdata=$csvdata.$val.","; ←必ずカンマで終端
}
$fp = fopen("data.php", "a"); ←必ず追記(a)モード
if (!$fp){
print("ファイルを開くことができませんでした"); exit;
}
fwrite($fp,"$csvdata");
fclose($fp);

なぜデータファイルの拡張子がphpなのかは置いといて・・・
同じファイルにカンマ終端を追記していくわけですから、
上記ソースを何度も試行した場合に、前回のレコードとの区切りが
無いのが問題っぽいですね。
よって、最後に改行を追加してやればいいのではないかと。

while (list ($key, $val) = each ($_POST)) {
$csvdata=$csvdata.$val.",";
}
$fp = fopen("data.php", "a");
if (!$fp){
print("ファイルを開くことができませんでした"); exit;
}
fwrite($fp,$csvdata . "\n"); ←修正
fclose($fp);

でも、最初にどなたかご指摘されてましたね。

----
藤本 悟司

株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル2F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/

Key fingerprint = 95F2 6B3D 0B8C 374A 5E67  CA02 F28F 703A C1A9 8346


PHP-users メーリングリストの案内