PHPでのデータ記録方法について

このQ&Aのポイント
  • PHPを使用してアンケートフォームの入力データを記録する方法について説明します。入力されたデータを1行でファイルに追記するため、データの区切りには半角カンマを使用します。
  • アンケートフォームでは、氏名、性別、Email、色、コメントなどのデータを記録します。色の項目は多肢選択であり、複数の回答があり得ます。しかし、データの列数が異なるため、エクセルなどで集計するときに問題が生じます。
  • コメントは複数行で入力される場合もあり、改行が含まれています。そのため、そのまま記録すると1件のデータが複数行になってしまいます。この問題を解決するために、どのような方法がありますか?
回答を見る
  • ベストアンサー

PHPでの記録方法について

PHPでアンケートフォームを作り、入力されたデータを記録する際、1件のデータを以下のように半角カンマで区切って1行で ファイル「enq.dat」に追記していくとします。 「氏名,性別,Email,色,コメント」 好きな色は多肢選択になっているので複数の回答があり得ます。そのため、このデータファイルをエクセルなどで読み込んで集計するとき、行によって色の列数が異なるなどして、集計がしづらくなってしまいます。 また、複数行からなるコメントは改行を含むので、そのまま記録すると、1件のデータが複数行になってしまいます。 こうした問題を解決して1件のデータを1行で記録できるようにするには どうすればいいでしょうか?

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5069/13245)
回答No.1

CSVデータで文字列を扱う場合はダブルコーテーションで括るのが一般的です。 ダブルコーテーションで括れば一連の文字列として認識されるので、色についてはカンマで繋いだモノをダブルコーテーションで括れば1カラムの扱いになり、コメントもダブルコーテーションで括っておけば改行が入っていても1カラムの扱いになります。 "山田太郎","男","hoge@example.com","赤,青,緑","あれこれ\nコメント"

muta3100
質問者

お礼

ありがとうございます!

