[G5] 회원 포인트 기준 아이콘 보이기 > 기술자료 | 해피정닷컴

[G5] 회원 포인트 기준 아이콘 보이기 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] 회원 포인트 기준 아이콘 보이기 > 기술자료

그누보드 [G5] 회원 포인트 기준 아이콘 보이기

페이지 정보


첨부파일

본문




회원 레벨별 아이콘 보이기
-. g5_level 테이블 생성
-. g5_member 테이블에 필드 추가
-. 그누보드5 / img / level / 0.gif ~ 7.gif  ( 첨부 level.zip )
-. 그누보드5 / adm / level / level.php  생성
-. 그누보드5 / adm / level / level_update.php  생성
-. 그누보드5 / adm / level / member_level_update.php  생성
-. 그누보드5 / adm / admin.menu990.php  수정
-. 그누보드5 / lib / common.lib.php  수정
-. 그누보드5 / skin / board / 폴더 / list.skin.php , view.skin.php . view_comment.skin.php  수정
-. 그누보드5 / adm / member_list.php  수정
-. 그누보드5 / adm / point_list.php  수정



1. 설정변경

1. 그누보드5 / extend / level_point.extend.php 신규생성
<?php
if (!defined('_GNUBOARD_')) exit;

$g5['level_table'] = G5_TABLE_PREFIX . "level";    // 레벨 포인트 테이블
define('G5_LEVEL_IMG_URL',  G5_IMG_URL.'/level/weather/');  // 레벨 아이콘 폴더
?>



2. 그누보드5 / adm / admin.menu990.php  만들기
<?php
$menu["menu990"] = array (
    array('990000', '추가기능', G5_ADMIN_URL.'/level/level.php', 'level'),
    array('990700', '레벨 설정', G5_ADMIN_URL.'/level/level.php', 'level'),
    array('990710', '레벨 업그레이드', G5_ADMIN_URL.'/level/member_level_update.php', 'member_level_update'),
);
?>



3. 그누보드5 / adm / level.php 파일 만들기
<?php
$sub_menu = "990700";
include_once('./_common.php');

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

if ($is_admin != 'super')
    alert('최고관리자만 접근 가능합니다.');

$g5['title'] = '레벨 설정';
include_once ('../admin.head.php');


