채택완료

레벨 아이콘 이미지 출력

2021-01-27 (수) 14:09:13 3,969
Copy
<?php 
if (!defined('_GNUBOARD_')) exit; 
// 포인트별 아이콘 부여 
function get_level_icon($mb_id) { 
    global $g5; 
    $max_point = 1000; // 최저 
    $ren_point = 1000; // 나누기 
    $max_level = 101; // 마지막레벨 
    
    $mb = get_member($mb_id, "mb_id, mb_point"); 
    $ic_mb_id = $mb['mb_id']; 
    $is_admin = is_admin($ic_mb_id); 
    if ($ic_mb_id) { 
        // 관리자 
        if ($is_admin == 'super') { 
            $mb_icon = "<img src='".G5_IMG_URL."/level/lv_admin.png' align='absmiddle' title='관리자'>"; 
        //} else if ($ic_mb_id == 'test' || $ic_mb_id == 'test2') { // 특정회원들 
        //    $mb_icon = "<img src='".G5_IMG_URL."/level/lv_special.png' align='absmiddle' title='특별회원'>"; 
        } else { 
            $mb_point = $mb['mb_point']; 
            $point = ($mb_point < $max_point) ? $max_point : $mb_point; // 최저포인트 이하 
            $mb_level = (int)($point / $ren_point); 
            $level = ($mb_level > $max_level) ? $max_level : $mb_level; // 맥스레벨 까지만 
            $mb_icon = "<img src='".G5_IMG_URL."/level/".$level.".png' align='absmiddle' title='포인트레벨 ".$level."".number_format($mb_point)."점'>"; 
        } 
    } 
    else { 
        // 비회원 
        $mb_icon = "<img src='".G5_IMG_URL."/level/lv_guest.png' align='absmiddle' title='손님'>"; 
    } 
    return $mb_icon; 
    //echo $mb_icon; 
} 
?>

1레벨은 재대로 적용 되는데 다른레벨도 1레벨로 아이콘이 표기 되는데 어떤게 문제인지..

초보자라 이런문의 드려서 죄송합니다.

20264455_1611602764.2568.jpg

20264455_1611602770.4469.jpg

20264455_1611598407.9219.jpg

20264455_1611724719.2396.jpg

답변 6개 / 댓글 16개

채택된 답변
+20 포인트
$mb_level = (int)($point / $ren_point); 

1300 EXP 니까 1.3이 나오고 int선언하니까 1이 나오는게 맞습니다.

ceil로 올림처리 하시거나 +1을 해주시는 형태로 변경하셔야 원하시는

형태가 될것 같습니다

답변에 대한 댓글 7개

이게 맞네요!
.. 어떻게 수정하면 되는건가요 ㅠㅠ 정말 초보자라 모르겠네요 ㅠㅠ
진짜.. 다입력 해봤는데 ...
해당 부분을 그러면 어떻게 수정 해야 옳은가요...
+1처리는 어떻게 하나요? ceil 하니깐 2레벨은 정상 표기 됬는데 3레벨은 또 2레벨로 표기가 됩니다. ㅠㅠ
정말 감사합니다 해결 됬습니다 너무 감사합니다... 2일간 고생했는데 드디어 정상 적용 됬습니다
저 혹시 지금 저게 포인트인데 경험치로 바꿀려면 어떻게 하죠?
그냥 point 부분을 전부 exp로 변경하면될까요?
아까 잠깐 올렸던 소스면 문제있는 소스입니다.
다시 드릴게요 쪽지 주세요
정보공개 안되어있으셔서 쪽지 안가지십니다
풀고 쪽지주세요

20264455_1611734199.4755.jpg

이게 2100입니다

답변에 대한 댓글 1개

2100이 2레벨인지 3레벨인지 알려주셔야죠-.-
2,3둘다에 걸쳐있잖아요 ㅜㅜ

답변에 대한 댓글 4개

