일정 포인트에 도달하면 레벨이 자동으로 변하게 하고 싶습니다.
/lib/common.lib 파일을 수정하여 아래와 같이 입력을 하였습니다.
Copy
// 포인트 부여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개
채택된 답변
+20 포인트
우엉수를설
2014-12-14 (일) 12:50:44
$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 | } |
이부분 왜 한번 더 넣으셨어요 이거 삭제하세요
2015-01-03 (토) 22:55:52
if($is_admin){
$squery = ", mb_level = '10'";
이 부분이 문제인 것 같은데요?
관리자가 포인트를 줄때에 해당 회원은 레벨 10이 되는 로직 같아요.
답변을 작성하려면 로그인이 필요합니다.