[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 458건 2 페이지
  • RSS
기술자료 목록
열람
그누보드   5202  2021-10-08 14:45 ~ 2021-10-08 16:11  
437
그누보드   6258  2021-10-08 07:41 ~ 2021-10-14 10:40  
436
그누보드   4826  2021-09-02 12:15 ~ 2021-09-02 15:15  
435
그누보드   4776  2021-08-31 18:52  
434
그누보드   5099  2021-08-01 20:59 ~ 2021-08-02 09:19  
433
그누보드   6838  2021-07-27 14:45 ~ 2021-08-05 18:06  
432
그누보드   5668  2021-06-30 07:32 ~ 2021-06-30 07:50  
431
그누보드   7376  2021-06-11 09:19 ~ 2021-06-11 09:20  
430
그누보드   6267  2021-06-03 16:20 ~ 2021-06-06 14:56  
429
그누보드   5645  2021-05-26 11:53 ~ 2021-05-27 08:49  
428
그누보드   7958  2021-05-18 13:48 ~ 2021-07-22 12:24  
427
그누보드   5382  2021-04-21 17:55 ~ 2021-06-15 18:19  
426
그누보드   4614  2021-02-25 22:28 ~ 2021-03-17 11:33  
425
그누보드   6135  2021-02-18 10:28 ~ 2021-02-18 14:10  
424
그누보드   6538  2021-02-08 14:43 ~ 2021-02-08 16:31  
423
그누보드   7680  2020-12-14 18:09 ~ 2023-04-04 11:18  
422
그누보드   6411  2020-12-07 15:15 ~ 2022-12-17 21:15  
421
그누보드   4597  2020-10-19 06:39 ~ 2022-02-01 09:57  
420
그누보드   4380  2020-10-16 17:08 ~ 2020-10-20 00:43  
419
그누보드   4946  2020-10-14 12:34 ~ 2021-03-23 18:09  

검색

해피정닷컴 정보

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

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