채택완료

포인트에 따른 자동 레벨업

2014-12-14 (일) 12:42:02 8,537

일정 포인트에 도달하면 레벨이 자동으로 변하게 하고 싶습니다.

/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 }

이부분 왜 한번 더 넣으셨어요 이거 삭제하세요 

 if($is_admin){

    $squery = ", mb_level = '10'";

 

 

이 부분이 문제인 것 같은데요?

관리자가 포인트를 줄때에 해당 회원은 레벨 10이 되는 로직 같아요.

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