if(!sql_query(" DESCRIBE ".$g5['level_table']." ", false)) {  // g5_level
    $query_attendance = sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['level_table']}` (
    `lv_idx` int(11) NOT NULL auto_increment,
    `lv_name` varchar(20) NOT NULL,
    `lv_point` int(10) NOT NULL,
    `lv_id` int(10) NOT NULL,
    PRIMARY KEY  (`lv_idx`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ", true);
    /* utf8mb4 일때는 아래의 것으로 변경
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ", true);
    */
}

$field_query = "SHOW COLUMNS FROM {$g5['member_table']} WHERE `Field` = 'mb_point_level';";
$field_row = sql_fetch( $field_query );
if(!$field_row['Field']) {
    sql_query(" ALTER TABLE `{$g5['member_table']}`ADD `mb_point_level` int(4) NOT NULL  ", true);
}

$field_query = "SHOW COLUMNS FROM {$g5['member_table']} WHERE `Field` = 'mb_point_level_icon';";
$field_row = sql_fetch( $field_query );
if(!$field_row['Field']) {
    sql_query(" ALTER TABLE `{$g5['member_table']}`ADD `mb_point_level_icon` VARCHAR(20) NOT NULL  ", true);
}


$sql_common = " from {$g5['level_table']} ";
$sql_search = " where (1) ";

if ($stx) {
    $sql_search .= " and ( ";
    switch ($sfl) {
        case 'mb_id' :
            $sql_search .= " ({$sfl} = '{$stx}') ";
            break;
        default :
            $sql_search .= " ({$sfl} like '%{$stx}%') ";
            break;
    }
    $sql_search .= " ) ";
}

if (!$sst) {
    $sst  = "lv_id";
    $sod = "asc";
}
$sql_order = " order by {$sst} {$sod} ";

$sql = " select count(*) as cnt
            {$sql_common}
            {$sql_search}
            {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];

$rows = $config['cf_page_rows'];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

$sql = " select *
            {$sql_common}
            {$sql_search}
            {$sql_order}
            limit {$from_record}, {$rows} ";
$result = sql_query($sql);

$mb = array();
if ($sfl == 'mb_id' && $stx)
    $mb = get_member($stx);

$colspan = 5;

if (strstr($sfl, "mb_id"))
    $mb_id = $stx;
else
    $mb_id = "";
?>

<div class="local_ov01 local_ov">
    <a href="<?php echo $_SERVER['SCRIPT_NAME']?>" class="ov_listall">전체 <?php echo number_format($total_count) ?> 건</a>
</div>

<div class="tbl_head01 tbl_wrap">
    <table>
    <caption><?php echo $g5['title']; ?> 목록</caption>
    <thead>
    <tr>
        <th scope="col">레벨</th>
        <th scope="col">아이콘</th>
        <th scope="col">계급</th>
        <th scope="col" colspan="2">포인트 (숫자만 입력)</th>
        <th scope="col">비고</th>
    </tr>
    </thead>
    <tbody>
    <tr class="bg">
        <td class="td_datetime">0</td>
        <td class="td_datetime"><img src="<?php echo G5_LEVEL_IMG_URL?>0.gif"></td>
        <td class="td_datetime">비회원</td>
        <td class="td_datetime"></td>
        <td class="td_datetime"></td>
    </tr>
    <?php
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        $bg = 'bg'.($i%2);
    ?>
    <tr class="<?php echo $bg; ?>">
        <form name="lvupdate<?php echo $i; ?>" id="lvupdate<?php echo $i; ?>" method="post" action="level_update.php" autocomplete="off">
        <input type="hidden" name="lv_idx" value="<?php echo $row['lv_idx']; ?>">
        <input type="hidden" name="mode" value="e">
        <input type="hidden" name="token" value="<?php echo $token ?>">
        <td class="td_datetime"><input type="text" name="lv_id" value="<?php echo $row['lv_id'] ?>" class="required frm_input" style="text-align:center;"></td>
        <td class="td_datetime"><img src="<?php echo G5_LEVEL_IMG_URL.$row['lv_id']?>.gif"></td>
        <td class="td_datetime"><input type="text" name="lv_name" value="<?php echo $row['lv_name'] ?>" class="required frm_input"></td>
        <td class="td_datetime" style="text-align:right; padding-right:15px;"><?php echo Number_Format($row['lv_point']) ?></td>
        <td class="td_datetime"><input type="text" name="lv_point" value="<?php echo $row['lv_point'] ?>" class="required frm_input"></td>
        <td class="td_datetime"><input type="submit" value=" 수정 "></td>
        </form>
    </tr>
    <?php
    }

    if ($i == 0)
        echo '<tr><td colspan="{$colspan}" class="empty_table">자료가 없습니다.</td></tr>';
    ?>
    </tbody>
    </table>
</div>

<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, "{$_SERVER['SCRIPT_NAME']}?$qstr&amp;page="); ?>

<form name="flevellist2" method="post" id="flevellist2" action="./level_update.php" autocomplete="off">
<input type="hidden" name="mode" value="w">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="token" value="<?php echo $token ?>">
<section id="point_mng">
    <h2 class="h2_frm">레벨 추가</h2>


    <div class="tbl_frm01 tbl_wrap">
        <table>
        <colgroup>
            <col class="grid_4">
            <col>
        </colgroup>
        <tbody>
        <tr>
            <th scope="row"><label for="lv_id">레벨<strong class="sound_only">필수</strong></label></th>
            <td><input type="text" name="lv_id" id="lv_id" required class="required frm_input"> 숫자만</td>
        </tr>
        <tr>
            <th scope="row"><label for="lv_name">레벨 설명<strong class="sound_only">필수</strong></label></th>
            <td><input type="text" name="lv_name" id="lv_name" class="required frm_input" required> 레벨 설명</td>
        </tr>
        <tr>
            <th scope="row"><label for="lv_point">레벨 포인트<strong class="sound_only">필수</strong></label></th>
            <td><input type="text" name="lv_point" id="lv_point" required class="required frm_input"> 숫자만</td>
        </tr>
        </tbody>
        </table>
    </div>

</section>

<div class="btn_confirm01 btn_confirm">
    <input type="submit" value="확인" class="btn_submit" accesskey="s">
</div>
</form>

<script>
function fconfigform_submit(f)
{
    f.action = "./level_update.php";
    return true;
}
</script>

<?
include_once ('../admin.tail.php');
?>



4. 그누보드5 / adm / level_update.php  파일 만들기
<?php
$sub_menu = "990700";
include_once('./_common.php');

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

if ($is_admin != 'super')
    alert('최고관리자만 접근 가능합니다.');

//check_admin_token();

$mode = $_POST['mode'];
$lv_name = $_POST['lv_name'];
$lv_point = $_POST['lv_point'];
$lv_id = $_POST['lv_id'];

$mb = get_member($mb_id);

if ($mode=="w") {
    $sql = "insert into {$g5['level_table']} (lv_name, lv_point, lv_id) values ('{$lv_name}','{$lv_point}','{$lv_id}')";
    sql_query($sql);
} else {
    $sql = " update {$g5['level_table']}
            set lv_name = '{$_POST['lv_name']}',
                lv_point = '{$_POST['lv_point']}',
                lv_id = '{$_POST['lv_id']}'
                where lv_idx = '{$_POST['lv_idx']}';
                ";
    sql_query($sql);
}

goto_url('./level.php', false);
?>



5. 그누보드5 / adm / member_level_update.php  파일만들기
<?php
$sub_menu = "990710";
include_once('./_common.php');

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

$g5['title'] = '레벨 업데이트';
include_once('../admin.head.php');

$sql = " select * from {$g5['member_table']} order by mb_no asc ";
$qry = sql_query($sql);

$colspan = 7;
?>

<div class="local_desc01 local_desc">
    <p>
        회원포인트를 기준으로 레벨 일괄 업데이트를 합니다.
    </p>
</div>

<div class="tbl_head01 tbl_wrap">
    <table>
    <caption><?php echo $g5['title']; ?> 목록</caption>
    <thead>
    <tr>
        <th scope="col" id="mb_list_id">아이디</a></th>
        <th scope="col" id="mb_list_name">이름</a></th>
        <th scope="col" id="mb_list_name">닉네임</a></th>
        <th scope="col" id="mb_list_mng">권한</th>
        <th scope="col" id="mb_list_mng">포인트 레벨</th>
        <th scope="col" id="mb_list_grp">포인트</th>
        <th scope="col" id="mb_list_mng">아이콘</th>
    </tr>
    </thead>
    <tbody>
    <?php
    for ($i=0; $row=sql_fetch_array($qry); $i++) {
    ?>
    <tr class="<?php echo $bg; ?>">
        <td headers="mb_list_id" class="td_name sv_use"><?php echo $row['mb_id']; ?></td>
        <td headers="mb_list_name" class="td_mbname"><?php echo get_text($row['mb_name']); ?></td>
        <td headers="mb_list_nick" class="td_mbname"><?php echo get_text($row['mb_nick']); ?></td>
        <td headers="mb_list_level" class="td_num"><?php echo get_text($row['mb_level']); ?></td>
        <td headers="mb_list_point" class="td_num"><?php
            $sql_level = "select * from {$g5['level_table']} order by lv_point desc";
            $qry_level = sql_query($sql_level);
            
            for ($k=0; $row_level=sql_fetch_array($qry_level); $k++) {
                if ($row['mb_point'] >= $row_level['lv_point']) {
                    sql_query(" update {$g5['member_table']} set mb_point_level = '{$row_level['lv_id']}' where mb_id = '{$row['mb_id']}' ");
                    break;
                } else {
                }
            }
            echo $row_level['lv_id'];
        ?></td>
        <td headers="mb_list_point" class="td_num"><?php 
        echo $row['mb_point']; 
        
        // 회원가입시 기본 1000점 부여된것을 일괄 변경하고자 할때
        if ($row['mb_point'] > 999) {
            $mb_point_check = $row['mb_point'] - (int)990;
            //sql_query("update {$g5['member_table']} set mb_point = '{$mb_point_check}' where mb_id = '{$row['mb_id']}' ");
        }
        ?></td>
        <td headers="mb_list_point_icon" class="td_num">
            <?php if ($row_level['lv_id']) { ?>
                <img src="<?php echo G5_LEVEL_IMG_URL.$row_level['lv_id']?>.gif">
            <?php } ?>
        </td>
    </tr>
    <?php
    }
    
    if ($i == 0)
        echo "<tr><td colspan=\"{$colspan}\" class=\"empty_table\">자료가 없습니다.</td></tr>";
    ?>
    </tbody>
    </table>
</div>
<?php
include_once ('../admin.tail.php');
?>



6. 그누보드5 / adm / member_list.php   
<?php echo $mb_id ?>

를 다음과 같이 변경

<?php echo "<img src=\"".G5_LEVEL_IMG_URL.$row['mb_point_level_icon'].".gif\" alt=\"\"> ";?><?php echo $mb_id ?>



7. 그누보드5 / adm / point_list.php

7-1. 그누보드5 / adm / point_list.php   126줄
            $sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";

를 다음과 같이 변경

            $sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point, mb_point_level from {$g5['member_table']} where mb_id = '{$row['mb_id']}' "; // 해피정닷컴 수정


7-2. 그누보드5 / adm / point_list.php   153줄
<?php echo get_text($row2['mb_name']); ?>

를 다음과 같이 변경

<?php echo "<img src=\"".G5_LEVEL_IMG_URL.$row['mb_point_level_icon'].".gif\" alt=\"\"> ";?><?php echo get_text($row2['mb_name']); ?>



8. 그누보드5 / lib / common.lib.php

8-1. 포인트 부여
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $expire=0)
... 내용중 ...

    // 포인트 UPDATE
    $sql = " update {$g5['member_table']} set mb_point = '$po_mb_point' where mb_id = '$mb_id' ";
    sql_query($sql);

의 아래에 내용추가
    
    ////////// 포인트에 따른 레벨아이콘 시작 //////////
    // 회원 포인트레벨 가져오기
    $sql_member = " select mb_point, mb_type, mb_leave_date , mb_point_level_icon from {$g5['member_table']} where mb_id = '{$mb_id}' ";
    $qry_member = sql_query($sql_member);
    $row_member = sql_fetch_array($qry_member);
    
    $po_mb_point = $row_member['mb_point'];
    $mb_type = $row_member['mb_type'];
    $po_mb_leave_date = $row_member['mb_leave_date'];
    $mb_point_level_icon = $row_member['mb_point_level_icon'];
    
    // 레벨 정의 테이블 데이타를 큰 포인트부터 순차적으로 가져옴
    $lv_point = "";
    
    $sql_level = "select * from {$g5['level_table']} order by lv_point desc";
    $qry_level = sql_query($sql_level);
    
    for ($i=0; $row_level=sql_fetch_array($qry_level); $i++) {
    
        $lv_point = $row_level['lv_point'];
        $lv_id = $row_level['lv_id'];
        
        if ($po_mb_point >= $lv_point) {
            if ($po_mb_leave_date) { // 탈퇴회원
                $mb_point_level_icon = $lv_id;
            } else {
                $mb_point_level_icon = $lv_id;
            }
            
            $sql = " update {$g5['member_table']} set mb_point_level = '{$lv_id}', mb_point_level_icon='{$mb_point_level_icon}' where mb_id = '{$mb_id}' ";
            sql_query($sql);
            break;
        } else {
            $sql = "";
        }
    }
    ////////// 포인트에 따른 레벨아이콘 끝 //////////


8-2. 사용포인트 입력
// 사용포인트 입력
function insert_use_point($mb_id, $point, $po_id='')
... 내용중 ...


8-3. 사용포인트 삭제
// 사용포인트 삭제
function delete_use_point($mb_id, $point)
... 내용중 ...


8-4. 소멸포인트 삭제
// 소멸포인트 삭제
function delete_expire_point($mb_id, $point)
... 내용중 ...


8-5. 소멸 포인트
// 소멸 포인트
function get_expire_point($mb_id)
... 내용중 ...



8-6. 포인트 내역 합계
// 포인트 내역 합계
function get_point_sum($mb_id)
... 내용중 ...



8-7. 소멸 포인트
// 소멸 포인트
function get_expire_point($mb_id)
... 내용중 ...



8-8. 포인트 삭제
// 포인트 삭제
function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
... 내용중 ...

        // 포인트 UPDATE
        $sql = " update {$g5['member_table']} set mb_point = '{$sum_point}' where mb_id = '{$mb_id}' ";
        $result = sql_query($sql);

의 아래에 내용추가

        ////////// 포인트에 따른 레벨아이콘 시작 //////////
        // 회원 포인트레벨 가져오기
        $sql_member = " select mb_point,mb_type, mb_leave_date, mb_point_level_icon from {$g5['member_table']} where mb_id = '{$mb_id}' ";
        $qry_member = sql_query($sql_member);
        $row_member = sql_fetch_array($qry_member);
        
        $po_mb_point = $row_member['mb_point'];
        $mb_type = $row_member['mb_type'];
        $po_mb_leave_date = $row_member['mb_leave_date'];
        $mb_point_level_icon = $row_member['mb_point_level_icon'];
        
        // 레벨 정의 테이블 데이타를 큰 포인트부터 순차적으로 가져옴
        $lv_point = "";
        
        $sql_level = "select * from {$g5['level_table']} order by lv_point desc";
        $qry_level = sql_query($sql_level);
        
        for ($i=0; $row_level=sql_fetch_array($qry_level); $i++) {
        
            $lv_point = $row_level['lv_point'];
            $lv_id = $row_level['lv_id'];
            
            if ($po_mb_point >= $lv_point) {
                if ($po_mb_leave_date) { // 탈퇴회원
                    $mb_point_level_icon = $lv_id;
                } else {
                    $mb_point_level_icon = $lv_id;
                }
                
                $sql = " update {$g5['member_table']} set mb_point_level = '{$lv_id}', mb_point_level_icon='{$mb_point_level_icon}' where mb_id = '{$mb_id}' ";
                sql_query($sql);
                break;
            } else {
                $sql = "";
            }
        }
        ////////// 포인트에 따른 레벨아이콘 끝 //////////



9. 그누보드5 / skin / board / 폴더 / list.skin.php   125줄
<?php echo $list[$i]['name'] ?>

를 다음과 같이 변경

<?php
                $sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$list[$i]['mb_id']}' ";
                $row_level = sql_fetch($sql_level);
                echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
            ?><?php echo $list[$i]['name'] ?>



10. 그누보드5 / skin / board / 폴더 / view.skin.php  26줄
<?php echo $view['name'] ?>

를 다음과 같이 변경

<?php
                $sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$view['mb_id']}' ";
                $row_level = sql_fetch($sql_level);
                echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
            ?> <?php echo $view['name'] ?>



11. 그누보드5 / skin / board / 폴더 / view_comment.skin.php  33줄
            <?php echo $list[$i]['name'] ?>

를 다음과 같이 변경

            <?php
                $sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$list[$i]['mb_id']}' ";
                $row_level = sql_fetch($sql_level);
                echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
            ?>
            <?php echo $list[$i]['name'] ?>


참고자료
https://sir.kr/g4_tiptech/30919 
 

댓글목록

등록된 댓글이 없습니다.


Total 458건 10 페이지
  • RSS
기술자료 목록
278
그누보드   196162  2017-03-08 21:08 ~ 2019-02-25 19:29  
277
그누보드   15252  2017-03-08 18:12 ~ 2018-08-29 01:50  
276
그누보드   19844  2017-03-07 23:56 ~ 2022-05-10 11:20  
열람
그누보드   17223  2017-03-04 22:50 ~ 2019-12-12 05:41  
274
그누보드   12361  2017-02-20 19:05  
273
그누보드   11738  2017-02-20 16:30 ~ 2017-10-10 00:00  
272
그누보드   16281  2017-02-13 20:44 ~ 2017-03-02 00:00  
271
그누보드   12390  2017-01-17 07:52 ~ 2022-04-15 19:47  
270
그누보드   14287  2017-01-17 02:10  
269
그누보드   11682  2017-01-09 15:27  
268
그누보드   13719  2017-01-06 17:39  
267
그누보드   21835  2017-01-05 20:00 ~ 2021-08-02 21:43  
266
그누보드   21070  2016-12-06 11:58 ~ 2018-12-25 12:43  
265
그누보드   14205  2016-12-05 19:45 ~ 2021-01-05 12:01  
264
그누보드   14255  2016-11-14 12:58  
263
그누보드   26712  2016-11-03 15:42 ~ 2021-06-11 18:36  
262
그누보드   16275  2016-09-12 16:29 ~ 2021-02-26 16:55  
261
그누보드   15777  2016-09-06 12:59 ~ 2022-04-18 15:02  
260
그누보드   12985  2016-07-26 17:10 ~ 2020-09-26 09:26  
259
그누보드   12664  2016-07-25 15:14  

검색

해피정닷컴 정보

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

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