![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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はいりません。
まさにマニュアルのサンプル通りに打ち込んで引っかかってしまいました。
おっしゃる通りに修正したところ、無事入力することができました。
今後の為にきちんと覚えておこうと思います。
どうもありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?8acaa2e)
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ランキング
-
アップロードファイル名の文字化け
-
Flaskでサーバー立ち上げに関して
-
php の処理をした結果をカウン...
-
mySQLのデータを多次元配列に格...
-
foreachがうまく動かない
-
連想配列について
-
name属性が全角の場合・・・
-
PHPのリロード時の処理
-
HTMLで前の画面に戻る時、入力...
-
PHPでURLにジャンプするには?
-
DBの値をチェックボックスに反...
-
<input type="hidden" >で配列...
-
ボタンをクリックでPHP文を実行
-
入力フォーム→確認画面→送信画...
-
php mysql でチェックボックス...
-
検索時の選択内容を保持する方法
-
syntax error, unexpected '}' ...
-
「"」(ダブルクォーテーション)...
-
画面が更新されてもチェックボ...
-
PHPで受け取ったパラメータを別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
ファイル名を変更してアップロ...
-
アップロードファイル名の文字化け
-
PHPからHTMLへの変数の受け...
-
プログラミングC++のmapについて
-
phpで変数を使ってcopyできない
-
Flaskでサーバー立ち上げに関して
-
SQLインジェンクション対策法を...
-
POSTの項目に追加
-
パラメータを2個つけたい
-
サブフォルダ内の全てのテキス...
-
フォームで送られてきたメール...
-
PHP FTPサーバへの画像アップロ...
-
連想配列を複数条件で比較して...
-
name属性が全角の場合・・・
-
if function PHP
-
マクロ(VBA)について
-
PDOのprepareでLIKEの部分一致...
-
画像をDBに登録できない
-
テキストボックスの値を取得したい
おすすめ情報