포인트에 따른 자동 레벨업
본문
일정 포인트에 도달하면 레벨이 자동으로 변하게 하고 싶습니다.
/lib/common.lib 파일을 수정하여 아래와 같이 입력을 하였습니다.
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
global $config;
global $g4;
global $is_admin;
// 포인트 사용을 하지 않는다면 return
if (!$config[cf_use_point]) { return 0; }
// 포인트가 없다면 업데이트 할 필요 없음
if ($point == 0) { return 0; }
// 회원아이디가 없다면 업데이트 할 필요 없음
if ($mb_id == "") { return 0; }
$mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
if (!$mb[mb_id]) { return 0; }
// 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action)
{
$sql = " select count(*) as cnt from $g4[point_table]
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row = sql_fetch($sql);
if ($row[cnt])
return -1;
}
// 포인트 건별 생성
$sql = " insert into $g4[point_table]
set mb_id = '$mb_id',
po_datetime = '$g4[time_ymdhis]',
po_content = '".addslashes($content)."',
po_point = '$point',
po_rel_table = '$rel_table',
po_rel_id = '$rel_id',
po_rel_action = '$rel_action' ";
sql_query($sql);
// 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
// 포인트 따라 회원 등급 바꾸기
if($is_admin){
$squery = ", mb_level = '10'";
}else{
if($sum_point >= 0 && $sum_point < 50){
$new_level = 2;
}elseif($sum_point >= 50 && $sum_point < 800){
$new_level = 3;
}elseif($sum_point >= 800 && $sum_point < 1000){
$new_level = 4;
}elseif($sum_point >= 1000 && $sum_point < 3000){
$new_level = 5;
}elseif($sum_point >= 3000 && $sum_point < 5000){
$new_level = 6;
}elseif($sum_point >= 5000 && $sum_point < 10000){
$new_level = 7;
}elseif($sum_point >= 10000 && $sum_point < 15000){
$new_level = 8;
}elseif($sum_point >= 15000 && $sum_point < 30000){
$new_level = 9;
}elseif($sum_point >= 30000){
$new_level = 10;
}
$squery = ", mb_level = '$new_level'";
}
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' $squery where mb_id = '$mb_id' ";
sql_query($sql);
return 1;
}
// 포인트 삭제
function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
{
global $g4;
$result = false;
if ($rel_table || $rel_id || $rel_action)
{
$result = sql_query(" delete from $g4[point_table]
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ", false);
// 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
// 포인트 따라 회원 등급 바꾸기
if($is_admin){
$squery = ", mb_level = '10'";
}else{
if($sum_point >= 0 && $sum_point < 999){
$new_level = 2;
}elseif($sum_point >= 10000 && $sum_point < 19999){
$new_level = 3;
}elseif($sum_point >= 20000 && $sum_point < 29999){
$new_level = 4;
}elseif($sum_point >= 30000 && $sum_point < 39999){
$new_level = 5;
}elseif($sum_point >= 40000 && $sum_point < 49999){
$new_level = 6;
}elseif($sum_point >= 50000 && $sum_point < 59999){
$new_level = 7;
}elseif($sum_point >= 60000 && $sum_point < 69999){
$new_level = 8;
}elseif($sum_point >= 70000 && $sum_point < 79999){
$new_level = 9;
}elseif($sum_point >= 80000){
$new_level = 10;
}
$squery = ", mb_level = '$new_level'";
}
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' $squery where mb_id = '$mb_id' ";
$result = sql_query($sql);
}
return $result;
}
라고 입력을 한 후 시험적으로 5만 포인트를 주어도 레벨 10 / 2만을 주어도 레벨 10이 되어버립니다.
위 구문대로 주어진 조건대로 레벨업을 하려면 어디를 수정해 주어야 하나요?
!-->
답변 2
$new_level
= 2;
047 | } elseif ( $sum_point >= 50 && $sum_point < 800){ |
048 | $new_level = 3; |
049 | } elseif ( $sum_point >= 800 && $sum_point < 1000){ |
050 | $new_level = 4; |
051 | } elseif ( $sum_point >= 1000 && $sum_point < 3000){ |
052 | $new_level = 5; |
053 | } elseif ( $sum_point >= 3000 && $sum_point < 5000){ |
054 | $new_level = 6; |
055 | } elseif ( $sum_point >= 5000 && $sum_point < 10000){ |
056 | $new_level = 7; |
057 | } elseif ( $sum_point >= 10000 && $sum_point < 15000){ |
058 | $new_level = 8; |
059 | } elseif ( $sum_point >= 15000 && $sum_point < 30000){ |
060 | $new_level = 9; |
061 | } elseif ( $sum_point >= 30000){ |
062 | $new_level = 10; |
063 | } |
064 | $squery = ", mb_level = '$new_level'" ; |
065 | } |
이부분 왜 한번 더 넣으셨어요 이거 삭제하세요
if($is_admin){
$squery = ", mb_level = '10'";
이 부분이 문제인 것 같은데요?
관리자가 포인트를 줄때에 해당 회원은 레벨 10이 되는 로직 같아요.
답변을 작성하시기 전에 로그인 해주세요.