그누보드4 게시판 엑셀 다운로드 기능 구현 방법
페이지 정보

본문
그누보드4 게시판에서 목록 데이터를 엑셀 파일로 다운로드할 수 있도록 스킨 파일과 전용 처리 파일을 생성 및 수정하는 방법을 안내합니다.
그누보드4 게시판 엑셀 다운로드 기능 구현 방법
그누보드4 게시판 목록을 엑셀 파일로 다운로드하는 기능을 추가하려면 특정 게시판 스킨 폴더 내에 파일을 생성하고 링크 코드를 추가해야 합니다.
1. _common.php 파일 생성
그누보드4 게시판 스킨 폴더(예: skin/board/basic/) 안에 _common.php 파일을 생성하고 아래 코드를 입력하여 공통 파일을 포함시킵니다.
<?php
include_once "../../../common.php";
?>
2. list.skin.php 파일 수정
게시판 목록 스킨 파일인 list.skin.php의 적절한 위치에 관리자 권한일 때만 노출되는 엑셀 다운로드 링크 코드를 추가합니다.
<?php if ($admin_href) {?><a href='<?php echo $board_skin_path;?>/excel.php?bo_table=<?php echo $bo_table;?>' target='_blank'>Excel</a><?php }?>
3. excel.php 파일 생성 및 구현
동일한 스킨 폴더 내에 excel.php 파일을 생성하여 관리자 권한 확인, 테이블 연동, 다운로드 헤더 및 SQL 쿼리 로직을 구현합니다.
<?php
include_once "_common.php";
if (!$is_admin) {
alert("관리자만 접근 가능합니다.");
exit;
}
$excel_down = $g4['table_prefix']. $_GET['bo_table'];
$wr_id = $_GET['wr_id'];
include_once "_common.php";
if ($ms =="excel"){
$g4[title] = "엑셀 문서 다운로드";
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
} else {
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
}
header( "Content-Description: PHP4 Generated Data" );
$temp=sql_fetch_array(sql_query("select count(*) from {$excel_down} "));
$result=sql_query("select * from {$excel_down} order by wr_datetime desc");
$number=$temp[0];
?>
유의사항: 최신 그누보드 버전에서의 호환성 여부를 확인하고 적용해야 합니다.
엑셀 다운로드 파일(excel.php) 관리자 권한 및 데이터베이스 쿼리 구현 방법
그누보드4 게시판에서 엑셀 다운로드 기능을 수행하는 excel.php 파일 내에서 비인가 사용자의 접근을 차단하기 위한 관리자 권한 체크와 게시판 테이블 데이터를 조회하는 데이터베이스 쿼리는 다음과 같이 작성합니다.
1. 관리자 권한 체크 로직
_common.php 파일을 포함한 뒤, $is_admin 변수를 확인하여 관리자가 아닐 경우 접근을 제한합니다.
include_once "_common.php";
if (!$is_admin) {
alert("관리자만 접근 가능합니다.");
exit;
}
2. 데이터베이스 쿼리 및 테이블 설정
URL로 전달된 bo_table 값을 받아와 그누보드 테이블 접두사($g4['table_prefix'])와 결합하여 대상 게시판 테이블을 지정하고, 데이터를 조회하는 쿼리를 실행합니다.
$excel_down = $g4['table_prefix']. $_GET['bo_table']; // 엑셀 다운로드 테이블
$wr_id = $_GET['wr_id'];
include_once "_common.php";
// 원글 + 코멘트 다운로드 시
$temp = sql_fetch_array(sql_query("select count(*) from {$excel_down} "));
$result = sql_query("select * from {$excel_down} order by wr_datetime desc");
※ 최신 그누보드 버전에서의 호환성 여부에는 차이가 있을 수 있으므로 운영 중인 환경을 확인 후 적용해야 합니다.
그누보드4 게시판 엑셀 다운로드 기능 구현 방법
그누보드4 게시판에서 목록을 엑셀 파일로 다운로드할 수 있도록 기능을 추가하려면 스킨 디렉터리 내에 _common.php, list.skin.php, excel.php 파일들을 생성하고 수정해야 합니다.
1. _common.php 파일 생성
그누보드4 게시판 스킨 경로(예: skin/board/basic/)에 _common.php 파일을 생성하고 아래 코드를 추가합니다.
<?php
include_once "../../../common.php";
?>
2. list.skin.php 파일에 다운로드 링크 추가
해당 게시판 스킨의 list.skin.php 파일 내에서 적절한 위치에 관리자 권한일 때만 노출되는 엑셀 다운로드 링크 코드를 추가합니다.
<?php if ($admin_href) {?><a href='<?php echo $board_skin_path;?>/excel.php?bo_table=<?php echo $bo_table;?>' target='_blank'>Excel</a><?php echo ''; }?>
3. excel.php 파일 생성 및 구현
동일한 스킨 경로에 excel.php 파일을 생성하여 관리자 권한 체크, 데이터베이스 테이블 연동 및 출력 로직을 구현합니다.
<?php
include_once "_common.php";
if (!$is_admin) {
alert("관리자만 접근 가능합니다.");
exit;
}
$excel_down = $g4['table_prefix']. $_GET['bo_table'];
$wr_id = $_GET['wr_id'];
include_once "_common.php";
// @mysql_query("SET CHARACTER SET utf8"); // 한글깨지면 주석해지
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
header( "Content-Description: PHP4 Generated Data" );
$temp=sql_fetch_array(sql_query("select count(*) from {$excel_down} "));
$result=sql_query("select * from {$excel_down} order by wr_datetime desc");
$number=$temp[0];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.txt {mso-number-format:'\@'}
</style>
</head>
<body>
<table>
<tr>
<td>번호</td>
<td>제목</td>
<td>아이디</td>
<td>이름</td>
<td>작성일</td>
<td>필드1</td>
<td>필드2</td>
<td>필드3</td>
<td>필드4</td>
<td>필드5</td>
<td>필드6</td>
<td>필드7</td>
<td>필드8</td>
<td>필드9</td>
<td>필드10</td>
</tr>
<?php
while($data=sql_fetch_array($result)) {
echo " <tr> <td>{$number}</td> <td>{$data['wr_subject']}</td> <td>{$data['mb_id']}</td> <td>{$data['wr_name']}</td> <td class='txt'>{$data['wr_datetime']}</td> <td class='txt'>{$data['wr_1']}</td> <td class='txt'>{$data['wr_2']}</td> <td class='txt'>{$data['wr_3']}</td> <td class='txt'>{$data['wr_4']}</td> <td class='txt'>{$data['wr_5']}</td> <td class='txt'>{$data['wr_6']}</td> <td class='txt'>{$data['wr_7']}</td> <td class='txt'>{$data 'wr_8']}</td> <td class='txt'>{$data['wr_9']}</td> <td class='txt'>{$data['wr_10']}</td> </tr> ";
$number--;
}
?>
</table>
</body>
</html>
주의사항 및 예외
- 최신 그누보드 버전에서의 호환성 여부가 다를 수 있으므로 운영 중인 환경을 확인해야 합니다.
그누보드4 게시판 엑셀 다운로드 기능 구현 방법
그누보드4 게시판 목록을 엑셀 파일로 다운로드하는 기능을 추가하려면 기본 스킨 경로에 _common.php, list.skin.php, excel.php 파일을 생성 및 수정해야 합니다.
1. _common.php 파일 생성
그누보드4 게시판 스킨 폴더(예: skin/board/basic/) 안에 _common.php 파일을 생성하고 아래 코드를 입력합니다.
<?php include_once "../../../common.php";?>
2. list.skin.php 파일 수정
게시판 스킨의 list.skin.php 파일 내에서 적절한 위치에 관리자 권한일 때만 노출되는 엑셀 다운로드 링크 코드를 추가합니다.
<?php if ($admin_href) {?><a href='<?php echo $board_skin_path;?>/excel.php?bo_table=<?php echo $bo_table;?>' target='_blank'>Excel</a><?php }?>
3. excel.php 파일 생성 및 구현
스킨 폴더 내에 excel.php 파일을 생성하여 다운로드 헤더 설정 및 데이터베이스 쿼리 로직, 출력 테이블을 구성합니다. 관리자 권한 체크 및 테이블 접두사 설정 코드가 포함됩니다.
주의사항
- 최신 그누보드 버전(그누보드5 등)에서는
data/dbconfig.php경로 및 함수 체계가 다를 수 있으므로 그누보드4 환경에 맞춰 확인이 필요합니다.
그누보드4 게시판 엑셀 다운로드 구현 가이드
- 내 상황: 그누보드4 게시판 목록을 엑셀 파일로 다운로드하는 기능을 추가하고 싶다.
- 우선할 판단: 스킨 폴더 내에
_common.php파일을 생성하여 공통 파일을 포함시키고,list.skin.php에 다운로드 링크를 추가한 뒤,excel.php에서 데이터 조회 및 출력 로직을 구현한다. - 다음 행동:
skin/board/basic/경로에 해당 파일을 각각 생성 및 수정하고 관리자 권한으로 로그인하여 엑셀 다운로드 동작을 테스트한다.
실전 FAQ
Q. 엑셀 다운로드 실행 시 한글이 깨지는 현상이 발생하면 어떻게 하나요?
- 실행 중 막히는 지점: 데이터베이스 문자셋과 출력 인코딩이 일치하지 않을 때 한글이 깨질 수 있습니다.
- 대안 및 예외 처리:
excel.php파일 내에//@mysql_query("SET CHARACTER SET utf8");주석을 해제하여 사용 환경(UTF-8 또는 EUC-KR)에 맞게 설정하고,<meta>태그의 charset도 동일하게 맞춰줍니다.
Q. 전체 게시물이 아니라 특정 글만 엑셀로 다운로드하려면 어떻게 수정하나요?
- 실행 중 막히는 지점: 기본 쿼리는 게시판 전체 데이터를 대상으로 합니다.
- 대안 및 예외 처리: 링크 전달 시
&wr_id=<?=$list[$i]['wr_id']?>파라미터를 추가하고,excel.php파일 내의 SQL 쿼리문을wr_id조건이 포함된 쿼리로 변경하여 특정 게시글만 추출하도록 수정합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 로그인 회원 글 작성 시 이름 및 이메일 직접 입력 수정 가이드 26.10.07
- 다음글그누보드 회원 레벨 10단계 초과 확장 방법 26.10.06
댓글목록
등록된 댓글이 없습니다.