- ベストアンサー
MySQLのデータをPHPで整理して出力する方法とは?
- MySQLのデータをPHPで整理して出力する方法について教えてください。
- アンケートフォームで収集したMySQLのデータをPHPを使って整理して出力したいです。
- 初心者ですが、MySQLのデータをPHPで整理して出力する方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
動かしてないのでどっか間違ってると思いますが・・・ $csv = ""; // CSVデータ // DBへの接続は省略 $sql = "SELECT * FROM main_unq"; $result1 = mysql_query($sql); while ($row1 = mysql_fetch_assoc($result1)) { $csv .= $row1['ID'].",".$row1['アンケートID'].",".$row1['名前'].",".$row1['住所'].",".$row1['電話番号'].","; $sql = "SELECT * FROM option_unq WHERE main_id = ".$row1['ID']; $result2 = mysql_query($sql); while ($row2 = mysql_fetch_assoc($result2)) { $csv .= $row2['option_name']."=".$row2['option_value']."|"; } $csv .= "\n"; } print $csv;
その他の回答 (2)
- kalkichi
- ベストアンサー率64% (22/34)
どのような出力をしたいのか定まらない状態では当然クエリも書けないので、まず出力の形式を決めないとダメですね。 まず質問者様もお困りのようにお書き添えのイメージのような出力は2つともSQL、CSVどちらにしても表現できません。(フィールド数が変わるので表として成立しません。) なので 1.存在する全ての質問をフィールドにし、質問していない場合は空白にする。 2. ID|アンケートID|名前|住所|電話番号|質問と答え といったフィールド名にし 質問と答えの中に パソコン持ってる?=持っている,車持ってる?=持ってない,家族は何人?=5 といったように区切り文字を決めて(CSVなので実際はカンマよりも他の記号がいいと思いますが)質問の数だけつなげていく。 の方法が考えられます。 どちらがいいかは、どのように使うかによると思うのでお好みで。 次にクエリですが、申し訳ないのですがどちらの方法にしても1発で出力できるような書き方がパッと思いつきません。ただしPHPで出力する予定なら無理にクエリを書かなくても、main_unqを引っ張ったデータを元にoption_unqから必要な情報を取りながら整形したり、option_unq LEFT JOIN main_unq でごっそり持ってきて、PHPで必要な情報を抽出、整形していくのがいいと思います。
お礼
早速のご回答ありがとうございます! そうですか。SQL、CSVではこのような形では表現できないのですね。 でもご提案いただいた2の質問と答えというフィールドを作る方法なら使用目的に添った出力ができそうです! こういう形は思いつきませんでした。 PHPで出力するので、一発で出力できなくても問題ありません。 もしそんなに長文にならないようでしたら触りだけでもどのように記述するかを教えていただけないでしょうか? あつかましいお願いだとは分かっていますので、もちろん無理にとはいいません。 とりあえずできるとこまでこれから頑張ってみます!本当にありがとうございました!!
- kalkichi
- ベストアンサー率64% (22/34)
まず知りたい事はなんでしょうか。 MySQLのCSV出力の方法でしょうか。例のような出力を行うクエリの書き方でしょうか。それとも単純に表として見やすい並べ方でしょうか。 またテーブルのフィールド名も何を示しているのかわかりません。main_unqのIDとアンケートIDの違いは?option_unqのIDは一意ではないが何を示している?キーのoption_idはどこにある? もう少し落ち着いて質問を整理された方が回答が付きやすいと思いますよ。 (タイトルを見る限りではSQLの質問ではないようにも思えますが・・・。)
補足
ご回答ありがとうございます。 最終的にはCSVの出力の方法が知りたいのですが、現時点でわからないのは、クエリの書き方です。 フィールド名についても説明が足りませんでした。 すいませんでした。 [main_unq]のIDはauto_incrementで振られる通し番号です。 アンケートIDはアンケートの種類を識別するIDになります。 例の[main_unq]のテーブルではアンケート1とアンケート3の2種類のアンケートがあることになります。 [option_unq]のテーブルのIDもauto_incrementで振られる通し番号ですが、すいません。間違いがありました。 IDは上から1,2,3,1,2となっていますが、正しくは1,2,3,4,5でした。 初心者なもので、この質問をSQLにしていいのかPHPにしていいのか悩んだのですが、こっちのほうにしてしまいました。 どうかよろしくお願いします。
お礼
お礼が遅くなりましてすいませんでした。 本当にありがとうございました! 無事できました!! またよろしくお願いいたしますm(_ _)m