2100점이 2레벨이예요? 3레벨이예요?
최소하고 최대에 다 포함되어있는데..
이상인지 초과인지 미만인지 이하인지...
3레벨로 표기 됩니다. 2600점인데
2100점이요
2레벨 이네요 근데 3레벨계급으로 표기가 됩니다.
Copy
<?php
if (!defined('_GNUBOARD_')) exit;
// 포인트별 아이콘 부여
function get_level_icon($mb_id) {
    global $g5;
    $max_point = 1000; // 최저
    $ren_point = 1000; // 나누기
    $max_level = 101; // 마지막레벨
 
    $mb = get_member($mb_id, "mb_id, mb_point");
    $ic_mb_id = $mb['mb_id'];
    $is_admin = is_admin($ic_mb_id);
    if ($ic_mb_id) {
        // 관리자
        if ($is_admin == 'super') {
            $mb_icon = "<img src='".G5_IMG_URL."/level/lv_admin.png' align='absmiddle' title='관리자'>";
        //} else if ($ic_mb_id == 'test' || $ic_mb_id == 'test2') { // 특정회원들
        //    $mb_icon = "<img src='".G5_IMG_URL."/level/lv_special.png' align='absmiddle' title='특별회원'>";
        } else {
            $mb_point = $mb['mb_point'];
            $point = ($mb_point < $max_point) ? $max_point : $mb_point; // 최저포인트 이하
            if ($mb_point >= 606000) $level = 101;
            else if ($mb_point >= 595000) $level = 100;
            else if ($mb_point >= 584100) $level = 99;
            else if ($mb_point >= 573300) $level = 98;
            else if ($mb_point >= 562600) $level = 97;
            else if ($mb_point >= 552000) $level = 96;
            else if ($mb_point >= 541500) $level = 95;
            else if ($mb_point >= 531100) $level = 94;
            else if ($mb_point >= 520800) $level = 93;
            else if ($mb_point >= 510600) $level = 92;
            else if ($mb_point >= 500500) $level = 91;
            else if ($mb_point >= 490500) $level = 90;
            else if ($mb_point >= 490500) $level = 89;
            else if ($mb_point >= 470800) $level = 88;
            else if ($mb_point >= 461100) $level = 87;
            else if ($mb_point >= 451500) $level = 86;
            else if ($mb_point >= 442000) $level = 85;
            else if ($mb_point >= 432600) $level = 84;
            else if ($mb_point >= 423300) $level = 83;
            else if ($mb_point >= 423300) $level = 82;
            else if ($mb_point >= 405000) $level = 81;
            else if ($mb_point >= 396000) $level = 80;
            else if ($mb_point >= 387100) $level = 79;
            else if ($mb_point >= 378300) $level = 78;
            else if ($mb_point >= 369600) $level = 77;
            else if ($mb_point >= 361000) $level = 76;
            else if ($mb_point >= 352500) $level = 75;
            else if ($mb_point >= 344100) $level = 74;
            else if ($mb_point >= 335800) $level = 73;
            else if ($mb_point >= 327600) $level = 72;
            else if ($mb_point >= 319500) $level = 71;
            else if ($mb_point >= 311500) $level = 70;
            else if ($mb_point >= 303600) $level = 69;
            else if ($mb_point >= 295800) $level = 68;
            else if ($mb_point >= 288100) $level = 67;
            else if ($mb_point >= 280500) $level = 66;
            else if ($mb_point >= 273000) $level = 65;
            else if ($mb_point >= 265600) $level = 64;
            else if ($mb_point >= 258300) $level = 63;
            else if ($mb_point >= 251100) $level = 62;
            else if ($mb_point >= 244000) $level = 61;
            else if ($mb_point >= 237000) $level = 60;
            else if ($mb_point >= 230100) $level = 59;
            else if ($mb_point >= 223300) $level = 58;
            else if ($mb_point >= 216600) $level = 57;
            else if ($mb_point >= 210000) $level = 56;
            else if ($mb_point >= 203500) $level = 55;
            else if ($mb_point >= 197100) $level = 54;
            else if ($mb_point >= 190800) $level = 53;
            else if ($mb_point >= 184600) $level = 52;
            else if ($mb_point >= 178500) $level = 51;
            else if ($mb_point >= 172500) $level = 50;
            else if ($mb_point >= 166600) $level = 49;
            else if ($mb_point >= 160800) $level = 48;
            else if ($mb_point >= 155100) $level = 47;
            else if ($mb_point >= 149500) $level = 46;
            else if ($mb_point >= 144000) $level = 45;
            else if ($mb_point >= 138600) $level = 44;
            else if ($mb_point >= 133300) $level = 43;
            else if ($mb_point >= 128100) $level = 42;
            else if ($mb_point >= 123000) $level = 41;
            else if ($mb_point >= 118000) $level = 40;
            else if ($mb_point >= 113100) $level = 39;
            else if ($mb_point >= 108300) $level = 38;
            else if ($mb_point >= 103600) $level = 37;
            else if ($mb_point >= 99000) $level = 36;
            else if ($mb_point >= 94000) $level = 35;
            else if ($mb_point >= 90000) $level = 34;
            else if ($mb_point >= 85000) $level = 33;
            else if ($mb_point >= 81600) $level = 32;
            else if ($mb_point >= 77500) $level = 31;
            else if ($mb_point >= 73500) $level = 30;
            else if ($mb_point >= 69600) $level = 29;
            else if ($mb_point >= 65800) $level = 28;
            else if ($mb_point >= 62100) $level = 27;
            else if ($mb_point >= 58500) $level = 26;
            else if ($mb_point >= 55000) $level = 25;
            else if ($mb_point >= 51600) $level = 24;
            else if ($mb_point >= 48300) $level = 23;
            else if ($mb_point >= 45100) $level = 22;
            else if ($mb_point >= 42000) $level = 21;
            else if ($mb_point >= 39000) $level = 20;
            else if ($mb_point >= 36100) $level = 19;
            else if ($mb_point >= 33300) $level = 18;
            else if ($mb_point >= 30600) $level = 17;
            else if ($mb_point >= 28000) $level = 16;
            else if ($mb_point >= 25500) $level = 15;
            else if ($mb_point >= 23100) $level = 14;
            else if ($mb_point >= 20800) $level = 13;
            else if ($mb_point >= 18600) $level = 12;
            else if ($mb_point >= 16500) $level = 11;
            else if ($mb_point >= 14500) $level = 10;
            else if ($mb_point >= 12600) $level = 9;
            else if ($mb_point >= 10800) $level = 8;
            else if ($mb_point >= 9100) $level = 7;
            else if ($mb_point >= 7500) $level = 6;
            else if ($mb_point >= 6000) $level = 5;
            else if ($mb_point >= 4600) $level = 4;
            else if ($mb_point >= 3300) $level = 3;
            else if ($mb_point >= 2100) $level = 2;
            else if ($mb_point >= 4600) $level = 4;
            else if ($mb_point >= 3300) $level = 3;
            else if ($mb_point >= 2100) $level = 2;
            else $level = 1;
            $mb_icon = "<img src='".G5_IMG_URL."/level/".$level.".png' align='absmiddle' title='포인트레벨 ".$level."".number_format($mb_point)."점'>";
        }
    }
    else {
        // 비회원
        $mb_icon = "<img src='".G5_IMG_URL."/level/lv_guest.png' align='absmiddle' title='손님'>";
    }
    return $mb_icon;
    //echo $mb_icon;
}
?>

