포인트에 따른 회원레벨 변경에서 질문 있습니다.
관련링크
본문
그누보드 - 포인트에 따른 회원레벨 변경 > 그누보드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, $member; <---추가
~~
if($member['mb_level'] >= $change_level) return; <-- $sql 바로 위에 추가
$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
$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']);
}
답변을 작성하시기 전에 로그인 해주세요.