회원 목록 엑셀 다운로드 HOOK 기능
@위드스텝
님이 만들어주신 훅 파일이 잘 작동하지 않아 수정 후 올립니다.
[code]
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 관리자 메뉴 hook
if (!function_exists('admim_menu_mb_excel_export')) {
add_replace('admin_menu', 'admim_menu_mb_excel_export', G5_HOOK_DEFAULT_PRIORITY, 1);
function admim_menu_mb_excel_export($menu)
{
$menu['menu200'][] = array('200110', '회원목록저장', G5_ADMIN_URL.'/view.php?call=mb_excel_export', 'mb_excel_export');
return $menu;
}
}
// 회원 목록 엑셀 저장
if (!function_exists('array_to_excel')) {
function array_to_excel($data, $filename) {
// 데이터 체크
if (empty($data) || !is_array($data)) {
return false;
}
try {
// 파일명에 특수문자가 있다면 제거
$filename = preg_replace('/[^A-Za-z0-9가-힣_\-]/', '', $filename);
// 헤더 설정
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="' . $filename . '.csv"');
header('Pragma: no-cache');
header('Expires: 0');
// 출력 버퍼 비우기
ob_end_clean(); // 기존 출력 버퍼 제거
// 파일 스트림 열기
$out = fopen('php://output', 'w');
if ($out === false) {
return false;
}
// UTF-8 BOM 추가
fprintf($out, chr(0xEF).chr(0xBB).chr(0xBF));
// 첫 번째 행의 키들을 헤더로 사용
if (!empty($data[0])) {
$headers = array_keys($data[0]);
fputcsv($out, $headers);
}
// 데이터 쓰기
foreach ($data as $row) {
// null 값을 빈 문자열로 변환
$row = array_map(function($value) {
return is_null($value) ? '' : $value;
}, $row);
fputcsv($out, $row);
}
// 파일 스트림 닫기
fclose($out);
exit; // 추가 출력 방지
} catch (Exception $e) {
error_log('CSV 생성 중 오류 발생: ' . $e->getMessage());
return false;
}
}
}
if (!function_exists('mb_excel_export_func')) {
add_event('admin_get_page_mb_excel_export', 'mb_excel_export_func', G5_HOOK_DEFAULT_PRIORITY, 2);
function mb_excel_export_func($arr_query, $token)
{
global $g5, $member, $is_admin;
$sql_common = " from {$g5['member_table']} ";
$sql_search = " where (1) ";
if ($is_admin != 'super')
$sql_search .= " and mb_level <= '{$member['mb_level']}' ";
if (!$sst) {
$sst = "mb_datetime";
$sod = "desc";
}
$sql_order = " order by {$sst} {$sod} ";
$sql = " select * {$sql_common} {$sql_search} {$sql_order} ";
$result = sql_query($sql);
$data = array(); // Initialize the data array
$i = 0; // $i 변수를 여기서 초기화
while ($row = sql_fetch_array($result)) {
$i++; // 각 회원 데이터마다 번호 증가
// 데이터 가공
$mb_gender = '';
if ($row['mb_gender'] == 'M') {
$mb_gender = '남성';
} else if ($row['mb_gender'] == 'F') {
$mb_gender = '여성';
}
$data[] = array(
'번호' => $i,
'아이디' => $row['mb_id'],
'이름' => $row['mb_name'],
'닉네임' => $row['mb_nick'],
'E-MAIL' => $row['mb_email'],
'전화번호' => $row['mb_tel'],
'휴대폰번호' => hyphen_hp_number($row['mb_hp']),
'성별' => $mb_gender,
'생년월일' => $row['mb_birth'],
'가입일' => $row['mb_datetime'],
'최종접속일' => $row['mb_today_login'],
'권한' => $row['mb_level']
);
}
// HTML 테이블 출력 대신 엑셀 파일로만 출력하도록 수정
array_to_excel($data, '회원리스트');
}
}
[/code]
댓글 4개
감사합니다 ^^
최고 이십니다
감사합니다^^
이런 좋은 자료를 공개하신 분께 감사드립니다. 추천 꾹~~
감사합니다!
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4402 | ||
| 2454 |
|
1년 전 | 1124 | |
| 2453 | 1년 전 | 1057 | ||
| 2452 | 1년 전 | 1623 | ||
| 2451 | 1년 전 | 1155 | ||
| 2450 | 1년 전 | 958 | ||
| 2449 | 1년 전 | 1338 | ||
| 2448 | 1년 전 | 884 | ||
| 2447 | 1년 전 | 1339 | ||
| 2446 | 1년 전 | 1416 | ||
| 2445 | 1년 전 | 1129 | ||
| 2444 | 1년 전 | 1284 | ||
| 2443 | 1년 전 | 1678 | ||
| 2442 | 1년 전 | 1488 | ||
| 2441 | 1년 전 | 1071 | ||
| 2440 | 1년 전 | 1179 | ||
| 2439 | 1년 전 | 4621 | ||
| 2438 | 1년 전 | 1078 | ||
| 2437 | 1년 전 | 1118 | ||
| 2436 | 1년 전 | 928 | ||
| 2435 | 1년 전 | 1562 | ||
| 2434 | 1년 전 | 1455 | ||
| 2433 | 1년 전 | 1019 | ||
| 2432 |
|
1년 전 | 613267 | |
| 2431 |
|
1년 전 | 1095 | |
| 2430 |
|
1년 전 | 1708 | |
| 2429 | 1년 전 | 1313 | ||
| 2428 | 1년 전 | 1273 | ||
| 2427 | 1년 전 | 1150 | ||
| 2426 | 1년 전 | 1112 | ||
| 2425 |
뽕엄능브라
|
1년 전 | 1235 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기