하... 다 넣어봤지만... 이번에는 깨지지는않는데 변화가 없네요

답변에 대한 댓글 3개

코드 짜신걸 보면 회원 포인트가 2100 이상 이면 레벨 2를 주게 해놨는데 현재 로그인 한 회원은 1300포인트죠? 그럼 레벨이 1이니깐 변화가 없는거고요

1000점대 2레벨
2000점대 3레벨
4000점대 4레벨로 변경하시려면

$mb_level = (int)($point / $ren_point); <-- 이 부분을 아래껄로 변경하세요
$mb_level = (int)ceil($point / $ren_point);
본문에 올려주신 소스랑 이 댓글에 소스랑 기준점이 틀린데요
어떤 소스랑 기준점으로 쓰실려고 하는지 모르겠네요
1레벨 기준점이 몇인가요? 2레벨~101레벨의 기준점은 몇인가요?
소스가 좀 섞어지신것 같은데... 1000~2100점 사이 회원이 붕 뜨는 문제도있고..
소스중간중간 불필요한 것들도 있고..2번 elseif 된것도 있고...;;

하고자 하는 기준을 명확하게 말씀해주시면 답을 드릴 수 있을 것 같습니다.
+1처리는 어떻게 하나요? ceil 하니깐 2레벨은 정상 표기 됬는데 3레벨은 또 2레벨로 표기가 됩니다. ㅠㅠ
2021-01-27 (수) 14:41:46

