人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpからCSVへのダウンロードについて質問です。

?$response->setContent("1,aaaa,aaaa\n2,bbbb,bbbb\n3,cccc,cccc\n");

DB(テーブル)からデータを取得し、変数に格納しています。そのあとテーブル行数分、CSVにて表示させたいのですが、?に格納するやり方がわかりません。
どなたかご教授ください。

●質問者: xv1700
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CSV DB N2 N3 PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

いま出来ていることと、やりたいことが分かりません。

コメント欄に書き込めないので、確認させてください。


いま出来ていること

DBから取得したデータは、どのような形で変数に格納されているのですか?


やりたいこと

DBから取得したデータを、カラム毎にカンマ "," で区切ったCSV形式に変換し、?のsetContentsメソッドに代入するだけでよいですか?

◎質問者からの返答

回答ありがとうございます。

やりたいことは

","で区切った状態で格納したいです。

まだCSV出力についてはまだわかっていませんが、?に格納できればと思っています。?ではExcelにダウンロードができている状態です。

変数は2次元配列に格納されています。

現在は?のようなやり方は実現できないのか?と思っています。

?失敗例

(上記省略)

$db_dates = sqlのselect文

csv_date = " データ1,データ2,データ3 ";

foreach ($db_dates as $db_date) {

$csv_date .= ",".$db_date->getDate1();

$csv_date .= ",".$db_date->getDate2();

$csv_date .= ",".$db_date->getDate3();

}

$response->setContent($csv_date);

return sfView::NONE;


2 ● pahoo
●35ポイント

#1のコメントの情報をありがとうございます。

では、DBの取得結果が2次元配列 $dbres[行番号][カラム名] に入っているという前提で、以下のようなスクリプトでいかがでしょう。

foreach ($dbres as $row) {
 $n = count($row);
 $csv = '';
 $cnt = 0;
 foreach ($row as $col) {
 $csv .= $col;
 $cnt++;
 if ($cnt > $n) break;
 $csv .= ',';
 }
 $csv .= "\n";
 $response->setContent($csv);
}
◎質問者からの返答

返事がおそくなりました。

実装できました。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