Blogブログ

PHPでデータをCSV出力する方法その2

2013/01/23

だいぶ日が開いてしまいましたが、前回記事の続きです。

前回はアクセスするとすぐCSVのダウンロードになってしまいました。

ここからHTML一手間加えて使い易くしてみましょう。

ダウンロードボタン設置

<?php
	if ( $_POST['mode'] === 'download' ) {
		    //仮のデータ
		    $data[0]['fruit'] = "オレンジ";
		    $data[0]['price'] = "100円";
		    $data[1]['fruit'] = "グレープ";
		    $data[1]['price'] = "200円";
		    $data[2]['fruit'] = "桃";
		    $data[2]['price'] = "300円";
		     
		    //配列にデータが入っている場合は1行の文字列にしてカンマ区切りのデータにしましょう
		    //末尾は改行コードで。''じゃなく、""でくくりましょう。
		    for ( $i = 0 ; $i < count ( $data ) ; $i ++ ) {
		        $csv_data.= $data[$i]['fruit'].','.$data[$i]['price']."\n";
		    }
		    //出力ファイル名の作成
		    $csv_file = "csv_". date ( "Ymd" ) .'.csv';
		 
		    //文字化けを防ぐ
		    $csv_data = mb_convert_encoding ( $csv_data , "sjis-win" , 'utf-8' );
		     
		    //MIMEタイプの設定
		    header("Content-Type: application/octet-stream");
		    //名前を付けて保存のダイアログボックスのファイル名の初期値
		    header("Content-Disposition: attachment; filename={$csv_file}");
		 
		    // データの出力
		    echo($csv_data);
		    exit();
	}
?>
<html>
<body>
	<form action="" method="post">
		<input type="submit" value="csvダウンロード"><br />
		<input type="hidden" name="mode" value="download">
	</form>
</body>
</html>

こうすることにより、[csvダウンロード]ボタンが押された場合のみ

ダウンロードのダイアログが表示されるようになります。

注意事項

29行目の

exit();

を入れないとCSVのデータの中に以下に続くhtmlが入ってしまう場合がありますので、

exit();

をお忘れなく。

他社より断然お得で使いやすい
”アクトのWEB制作”
ACTホームページ相談窓口 / 
システム開発相談窓口