회원 목록 엑셀 다운로드 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년 전 | 4434 | ||
| 2544 | 12개월 전 | 945 | ||
| 2543 | 12개월 전 | 844 | ||
| 2542 | 12개월 전 | 747 | ||
| 2541 | 12개월 전 | 775 | ||
| 2540 | 1년 전 | 1187 | ||
| 2539 | 1년 전 | 1021 | ||
| 2538 | 1년 전 | 1006 | ||
| 2537 |
|
1년 전 | 842 | |
| 2536 | 1년 전 | 1227 | ||
| 2535 |
|
1년 전 | 784 | |
| 2534 |
|
1년 전 | 890 | |
| 2533 |
거북이와두루미
|
1년 전 | 1663 | |
| 2532 | 1년 전 | 799 | ||
| 2531 | 1년 전 | 675 | ||
| 2530 | 1년 전 | 720 | ||
| 2529 | 1년 전 | 1066 | ||
| 2528 |
|
1년 전 | 557 | |
| 2527 | 1년 전 | 1136 | ||
| 2526 | 1년 전 | 747 | ||
| 2525 | 1년 전 | 1110 | ||
| 2524 | 1년 전 | 913 | ||
| 2523 | 1년 전 | 1339 | ||
| 2522 | 1년 전 | 958 | ||
| 2521 | 1년 전 | 1311 | ||
| 2520 | 1년 전 | 1189 | ||
| 2519 | 1년 전 | 1060 | ||
| 2518 |
Lemios
|
1년 전 | 869 | |
| 2517 | 1년 전 | 956 | ||
| 2516 | 1년 전 | 1703 | ||
| 2515 | 1년 전 | 847 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기