質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

930閲覧

CSVファイルへの書き込みが上手くいかない。

Anri_Hani

総合スコア7

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/11/02 12:44

お問い合わせフォームを送信した際の情報をCSVファイルへ格納したいです。
しかしこちらのようになってしまう現状です。イメージ説明
こちらは、
会社名:個人事業主
名前:りんご
メールアドレス:info@apple.com

会社名:株式会社IT
名前:情報太郎
メールアドレス:google@gmail.com

の2人の情報を記入した時の実行例です。
プログラムのソースコードは下記です。

PHP

1<?php 2 // フォームのボタンが押されたら 3 if ($_SERVER["REQUEST_METHOD"] == "POST") { 4 // フォームから送信されたデータを各変数に格納 5 $company = $_POST["company"]; 6 $name = $_POST["name"]; 7 $email = $_POST["email"]; 8 } 9 10 //顧客情報をCSVに書き出す 11 $ShiftJIS = $_POST; 12 mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS); 13 $data .= "\n"; 14 $data .= $company; 15 $data .= ','; 16 $data .= $name; 17 $data .= ','; 18 $data .= $email; 19 $data .= "\n"; 20 $csv = fopen('./exhibition_form.csv', 'a'); 21 fputcsv($csv,$ShiftJIS); 22 fclose($csv); 23?> 24

なぜメールアドレスが2つも表示されてしまうのでしょうか。
ぜひ教えて頂きたいです。よろしくお願いいたします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazto

2020/11/02 14:35

一見して、表示側の問題のように見えます。CSVの表示はどのようにやっていますか? また、保存したCSVファイルをテキストエディタで直接開くなどして確認しましたでしょうか。
Anri_Hani

2020/11/03 02:15

CSVの表示設定は何も行っておりません。 テキストエディタで開いても上記の画像と同じ配列になっております。 テキストエディタの方でも何か修正する必要があるのでしょうか?
guest

回答1

0

ベストアンサー

まず、

php

1 if ($_SERVER["REQUEST_METHOD"] == "POST") { 2 // フォームから送信されたデータを各変数に格納 3 $company = $_POST["company"]; 4 $name = $_POST["name"]; 5 $email = $_POST["email"]; 6 }

ここで POST の時に情報を各変数に退避していますが、

php

1 //顧客情報をCSVに書き出す 2 $ShiftJIS = $_POST; 3 mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS); 4 $data .= "\n"; 5 $data .= $company; 6 $data .= ','; 7 $data .= $name; 8 $data .= ','; 9 $data .= $email; 10 $data .= "\n"; 11 $csv = fopen('./exhibition_form.csv', 'a'); 12 fputcsv($csv,$ShiftJIS); 13 fclose($csv);

fputcsv では 退避した変数も、作成している $data も使ってないのは何を意図したのでしょう?
※おそらく fputcsv ではなく fwrite か何か使おうとしたのでしょうけれども

この内容からすると、そもそも $_POST に複数で渡ってきている可能性もあります。
$_POST の内容を確認されましたか?

投稿2020/11/03 04:09

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Anri_Hani

2020/11/03 06:01

すみません。様々なウェブサイトからそれっぽいものを引用して作ったコードなので何も確認できていません。 上の条件文で$company等に格納された情報が引き継がれていないということでしょうか? また、どのような条件に変更することができたなら、正確に書き込みができますでしょうか?
tacsheaven

2020/11/04 13:43

書いたとおりで、$company などは代入した後使われていませんよね? 結局このコードだと、$_POST の内容を Shift-JIS から UTF-8 に変換して CSV にそのまま吐き出しているに過ぎません。 ですからまず $_POST が意図した者なのかどうか疑いましょう。 何をしたいのか、ご自身で理解しない限り、コードを書いても無意味です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問