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


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

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

回答の条件
  • 1人5回まで
  • 登録:2009/01/31 22:27:13
  • 終了:2009/02/05 12:16:50

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/01/31 22:44:09

ポイント35pt

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

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


いま出来ていること

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

  • 1次元配列に、カラム毎に格納されているのですか?
  • 2次元配列に、レコード毎×カラム毎に格納されているのですか?

やりたいこと

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

id:xv1700

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

やりたいことは

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

まだ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;

2009/02/01 15:19:32
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/02/01 15:55:17

ポイント35pt

#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);
}
id:xv1700

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

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

2009/02/05 12:16:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません