[G5/Amina] 경험치 레벨 변경하기 > 기술자료

본문 바로가기
사이트 내 전체검색

기술자료

그누보드 [G5/Amina] 경험치 레벨 변경하기

페이지 정보

댓글 0건 조회 56회 작성일 2018-11-09 06:32 ~ 2018-11-12 05:09

본문

경험치를 바탕으로 레벨 아이콘을 보여주는 기능을 쉽게 변경하는 방법입니다.


1. 파일구조
bbs
  ├  level_change.php
  ├  level_change_updage.php
  └  level_change_updage_all.php



2. 변경이력
2018-11-09 06:32  V1
  . 최초배포

2018-11-09 09:56  V2
  . level_change_update.php  로직 수정

2018-11-11 12:22 ~ 12:44  V3
  . 등급 변경후 게시글에도 변경된 등급이 적용되도록 level_change_update.php  변경

2018-11-11 19:47  V4
  . 게시글 업데이트 로직 오류 수정

2018-11-12 02:40  V5
  . 게시글의 회원레벨 경험치 레벨 일괄 변경하는 로직 추가  level_change_update_all.php

2018-11-12 05:08  V6
  . 레벨업과 레벨다운이 가능하도록 level_change_update.php 파일을 수정했습니다.



3. 회원 로그인후 실행화면
g5_amina_level_change_1.png


4. 관리자 로그인후 실행화면 ( 적용전 )
g5_amina_level_change_2.png


5. 관리자 로그인후 실행화면 ( 적용후 )
g5_amina_level_change_3.png


6. 회원등급변경 화면
g5_amina_level_change_4.png


7. js / apms.js 내용에서

        // 최고관리자일 경우
        if (g5_is_admin == "super") {
            // 포인트내역과 1:1문의
            if (mb_id) {
                this.insertTail("qna", "<a href=\""+g5_bbs_url+"/qalist.php?qmb="+mb_id+"\" rel=\"nofollow\">"+aslang[40]+"</a>");
                this.insertTail("point", "<a href=\""+g5_admin_url+"/point_list.php?sfl=mb_id&stx="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[9]+"</a>");
                this.insertTail("modify", "<a href=\""+g5_admin_url+"/member_form.php?w=u&mb_id="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[10]+"</a>");
            }
        }

를 아래와 같이 변경합니다.

        // 최고관리자일 경우
        if (g5_is_admin == "super") {
            // 포인트내역과 1:1문의
            if (mb_id) {
                this.insertTail("qna", "<a href=\""+g5_bbs_url+"/qalist.php?qmb="+mb_id+"\" rel=\"nofollow\">"+aslang[40]+"</a>");
                this.insertTail("point", "<a href=\""+g5_admin_url+"/point_list.php?sfl=mb_id&stx="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[9]+"</a>");
                this.insertTail("modify", "<a href=\""+g5_admin_url+"/member_form.php?w=u&mb_id="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[10]+"</a>");
                this.insertTail("level_change", "<a href=\""+g5_bbs_url+"/level_change.php?bo_table="+g5_bo_table+"&mb_id="+mb_id+"\">회원등급변경</a>");
            }
        }


8. bbs / level_change.php 파일을 만들어서 아래 내용을 저장합니다.

<?php
include_once('./_common.php');

$g5['title'] = "회원등급변경";

include_once('./_head.php');

if(!$opt) {
    if(!$xp_point) $xp_point = $xp['xp_point'];
    if(!$xp_max) $xp_max = $xp['xp_max'];
    if(!$xp_rate) $xp_rate = $xp['xp_rate'];
}