関連するQ&A

  • 3行ずつ足す

    AWK を使っていあのですが、perl への移行を目指して勉強しています。 (1) 行数が3の倍数 (2) 列数は分からない(スペース区切り。固定列数) (3) # はコメント行 というデータがあります。 このデータを perl に読み込ませて、  三行ずつ足して出力する ようなプログラムをつくっています。 例えば、6行4列のデータ test.dat # comment 1 2 3 5 3 2 1 6 2 2 2 7 4 5 6 7 6 5 4 6 5 5 5 5 を cat test.dat | sum3row.pl のように perl のプログラム sum3row.pl に読みこませて、三行ずつ足して # comment 6 6 6 18 18 18 18 18 という出力を得たいのです。 次の点で困ってます。 ●AWK の場合、今読み込んでいる行の列数は NF という変数で分かるのですが、perl ではよく分かりません。データへのアクセス自体は $data[2] のようにすれば良いことは分かっているのですが・・。 ●AWK の場合、今読み込んでいる行の番号は NR という変数で分かるのですが、perl ではよく分かりません。 すみませんが、よろしくお願いします。。 サンプルプログラムでも助かります(読んで自分で勉強しますので)。

    • ベストアンサー
    • Perl
  • 変数の内容をファイルに書き込む方法を教えてください。

    Visual Basic 2005です。 変数にはカンマ区切りのデータが記録されています。 例・2006,12,6,11,23,00,23.5 のような感じです。 これがDataという変数に入っている場合、このファイルをtxtファイルに上から順に書き込んでいくと言うプログラムです。 ファイル内はこのようになります 2006,12,6,11,23,00,23.5 2006,12,6,11,24,00,23.6 (改行される) 2006,12,6,11,25,00,23.7 (改行される) ・ ・ ちょっと手を貸していただけませんか。 お願いします

  • テキストの「改行」を置き換え

    ワード、ワードパッド、メモ帳、(VISTA Office 2007)の環境で テキストで改行をカンマ1つに置き換えたいのですが、お願いします。 他の文字の置き換えやワードなら改行の削除はできます。 ただ、 ワードで複数行の改行を^13で全部置き換えたら、カンマが複数になってしまいます。複数行の改行が沢山あってもカンマを1つにしたいのです。 ********************************** あいうえお かきくけこ ↓↓↓ あいうえお,,かきくけこ (カンマが複数になってしまいます) ↓↓↓ あいうえお,かきくけこ (カンマを1つにしたい)

  • phpとmysqlで抽出

    Mysqlに下記のようにデータがあります。 そこで、このデーター(日付)を 2013年1月1日(2件) 2013年1月2日(1件) 2013年1月3日(1件) 2013年1月5日(2件) のように抽出、集計したいです。 いろいろ考えましたが、ピンときませんorz どうすれば宜しいですか? お願いします。 Mysqlのデータ +--+---+ |ID |Dat| +--+--+ |1 | 20130101| +--+--+ |2 | 20130101| +--+--+ |3 | 20130102| +--+--+ |4 | 20130103| +--+--+ |5 | 20130105| +--+--+ |6 | 20130105| +--+--+

    • ベストアンサー
    • PHP
  • エクセルデータの集計方法

    次のような膨大なデータがありますが、これを集計結果のように取りまとめたいのですが、簡単で早くできる方法がありましたら教えて下さい。 <データ>    A   B      1行 ○  10 2行 △  52 3行 ◇  25 4行 ○  15 5行 ◇  68 <集計結果>    A   B 1行 ○  25 2行 △  52 3行 ◇  93 データはA列の項目をまとめ、更にA列項目ごとにB列数値を合算するのが目的です。

  • EXCELファイルをマージするツール

    複数のEXCELファイルがパソコンの同一フォルダーにあります。 すべてのファイルはそれぞれタブは1つで、しかも行数も列数も見出しも全く同じファイルです。ちがうのはそこに入っている文字列データだけです。 同じ行番号&列番号のセルにはいずれかの1ファイルにしかデータは入っていません。 これらをマージして、集計(正確には転記)を完了したファイルを作りたいのですが、 何かツールを使って省力化できないでしょうか。

  • ファイルからランダムにデーターを取り出す方法。

    こんにちわ a.datと言うファイルの中に、1111(改行)2222(改行)3333(改行)と言うデータがあるとして そのデーターをランダムに取り出しだすプログラムはどのように記述すればいいでしょうか?

    • 締切済み
    • PHP
  • CSVをExcel2007に取り込む方法について

    CSVファイルをエクセルに取り込みたいと思います。 CSVファイルはカンマでデータを区切っています。 ただ、カンマで区切られたデータの中に、改行コードが含まれている場合があります。 エクセルで、このCSVデータを読み込む場合、セルの中で2行目以降はとぎれてしまいます。 そこで、下記のサイトで、「引用符で囲まれた改行を無視」というエクセルの 機能があることを知りましたが、Excel2007にはこの機能はないのでしょうか? https://tsukaeru-excel.com/line-feed-code-csv-powerquery 最近のバージョンのExcelには標準でそなわっているようです。

  • phpでテキスト書き込み、読み込みについて質問です

    どうしても分からなかったので質問させてください。 phpで画像名、秒数、コメントの入力フォームがあるとして、この3項目をタブ区切りでテキストに書き込みしています。書き込みは問題ないのですが、コメントに改行があった場合str_replaceで改行を削除し、一行データに整形した形で書き込みを行っています。 この一行データを読み込む際、入力であったコメントの改行を表示画面で実現する方法が分かりません。 そもそも間違ったアプローチな気もしております。 なにか別の方法で同じような事を実現できるなら、またこの方法のまま改行を実現する方法が分かる方いらっしゃいましたらご教授願いたいです。 【例】書き込みテキストデータ ファイル名:q2bdvssh0io9be2p43bpo77ao6.txt ファイルデータ: 13421405496478.jpg 10 fsadfjaowjfasjfdoaw hfoafnawofhaoshf 13421405496479.jpg 11 fsadfjaowjfasjfdoaw hfoafnawofhaoshf 13421405496480.jpg 12 fsadfjaowjfasjfdoaw hfoafnawofhaoshf 13421405496481.jpg 13 fsadfjaowjfasjfdoaw hfoafnawofhaoshf タブ区切りで画像名、秒数、コメントとなっています。 仕様としては、複数の画像アップロードを想定しています。 iframeを使用し、セッションIDで作ったテキストファイル名の中に画像名、秒数、コメントを一行区切りでどんどん入れていき、入力フォームに戻る際にテキストファイルを読み込んで表示させています。 分かりづらい説明になってしまったかもしれませんが何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで、○番目のカンマの文字を呼び出す方法

    0,123,45,678,999 など、カンマ区切りの情報がある data.txt というファイルがあり、 別のPHPファイルにdata.txtの内容を書き出したい場合、 <?php echo file_get_contents("data.txt"); ?> と書くと全部表示されてしまいます。 data.txtの1行目で、2番目と3番目のカンマの間の数字(上の例ですと123)を書き出すには、どのように書いたらよいか、お分かりになる方教えて頂けませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう