[G5] 포인트 내역 압축 플러그인 > 기술자료 | 해피정닷컴

[G5] 포인트 내역 압축 플러그인 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] 포인트 내역 압축 플러그인 > 기술자료

그누보드 [G5] 포인트 내역 압축 플러그인

페이지 정보


본문

그누보드를 운영하다보면 디비의 포인트 테이블에 데이타가 누적되서 디비 용량이 부담이 되는 경우가 있습니다
이때 누적된 포인트를 합산해서 디비 포인트 테이블을 가볍게 만드는 방법입니다
해당년도 10건 미만인경우에는 포인트 압축하지 않습니다

1차 제작자 (불당 님)
2차 제작자 (밀러83 님) https://sir.kr/g4_tiptech/25410
3차 제작자 (익명닉네임 님) https://sir.kr/g5_plugin/663


1. adm / point_zip.php 파일 생성후 아래 내용 저장
<?php
$sub_menu = "200200";
include_once('./_common.php');

auth_check($auth[$sub_menu], 'w');

check_token();

// 변수 설정입니다. 필요에 맞게 설정하세요.
$year   = $_POST['year'];
$cut    = $_POST['number'];
$min    = 10; // 그 해에 포인트가 10건 이하이면 압축하지 않습니다.
$expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']);

// 포인트 백업 테이블이 있는지 검사한다.
if(!sql_query(" DESCRIBE {$g5['point_table']}_backup ", false)) {
    // 포인트 백업 테이블을 만듭니다.
    $sql = "create table `{$g5['point_table']}_backup` (
      `po_id` int(11) NOT NULL auto_increment,
      `mb_id` varchar(20) NOT NULL default '',
      `po_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
      `po_content` varchar(255) NOT NULL default '',
      `po_point` int(11) NOT NULL default '0',
      `po_use_point` int(11) NOT NULL default '0',
      `po_expired` tinyint(4) NOT NULL default '0',
      `po_expire_date` date NOT NULL default '0000-00-00',
      `po_mb_point` int(11) NOT NULL default '0',
      `po_rel_table` varchar(20) NOT NULL default '',
      `po_rel_id` varchar(20) NOT NULL default '',
      `po_rel_action` varchar(100) NOT NULL default '',
      PRIMARY KEY  (`po_id`),
      KEY `index1` (`mb_id`,`po_rel_table`,`po_rel_id`,`po_rel_action`),
      KEY `index2` (`po_expire_date`)
    ) ";
    sql_query($sql, false);
}

// po_datetime을 기준으로 해당 연도의 포인트 개수와 포인트 총합을 가져옴. (항목 많은 순서로 정렬)
$sql  = " select mb_id, count(po_point) as cnt, sum(po_point) as sum from {$g5['point_table']} where po_datetime like '{$year}%' ";
$sql .= " group by mb_id having cnt > '{$min}' order by cnt desc ";
if ($cut) $sql .= " limit {$cut} ";

$qry = sql_query($sql);
$total_cnt = 0;
for($i=0; $row = sql_fetch_array($qry); $i++) {
    $whereclause = " mb_id = '{$row['mb_id']}' and po_datetime like '{$year}%' ";

    // 일단 백업테이블로 항목을 복사
    $sql = "insert into `{$g5['point_table']}_backup` select * from `{$g5['point_table']}` where {$whereclause}";
    sql_query($sql);

    // 복사했으니 삭제해버리기
    $sql = " delete from `{$g5['point_table']}` where {$whereclause} ";
    sql_query($sql);

    // 옮겼으니 압축된 항목 삽입하기
    insert_point($row['mb_id'], $row['sum'], "{$year}년 포인트 내역 - 압축", "@point_zip", $row['mb_id'], $member['mb_id'] ."-". uniqid(''), $expire);

    // 압축한 건수를 더함
    $total_cnt += $row['cnt'];
}

echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">";
$msg = "{$i} 명의 {$year} 년도 포인트 {$total_cnt} 건을 정리하였습니다.";

if ($cut) {
    $g5['title'] = '포인트관리';
    include_once ('./admin.head.php');
    echo $msg;
    if($i == $cut) echo "<br>F5(새로고침)를 누르면 추가로 적용됩니다. <a href=\"./point_list.php?{$qstr}\">[ 여기 ]</a> 를 누르시면 포인트관리 페이지로 이동됩니다.";
    include_once ('./admin.tail.php');
} else {
    alert($msg, './point_list.php?'.$qstr);
}



2. adm / point_list.php  182줄 페이징 아래에 내용 추가
<h2 class="h2_frm">포인트 내역 압축</h2>
<form name="fpointlist1" method="post" id="fpointlist1" action="./point_zip.php" autocomplete="off">
    <div class="tbl_frm01 tbl_wrap">
        <table>
        <colgroup>
            <col class="grid_4">
            <col>
        </colgroup>
        <tbody>
        <tr>
            <th scope="row"><label for="year">압축년도<strong class="sound_only">필수</strong></label></th>
            <td>
                <input type="text" name="year" value="<?php echo $year; ?>" id="year" class="required frm_input" required>
                예) <?php echo date("Y"); ?> (숫자만 입력하세요)
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="number">압축회원수<strong class="sound_only">필수</strong></label></th>
            <td>
                <input type="text" name="number" value="<?php echo $number; ?>" id="number" class="frm_input">
                인원수 입력하면 포인트 적립건수가 많은 회원중 입력숫자만큼만 압축합니다
            </td>
        </tr>
        </tbody>
        </table>
    </div>
    <div class="btn_confirm01 btn_confirm">
        <input type="submit" value="확인" class="btn_submit btn">
    </div>
</form>

댓글목록

등록된 댓글이 없습니다.


Total 459건 1 페이지
  • RSS
기술자료 목록
459
그누보드   371  2024-11-26 21:14 ~ 2024-11-26 21:22  
458
그누보드   451  2024-11-22 10:52 ~ 2024-11-22 11:03  
457
그누보드   1393  2024-02-23 18:40 ~ 2024-02-24 06:13  
456
그누보드   2511  2023-11-06 20:38  
455
그누보드   3516  2023-04-07 18:22 ~ 2023-04-07 18:40  
454
그누보드   3501  2023-04-07 08:45 ~ 2023-04-07 10:00  
453
그누보드   4147  2023-04-06 22:37  
452
그누보드   3893  2023-02-03 16:25  
451
그누보드   2503  2023-01-20 19:39 ~ 2023-01-20 23:13  
450
그누보드   3297  2023-01-06 10:36  
449
그누보드   3189  2022-12-31 09:25 ~ 2024-02-05 13:25  
448
그누보드   3878  2022-11-10 20:41 ~ 2022-11-14 01:03  
447
그누보드   3746  2022-10-07 20:11  
446
그누보드   4119  2022-06-11 00:52  
445
그누보드   3700  2022-05-27 11:42 ~ 2022-05-27 11:44  
444
그누보드   5453  2022-01-25 12:27 ~ 2022-02-01 09:59  
443
그누보드   5299  2021-12-22 08:54 ~ 2021-12-22 08:56  
442
그누보드   4112  2021-12-14 07:05  
441
그누보드   5021  2021-11-21 05:59 ~ 2021-11-24 00:20  
440
그누보드   5036  2021-10-24 02:39  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2025 해피정닷컴. All Rights Reserved.