サポート » 使い方全般 » MySQLのデータをCSVにしてダウンロードしたい

  • 解決済 kiyo00

    (@kiyo00)


    Webやフォーラムでの検索にて解決に至りませんでしたので、
    初歩的な内容となり誠に恐縮ですがご質問させて頂きたいと思います。

    MySQLに格納されているデータを抽出し、
    CSVファイルにしてダウンロードを行いたく、
    下記コードを実行しようとしましたが、
    CSVファイルのダウンロードウィンドウが表示されず、
    コードが実行されていないように見受けられました。
    header(“Content-Type: application/octet-stream”);
    header(“Content-Disposition: attachment; filename=”sample.csv”);
    必要なプラグイン等の作業が必要となりますでしょうか。
    Wordpressではなく、phpファイルをサーバにアップし
    FirefoxとIEにて実行するとダウンロードウィンドウは表示されます。

    何卒宜しくお願い申し上げます。

    ◆環境
     PHP 5.2.13
     MySQL 5.1
     Firefox 3.6.8
     Internet Explorer 8

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • モデレーター jim912

    (@jim912)

    kiyo00さん、こんにちは。

    phpMyAdminをプラグインとして動作させるWP-phpMyAdminが応用範囲が広く便利なのではと思います。

    他にもっと簡単なのがあるなら、それにこしたことはありませんが。

    jim912さん

    早速の書き込み有難う御座います。
    WP-phpMyAdminで試させて頂きましたが、
    ダウンロード画面は出てこず、MySQLにて検索した
    結果のみブラウザ上に表示されてしまいました。

    「W3 Total Cache」というプラグインを導入すると
    ダウンロード画面が出て、CSVファイルとして
    ダウンロードまでは出来ますが、ファイルの内容が
    MySQLのSELECT結果だけではなく、サイトのソースコードまでが
    ファイルに書き込まれているという状況です。

    こんにちは。
    これは、phpMyAdmin で、エクスポートする。その場合、「CSV データ」にチェックを入れてダウンロードする、という単純な問題ではないのでしょうか? それとも?

    Satoko Kusakabeさん

    書き込み頂きまして誠に有難う御座います。
    説明不足で大変申し訳御座いませんでした。

    私のやりたいことですが、
    自作したWebサイトAに「MySQLデータをダウンロード」と
    いうボタンを作成し、そのボタンをクリックするとページBに飛び、
    ページB内のSQL文にてMySQLからデータを抽出し、
    CSVファイルに書き出し、ダウンロードするという内容になります。

    そこで、ページBにてダウンロード処理を開始させるための
    header(“Content-Type: application/octet-stream”);
    とCSVファイル名を指定するために
    header(“Content-Disposition: attachment; filename=”sample.csv”);
    を記載して、実行してみたのですが、Wordpressでは動作せず、
    WebサイトBにてSQL文の結果が出力されるという状況になっております。

    そこで、ページBにてダウンロード処理を開始させるための
    header(“Content-Type: application/octet-stream”);

    えっと、WordPressがheader情報を送信する前に実行できていますか?ページにソースコードで記述しても先にWordPressのheader情報が送信されるので当然実行されませんよね。

    ダウンロード処理のみを実行させるならページBはWordPressのページで実現するのではなく、普通にphpで作成してもよろしいのではないですか?(実験ではうまくいっているようですし)

    でなければ、ページBの時のみ上記headerを先に実行するようにheader.phpを改造ですかね。

    外部phpファイルで処理しないで、wordPressを利用しようとする理由はどういうところにありますか?差し支えなければ、教えてください。

    余計なことですが、

    header("Content-Disposition: attachment; filename="sample.csv");
    IE6だと、バグで、ダウンロードできないみたいですよ。

    shokun0803さん

    書き込み頂きまして、有難う御座います。
    WordPressがheader情報を送信する前に実行も考えたのですが、
    header.phpを書き換えるということが正当なのかを判断できず、
    また、他に方法があるのではと思い投稿させて頂きました。

    ページBのみを外部phpファイルにて実行させる方向で実装させようと思います。
    数々のご助言、誠に有難う御座います。
    また、勉強不足で申し訳御座いません。

    nobitaさん

    書き込み頂きまして、有難う御座います。
    WordPress上で実装を行いたい理由ですが、
    ページを全てWordPressで管理したいという点だけですので、
    外部PHPファイルにて実装しようと思います。

    また、IE6に関してのバグ情報もご丁寧に有難う御座います。
    かなり助かりました。
    いろいろとお教え頂きまして、誠に有難う御座います。

    みなさんそのような回答ではだめです。

    CSVをダウンロードする際、header()が送信されるまえにプログラムを実行
    する必要があります。WordPressではその為の関数が用意されております。

    add_action( ‘init’, ‘GetUserInfoData’ );

    function GetUserInfoData(){
    if($_GET[‘page’] == ‘data_net_menu_e’){
    ここにCSVダウンロードのプログラムを記載
    header(“Content-Disposition: attachment; filename=$file_name”);
    header(“Content-Length:$file_length”);
    header(“Content-Type: application/octet-stream”);
    readfile($file);
    }
    }

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「MySQLのデータをCSVにしてダウンロードしたい」には新たに返信することはできません。