회원 목록 엑셀 다운로드 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년 전 | 4426 | ||
| 2514 | 1년 전 | 902 | ||
| 2513 |
베리소프트
|
1년 전 | 619 | |
| 2512 |
|
1년 전 | 950 | |
| 2511 |
|
1년 전 | 1080 | |
| 2510 | 1년 전 | 1007 | ||
| 2509 | 1년 전 | 1058 | ||
| 2508 | 1년 전 | 1309 | ||
| 2507 | 1년 전 | 687 | ||
| 2506 | 1년 전 | 1253 | ||
| 2505 |
|
1년 전 | 1209 | |
| 2504 | 1년 전 | 1411 | ||
| 2503 | 1년 전 | 945 | ||
| 2502 | 1년 전 | 1071 | ||
| 2501 | 1년 전 | 1170 | ||
| 2500 |
welcome
|
1년 전 | 1079 | |
| 2499 |
하늘그루터기
|
1년 전 | 872 | |
| 2498 | 1년 전 | 1178 | ||
| 2497 | 1년 전 | 646 | ||
| 2496 | 1년 전 | 968 | ||
| 2495 |
|
1년 전 | 1419 | |
| 2494 | 1년 전 | 948 | ||
| 2493 | 1년 전 | 947 | ||
| 2492 | 1년 전 | 1156 | ||
| 2491 | 1년 전 | 1120 | ||
| 2490 | 1년 전 | 1091 | ||
| 2489 | 1년 전 | 1020 | ||
| 2488 | 1년 전 | 775 | ||
| 2487 |
|
1년 전 | 1213 | |
| 2486 | 1년 전 | 831 | ||
| 2485 | 1년 전 | 1007 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기