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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
포인트에 따른 회원레벨 변경에서 질문 있습니다.

QA

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

본문

그누보드 - 포인트에 따른 회원레벨 변경 > 그누보드5 팁자료실 (sir.kr)

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

 

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

 

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

 


// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.
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);
}
if($is_member && !$is_admin){ //회원이고, 관리자가 아닐경우에만 실행
    check_member_point($member['mb_point'], $member['mb_id']);
}

이 질문에 댓글 쓰기 :

답변 5

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



// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.
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']);
}

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

 


if ($mb_level < $change_level) {

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

}

// 유저가 가진 포인트에 따라 레벨이 변경되는 소스입니다.
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']);
}

 

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

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

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


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;
        }
    }
    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']);
}
답변을 작성하시기 전에 로그인 해주세요.
전체 124,295 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT