PHP 備忘録 | メシのタネ

megurojuutai
このエントリーをはてなブックマークに追加

【PHP】DBの内容をcsvとしてダウンロードさせる

 2014/07/02

DBのテーブルをPHPを使ってCSVとしてダウンロードさせました。
データの保存をやってないので、ファイル保存する場合は
またちょっとプログラムつけたししないとダメですけど、
何となくCSVをダウンロードさせる流れとかは分かるかもしれません。

ヘッダの設定


ファイルの名前を設定して、
ダウンロード用にcontent-typeをバイナリにします。

DBから取得したデータを整理する


エクセルとかで見る時の為に、
カラムと、内容で分けて横一列で保存する必要があります。
なので、カラムはカラムで保存して内容は内容で一行ずつ保存するのが
僕は望ましいと思われるので、こんな感じで書きました。

カラムが別で取りたいので、カウントをつけて
0の場合にだけ、インデックスだけの配列を作るようにしています。

サニタイズについては以降説明しますが、
内容を行の数分取得したいので、$countを行と見立てて、
こいつをインデックスにして内容だけの配列を作成します。

こうすると、$buffの構造が


[0]
     [0]
     [1]
     [2]
     [3]

みたいになるので、僕は管理し易いと思います。

サニタイズ


SJISで保存したかったので、エンコーディングをSJISに変えてます。
それと改行とかが邪魔なので、空文字にしています。この部分です。

mb_detect_encodingで文字コードを取得して、
mb_convert_encodingこれの第三引数にセットして、
第二引数に変換する文字コードを入れてやるのが良いような気がします。

出力プログラム


さっき入れたデータを結合してます。結合した先に改行入れてます。
内容の方は行が一個ではないので回します。

回せばvalの方に、内容のデータが1行ずつ代入されてくるので、

key 0
val array //このarrayの中に内容の1行が入ってる

こいつをimplodeで結合します。

コード


今回書いたのはこんなコードでした。
それではー。


このエントリーをはてなブックマークに追加

コメント

"【PHP】DBの内容をcsvとしてダウンロードさせる"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