DBのテーブルをPHPを使ってCSVとしてダウンロードさせました。
データの保存をやってないので、ファイル保存する場合は
またちょっとプログラムつけたししないとダメですけど、
何となくCSVをダウンロードさせる流れとかは分かるかもしれません。
INDEX
ヘッダの設定
ファイルの名前を設定して、
ダウンロード用に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で結合します。
コード
今回書いたのはこんなコードでした。
それではー。