$sql = "select as_exp, as_level from {$g5['member_table']} where mb_id='{$mb_id}' ";
$qry = sql_query($sql);
$row = sql_fetch_array($qry);
?>
<style>
    .exp-title { padding:12px; font:bold 18px dotum; letter-spacing:-1px; color:#fff; background:#000; }
    .exp-desc { margin:10px 0px; background:#fafafa; border:1px solid #ddd; line-height:1.6; padding-right:10px; }
    .exp-tbl{width:100%; border-collapse:collapse;border:0;padding:0;} 
    .exp-tbl td, .exp-tbl th{ padding:5px;border:1px solid #ddd; line-height:1.6; text-align:center;}
    .exp-tbl td.head { background:#f5f5f5; font-weight:bold;}
    .exp-tbl .exp-btn {cursor:pointer; width:100px; padding:30px 0; background:red; font-weight:bold; color:#ffffff; border:0px; cursor:pointer;}
    .exp-tbl .ok-btn {cursor:pointer; width:100px; padding:30px 0; background:#1f7bc2; font-weight:bold; color:#ffffff; border:0px; cursor:pointer;}
</style>

<div class="at-title">
    <div class="at-container">
        <div class="page-title en">
            <strong class="cursor">
                회원레벨변경
            </strong>
        </div>
        <div class="page-desc hidden-xs">
                <i class="fa fa-home"></i> 홈 &gt; 회원레벨변경
        </div>
        <div class="clearfix"></div>
    </div>
</div>

<br>

<form name="expform" method="post" action="level_change_update.php">
    <table border=0 class="exp-tbl">
        <input type="hidden" name="mb_id" value="<?php echo $mb_id; ?>">
        <input type="hidden" name="as_exp" value="<?php echo $row['as_exp']; ?>">
        <input type="hidden" name="as_level" value="<?php echo $row['as_level']; ?>">
        <input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>">
        
        <col width=100>
        <col width=110>
        <col width=110>
        <col width=130>
        <col />
        <tr>
            <td class=head>경험치</td>
            <td class=head>현재레벨</td>
            <td class=head>변경레벨</td>
            <td rowspan="2"><input type="submit" value=" 변경하기 " class="btn_submit"></td>
        </tr>
        <tr>
            <td><?php echo $row['as_exp']; ?></td>
            <td><?php echo $row['as_level']; ?></td>
            <td>
                <select name="change_level">
                <?php
                $min_xp = $xp_point;
                for ($i=2; $i <= $xp_max; $i++) {
                ?>
                    <option value="<?php echo $i; ?>"<?php if ($row['as_level']==$i) { echo " selected"; } ?>><?php echo $i; ?></option>
                    <?php
                        $min_xp = $max_xp; 
                }
                ?>
                </select>
            </td>
        </tr>
    </table>
</form>

<br>

<table class="exp-tbl">
    <col width=20%>
    <col width=20%>
    <col width=20%>
    <col width=20%>
    <col />
    <tr>
        <td class=head>비고</td>
        <td class=head>레벨</td>
        <td class=head>최소 경험치</td>
        <td class=head>최대 경험치</td>
        <td class=head>레벨업 경험치</td>
    </tr>
    <tr>
        <td><img src="<?php echo G5_IMG_URL; ?>/level/<?php echo $xp['xp_icon_skin']; ?>/guest.gif"></td>
        <td>1</td>
        <td>0</td>
        <td><?php echo number_format($xp_point); ?></td>
        <td><?php echo number_format($xp_point); ?></td>
    </tr>
    <?php
    $min_xp = $xp_point;
    for ($i=2; $i <= $xp_max; $i++) {
        $xp_plus = $xp_point + $xp_point * ($i - 1) * $xp_rate;
        $max_xp = $min_xp + $xp_plus;
        ?>
        <tr>
            <td><img src="<?php echo G5_IMG_URL; ?>/level/<?php echo $xp['xp_icon_skin']; ?>/<?php echo $i; ?>.gif"></td>
            <td><?php echo $i; ?></td>
            <td><?php echo number_format($min_xp); ?></td>
            <td><?php echo number_format($max_xp); ?></td>
            <td><?php echo number_format($xp_plus); ?></td>
        </tr>
        <?php
        $min_xp = $max_xp; 
    }
    ?>
</table>

<?php
include_once('./_tail.php');
?>


9. bbs / level_change_update.php  파일을 생성해서 아래 내용을 저장합니다.

<?php
include_once('./_common.php');

if(!$opt) {
    if(!$xp_point) $xp_point = $xp['xp_point'];
    if(!$xp_max) $xp_max = $xp['xp_max'];
    if(!$xp_rate) $xp_rate = $xp['xp_rate'];
}

$sql = "select as_exp, as_level,mb_point from {$g5['member_table']} where mb_id='{$mb_id}' ";
$qry = sql_query($sql);
$row = sql_fetch_array($qry);

$min_xp = $xp_point;
for ($i=2; $i <= $xp_max; $i++) {
    $xp_plus = $xp_point + $xp_point * ($i - 1) * $xp_rate;
    $max_xp = $min_xp + $xp_plus;
    
    if ($row['as_level']==$i) {
        $default_exp = $min_xp+1; 
    }
    if ($change_level==$i) {
        $change_exp = $min_xp+1; 
    }
    $min_xp = $max_xp; 
}

/*
echo "변경전 = ".$as_exp ."<br>";
echo "지금꺼 = ".$row['as_exp'] ."<br>";
echo "포인트 = ".$row['mb_point'] ."<br>";
echo "변경후 = ".$change_exp ."<br>";
echo "변경전lv= ".$row['as_level'] ."<br><br>";
echo "변경후lv= ".$change_level ."<br><br>";
*/

if ($change_exp > $row['mb_point']) { // 레벨업
    $up_exp = $change_exp - $row['mb_point'];
    insert_point($mb_id, $up_exp, '등업 포인트 제공', '@member', $mb_id, '등업');
    sql_query("update {$g5['member_table']} set mb_point='{$change_exp}' where mb_id='{$mb_id}' ");
} else { // 레벨 다운
    $up_exp = $row['mb_point'] - $change_exp;
    insert_point($mb_id, $up_exp, '레벨다운 포인트 차감', '@member', $mb_id, '등업');
    sql_query("update {$g5['member_table']} set mb_point='{$change_exp}' where mb_id='{$mb_id}' ");
}

//if ($change_exp >= $row['as_exp']) {
    //echo "변경하자<br>";
    sql_query("update {$g5['member_table']} set as_exp='{$change_exp}', as_level='{$change_level}' where mb_id='{$mb_id}' ");
    
    // 보드에도 as_level 업데이트하기
    $sql = sql_query("select * from {$g5['board_table']} ");
    while($row = sql_fetch_array($sql)){
        sql_query("update {$g5['write_prefix']}{$row['bo_table']} set as_level='{$change_level}' where mb_id='{$mb_id}' ");
    }
//}
//echo "지금꺼 = ".$default_exp ."<br>";
//exit;


if ($bo_table) {
    goto_url("./board.php?bo_table={$bo_table}");
} else {
    goto_url(G5_URL);
}
?>


10. bbs / level_change_update_all.php
이 파일은 회원레벨과 작성된 게시글의 레벨 아이콘이 다르게 표시될때 사용합니다.
회원이 많고, 게시글이 많은 경우에는 서버에 무리가 될 수 있으므로 사용에 주의가 필요합니다.

<?php
include_once('./_common.php');
exit;  // 사용후 꼭 주석을 제거해서 실수로 작동하지 않도록 합니다.

$sql = "select * from {$g5['member_table']} where as_level>'0' ";
$qry = sql_query($sql);
while($row = sql_fetch_array($qry)){
    echo "변경전 = ".$row['as_level'] ."<br>";
    
    // 보드에도 as_level 업데이트하기
    $qry2 = sql_query("select * from {$g5['board_table']} ");
    while($row2 = sql_fetch_array($qry2)){
        sql_query("update {$g5['write_prefix']}{$row2['bo_table']} set as_level='{$row['as_level']}' where mb_id='{$row['mb_id']}' ");
        //echo "update {$g5['write_prefix']}{$row2['bo_table']} set as_level='{$row['as_level']}' where mb_id='{$row['mb_id']}' <br><br>";
    }
}
?>
  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.


Total 2,290건 1 페이지
기술자료 목록
번호 제목
공지 일반   16485  2001-08-31 11:52 ~ 2017-12-05 16:33  
2289 Linux   10  2018-11-13 00:15 ~ 2018-11-13 00:38  
열람중 그누보드   57  2018-11-09 06:32 ~ 2018-11-12 05:09  
2287 그누보드   73  2018-11-01 18:50 ~ 2018-11-01 19:01  
2286 영카트   69  2018-10-31 05:44 ~ 2018-10-31 05:47  
2285 그누보드   67  2018-10-30 15:47  
2284 그누보드   111  2018-10-22 09:58  
2283 HTML   164  2018-10-14 01:19 ~ 2018-10-14 02:09  
2282 킴스큐   186  2018-10-04 23:04  
2281 MySQL   198  2018-10-03 02:29  
2280 MySQL   250  2018-10-02 22:55 ~ 2018-10-02 22:58  
2279 PHP   243  2018-09-30 15:07 ~ 2018-09-30 15:53  
2278 그누보드   255  2018-09-27 23:56  
2277 그누보드   222  2018-09-27 22:01 ~ 2018-09-27 22:40  
2276 그누보드   274  2018-09-22 01:04 ~ 2018-09-22 01:17  
2275 그누보드   235  2018-09-21 19:28  
2274 그누보드   270  2018-09-15 08:08 ~ 2018-10-15 14:56  
2273 PHP   379  2018-09-14 05:59  
2272 전자결제   263  2018-09-14 04:57 ~ 2018-09-14 04:58  
2271 전자결제   267  2018-09-12 14:17 ~ 2018-09-13 14:38  
게시물 검색

회원로그인

계좌이체 or 신용카드 결제하기
해피정닷컴으로 대금결제를 할 수 있습니다

접속자집계

오늘
1,903
어제
3,025
최대
3,174
전체
4,383,277

회사명: 해피정닷컴   사업자번호: 119-05-36414   전화: 070-7600-3500   팩스: 02-865-3528   주소: 08394 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
대표: 정창용   개인정보보호책임자: 정창용   통신판매업신고번호: 2014-서울구로-0074 [사업자등록정보확인]   건강기능식품영업신고번호 제2018-0080452호
Copyright 2001~2018 해피정닷컴. All Rights Reserved.