PHPでメールフォームを作成しており、ログをCSVファイルで取ろうと考えています。
下記のようなコードで作成してみたのですが、送信すると
[1行目]あああ
[2行目]いいい
[3行目]ううう
という感じで改行して記録されてしまいます。
これを、
[1行目]あああ,いいい,ううう
[2行目]かかか,ききき,くくく
という形で、1レコード1行になるように記録できないでしょうか。
どうぞよろしくお願いします。
---以下コード---
<?php
//フォームの値を取得
if ($_SERVER["REQUEST_METHOD"] == "POST"){
foreach ($_POST as $k => $v){
//「magic_quotes_gpc=On」のときはエスケープ解除
if (get_magic_quotes_gpc()){
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
//言語コード指定
mb_language('Japanese');
mb_internal_encoding("SJIS");
//保存ファイル
$file_name = "file.csv";
//配列を作成
$array = array($name , $phone , $add);
//ファイルを開く
$file = fopen($file_name, "a+") or die("OPENエラー $file_name");
//書き込み
if (is_array($array)){
foreach($array as $list){
fputcsv($file, split(',',$list));
}
}
else {
echo "<p>書き込みエラー</p>";
}
//ファイルを閉じる
fclose($file);
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<fieldset><legend>フォーム</legend>
名前:<input name="name" id="name" type="text" size="40" value="" /><br />
電話:<input name="phone" id="phone" type="text" size="40" value="" /><br />
住所:<textarea name="add" id="add" cols="40" rows="2"></textarea><br />
<input name="submit" type="submit" value="送信" />
</fieldset>
</form>
No.3ベストアンサー
- 回答日時:
ああ、たぶん、マニュアルに書いてあるサンプルソースを見て、勘違いしちゃったんですね。
(あのサンプルは紛らわしいね)foreach($array as $list){
fputcsv($file, split(',',$list));
}
を、単純に
fputcsv($file, $array);
としてみてください。
fputcsvの出力データは、一行分をまとめて配列で渡してあげればOKです。
既に、一行分がまとめて配列に入っているようですので、foreachやsplitはいりません。
まさにマニュアルのサンプル通りに打ち込んで引っかかってしまいました。
おっしゃる通りに修正したところ、無事入力することができました。
今後の為にきちんと覚えておこうと思います。
どうもありがとうございました。
No.2
- 回答日時:
> fputcsv($file, split(',',$list));
$list には、項目値を「,」区切りで、一行分の全データを格納している前提のようですけど。
その前提に沿ったデータを入れてやればいいのでは。
No.1
- 回答日時:
fputcsvは実行のたびに改行するので、変数等に格納してから出力しましょう。
ありがとうございます。
その後自分でもコードをいじってみまして、
$addlist = sprintf("%s,%s,\"%s\"", $name , $phone , $add);
$file = fopen($file_name, "a+") or die("OPENエラー $file_name");
fputs($file, $addlist ."\n");
という形で解決しました。
どうもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Fortranでのファイル名操作につ...
-
重複を防ぐ記述について教えて...
-
Flaskでサーバー立ち上げに関して
-
phpでショッピングカート機能を...
-
PHPで入力フォームでデータを確...
-
chmod 教えてください
-
PHPとHTML+Xamppの掲示板で画像...
-
プルダウンとCSVの連動
-
PHPでURLにジャンプするには?
-
アマゾンのような評価の星を選...
-
POSTを使わずに値を渡す方法
-
CodeIgniter/set_value()
-
<input type="hidden" >で配列...
-
フォームボタンを押すたびに数...
-
PHP ボタンが押されたら処理を...
-
入力した部分を表示させたまま...
-
POSTデータのNAME属性をVALUEに...
-
ブックマークレットで他ドメイ...
-
チェックボックスによる検索
-
PHP で画面の一部だけを変えたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flaskでサーバー立ち上げに関して
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
phpで変数を使ってcopyできない
-
PHPで入力フォームでデータを確...
-
PHPからHTMLへの変数の受け...
-
POSTの項目に追加
-
PHP MySql 画像を取得
-
MySQL,PHPのリロードによる二重...
-
UPDATEできない
-
ファイル名を変更してアップロ...
-
php、sqlite3にデーター追加で...
-
openCVのトラックバーについて
-
複数条件での検索について教え...
-
PHP5でsimple_xml_load_fileす...
-
PHPのリロード時の処理
-
連想配列を複数条件で比較して...
-
PDOのprepareでLIKEの部分一致...
-
POSTされない
-
アップロードしたファイルの絶...
おすすめ情報