그누보드로 사이트를 만들면 게시판을 엑셀로 다운받게 해달라는 요청을 받게 됩니다.
데이터가 많은 사이트에서는 엑셀다운로드를 붙이는 것을 권장하지 않습니다. 다운받다가 DB가 죽을 수 있기 때문입니다.
하지만 데이터가 많지 않은 사이트라면 아래와 같이 구현하면 됩니다.
- /bss/exceldn.php 라는 파일을 아래와 같이 만듭니다.
- 링크를 걸어줍니다.
다운받은 파일을 봅니다.
DB 테이블의 전체 필드를 내려받았네요.
코드르 수정해서, 원하는 필드만 받도록 수정도 여러분이 직접 해 보세요.
전체 코드 보기
이상 아래는 전체 코드입니다.
<?php
include_once('./_common.php');
$bo_table = $_REQUEST['bo_table'];
$write_table = 'g5_data_write_' . $bo_table;
$export_file_name= $bo_table .'-'.date('Ymdhis').'.csv';
header("Content-Description: File Transfer");
header('Content-Type:text/csv;charset=UTF-8;');
header('Content-Transfer-Encoding: binary');
header("Content-Disposition: attachment; filename=" . $export_file_name);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
$handle = fopen('php://output', 'w');
ob_clean(); // clean slate
$sql = "
select *
from {$write_table}
limit 1000 -- 서버 죽을지 모르니 1000건만 가져오게합니다.
";
$result = sql_query($sql);
echo "\xEF\xBB\xBF";
$header_array = array();
fputcsv($handle, $header_array);
while ($row = sql_fetch_array($result)) {
fputcsv($handle, $row); // direct to buffered output
}
ob_flush(); // dump buffer
fclose($handle);
die();
?>