테스트 사이트 - 개발 중인 베타 버전입니다

포인트에 따른 회원레벨 변경에서 질문 있습니다. 채택완료

Muacuty 1년 전 조회 1,947

https://sir.kr/bbs/board.php?bo_table=g5_tip&wr_id=14086">그누보드 - 포인트에 따른 회원레벨 변경 > 그누보드5 팁자료실 (sir.kr)

JLSeagull 님이 공유하신 이소스로 포인트에 따른 레벨변경 적용 했는데요.

 

질문 : 등업만 되고, 강등은 안되게 할려면 어디를 손봐야 할까요?

 

고수님들의 도움 부탁드립니다!!!

 

</strong></p>

<p>// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.</p>

<p>function check_member_point($mb_point, $mb_id){

    global $g5;

    $cmp_arr = array( 100, 140, 160, 180, 240, 260, 300, 310);    //2~9레벨까지 포인트 제한

                    // 2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9

    

    for($i= 0; $i < sizeof($cmp_arr); $i++){

        if($mb_point >= $cmp_arr[$i]){

            $change_level = $i+2;

        }

    }

    $sql ="update {$g5['member_table']} set mb_level =  {$change_level} where mb_id = '{$mb_id}'";

    sql_query($sql);

}</p>

<p>if($is_member && !$is_admin){ //회원이고, 관리자가 아닐경우에만 실행

    check_member_point($member['mb_point'], $member['mb_id']);

}

<strong>

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

답변 5개

채택된 답변
+20 포인트
R
1년 전

해당 function $sql 부분 확인하세요.

</p>

<pre>
<code>// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.
function check_member_point($mb_point, $mb_id){
    global $g5;
    $cmp_arr = array( 100, 140, 160, 180, 240, 260, 300, 310);    //2~9레벨까지 포인트 제한
                    // 2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9
    
    for($i= 0; $i < sizeof($cmp_arr); $i++){
        if($mb_point >= $cmp_arr[$i]){
            $change_level = $i+2;
        }
    }
    //이부분 변경
    //$sql ="update {$g5['member_table']} set mb_level =  {$change_level} where mb_id = '{$mb_id}'";
    $sql ="update {$g5['member_table']} set mb_level = {$change_level} where mb_level < {$change_level} and mb_id = '{$mb_id}'";
    sql_query($sql);
}
if($is_member && !$is_admin){ //회원이고, 관리자가 아닐경우에만 실행
    check_member_point($member['mb_point'], $member['mb_id']);
}</code></pre>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

M
Muacuty
1년 전
감사합니다!! 이걸로 성공했습니다!!

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

다음과 같은 방법도 있으니 참고해 보세요

</p>

<p>function check_member_point($mb_point, $mb_id){

    global $g5;

    $cmp_arr = array(100, 140, 160, 180, 240, 260, 300, 310);    //2~9레벨까지 포인트 제한

                    // 2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9

    

    $current_level = $member['mb_level'];

    $new_level = $current_level;

    

    for ($i = $current_level - 2; $i < sizeof($cmp_arr); $i++) {

        if ($mb_point >= $cmp_arr[$i]) {

            $new_level = $i + 2;

        }

    }</p>

<p>    if ($new_level > $current_level) {

        $sql ="update {$g5['member_table']} set mb_level =  {$new_level} where mb_id = '{$mb_id}'";

        sql_query($sql);

    }

}

if ($is_member && !$is_admin) { //회원이고, 관리자가 아닐 경우에만 실행

    check_member_point($member['mb_point'], $member['mb_id']);

}

로그인 후 평가할 수 있습니다

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

1년 전

function check_member_point($mb_point, $mb_id){
    global $g5, $member; <---추가

~~

 

if($member['mb_level'] >= $change_level) return; <-- $sql 바로 위에 추가

$sql =~~~

 

로그인 후 평가할 수 있습니다

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

</p>

<p>// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.

function check_member_point($mb_point, $mb_id){

    global $g5;

    $cmp_arr = array( 100, 140, 160, 180, 240, 260, 300, 310);    //2~9레벨까지 포인트 제한

                    // 2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9

    

    for($i= 0; $i < count($cmp_arr); $i++){

        if($mb_point >= $cmp_arr[$i]){

            $change_level = $i+2;

        }

    }

    $sql ="update {$g5['member_table']} set mb_level = '{$change_level}' where mb_id = '{$mb_id}'";

    sql_query($sql);

}

if($is_member && !$is_admin){ //회원이고, 관리자가 아닐경우에만 실행

    check_member_point($member['mb_point'], $member['mb_id']);

}</p>

<p>

 

위의 내용 그대로 적용 해보세요 
콤마 누락 등 몇가지 수정 하였습니다.
sizeof 대신 count 를 사용 했습니다. 차이는 그닥 없습니다.

310 이상이면 레벨 10이 되어서 관리자의 일부 기능을 할 수 있게 될 수도 있습니다.
참고하세요

로그인 후 평가할 수 있습니다

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

1년 전

if문으로 mb_level이 change_level보다 클때만 쿼리문 실행되게 하면 될거 같아요.

 

</p>

<p>if ($mb_level < $change_level) {</p>

<pre>
<code>    $sql ="update {$g5['member_table']} set mb_level =  {$change_level} where mb_id = '{$mb_id}'";
    sql_query($sql);</code></pre>

<p>}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

M
Muacuty
1년 전
선배님;; 여기가 아닌가 봅니다;; ㅠㅠ;
적용이 안됩니다 ㅠㅠ;;

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

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

로그인