[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 2,641건 8 페이지
  • RSS
기술자료 목록
2501
MySQL   7267  2021-11-24 00:17 ~ 2021-11-24 00:22  
2500
그누보드   4796  2021-11-21 05:59 ~ 2021-11-24 00:20  
2499
전자결제   3843  2021-11-19 12:07 ~ 2021-11-19 14:51  
2498
HTML   8718  2021-11-18 16:00  
2497
PHP   6959  2021-11-09 17:52 ~ 2021-11-09 17:57  
2496
MySQL   4145  2021-11-08 16:13 ~ 2021-11-08 17:29  
2495
일반   4798  2021-11-06 01:29 ~ 2021-11-06 09:23  
2494
ClassicASP   4552  2021-11-01 02:08 ~ 2021-11-01 02:40  
2493
Editor   5879  2021-10-26 18:16 ~ 2021-11-09 14:15  
2492
그누보드   4851  2021-10-24 02:39  
2491
MySQL   3990  2021-10-18 12:18 ~ 2021-10-18 14:43  
2490
영카트   4644  2021-10-12 18:54  
2489
그누보드   4989  2021-10-08 17:20 ~ 2021-10-21 15:24  
열람
그누보드   5205  2021-10-08 14:45 ~ 2021-10-08 16:11  
2487
그누보드   6267  2021-10-08 07:41 ~ 2021-10-14 10:40  
2486
WordPress   4229  2021-09-16 14:14  
2485
JavaScript   6932  2021-09-14 19:34 ~ 2021-09-15 17:06  
2484
그누보드   4830  2021-09-02 12:15 ~ 2021-09-02 15:15  
2483
그누보드   4777  2021-08-31 18:52  
2482
XpressEngine   4339  2021-08-30 20:15 ~ 2021-08-30 23:16  

검색

해피정닷컴 정보

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

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