소스에는 전혀 문제가 없고요

추측으론 이미지 경로 문제거나

저 함수를 불러오는 곳이 잘못될 가능성이 큽니다

답변에 대한 댓글 1개

로그인 위젯 입니다
근데 이게 로그인 위젯 뿐이 아니라 게시판에서도 레벨 아이콘이 변경이 없습니다

<div class="f-de font-weight-normal">

<?php if($is_member) { //Login ?>

<div class="d-flex align-items-center mb-3">
<div class="pr-3">
<?php include_once G5_LIB_PATH."/level_icon.lib.php"; echo get_level_icon($member['mb_id']); ?>
</div>
<div class="flex-grow-1 pt-2">
<h5 class="hide-photo mb-2">
<b style="letter-spacing:-1px;"><?php echo str_replace('sv_member', 'sv_member en', $member['sideview']); ?></b>
</h5>
<p class="f-sm">
<?php echo ($member['mb_grade']) ? $member['mb_grade'] : $member['as_level'].'레벨'; ?>
<?php if ($is_admin == 'super' || $member['is_auth']) { ?>
<span class="na-bar"></span>
<a href="<?php echo correct_goto_url(G5_ADMIN_URL); ?>">
관리자
</a>
<?php } ?>
</p>
</div>
</div>

<?php
// 멤버쉽 플러그인
if(IS_NA_XP) {
$member['as_max'] = (isset($member['as_max']) && $member['as_max'] > 0) ? $member['as_max'] : 1;
$per = (int)(($member['as_exp'] / $member['as_max']) * 100);
?>
<div class="clearfix f-sm mt-2">
<span class="float-left">레벨 <?php echo $member['as_level'] ?></span>
<span class="float-right">
<a href="<?php echo G5_BBS_URL ?>/exp.php" target="_blank" class="win_point">
Exp <?php echo number_format($member['as_exp']) ?>(<?php echo $per ?>%)
</a>
</span>
</div>
<div class="progress bg-white" title="레벨업까지 <?php echo number_format($member['as_max'] - $member['as_exp']);?> 경험치 필요">
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="<?php echo $per ?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $per ?>%">
<span class="sr-only"><?php echo $per ?>%</span>

<?php } ?>
</div>
</div>

<div class="btn-group w-100" role="group" aria-label="Member Menu">
<a href="javascript:;" onclick="sidebar('user')" class="btn btn-primary text-white" role="button">
내정보
</a>
<a href="javascript:;" onclick="sidebar('noti')" class="btn btn-primary text-white" role="button">
<i class="fa fa-bell" aria-hidden="true"></i>
<span class="sr-only">알림</span>
<span class="nt-noti-label<?php echo ($member['noti_cnt']) ? '' : ' d-none';?>">
<b class="nt-noti-cnt"><?php echo number_format($member['noti_cnt']) ?></b>
</span>
</a>
<a href="<?php echo G5_BBS_URL ?>/logout.php" class="btn btn-primary text-white" role="button">
로그아웃
</a>
</div>

답변을 작성하려면 로그인이 필요합니다.