포인트에 따른 자동 레벨업

포인트에 따른 자동 레벨업

QA

포인트에 따른 자동 레벨업

본문

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

 

/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이 되는 로직 같아요.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,663 | RSS
QA 내용 검색

회원로그인

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