포인트별 레벨자동변환

· 13년 전 · 8663 · 17
포인트별로 레벨(mb_level) 을 자동으로 변환시키는 방법입니다

/lib/common.lib.php 파일의

insert_point 함수의 884번째줄 아래에 아래내용을 추가합니다.
[code]
// 포인트 따라 회원 등급 바꾸기
if(!$is_admin){
if($sum_point >= 0 && $sum_point < 1500){
$new_level = 2;
}elseif($sum_point >= 1500 && $sum_point < 3000){
$new_level = 3;
}elseif($sum_point >= 3000 && $sum_point < 5000){
$new_level = 4;
}elseif($sum_point >= 5000 && $sum_point < 10000){
$new_level = 5;
}elseif($sum_point >= 10000 && $sum_point < 20000){
$new_level = 6;
}elseif($sum_point >= 20000 && $sum_point < 30000){
$new_level = 7;
}elseif($sum_point >= 30000 && $sum_point < 40000){
$new_level = 8;
}elseif($sum_point >= 40000 && $sum_point < 50000){
$new_level = 9;
}elseif($sum_point >= 50000){
$new_level = 10;
}
$squery = ", mb_level = '$new_level'";
}

[/code]

sum_point 는 회원의 전체포인트를 가져오는 것입니다.

따라서 회원의 전체포인트 합이 위 조건에 만족할때 new_level 값을 강제 지정해줍니다.

관리자인 경우 는 레벨을 바꾸면 안되므로 is_admin 조건을 추가했습니다.

위와같이 추가하셨다면

[code]
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
sql_query($sql);
[/code]

이쿼리를

[code]
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' $squery where mb_id = '$mb_id' ";
sql_query($sql);
[/code]

이렇게 바꿉니다.

위와 마찬가지로 delete_point 함수에도 아래 내용을 추가해 줍니다

$sum_point = $row[sum_po_point]; 밑에

[code]
// 포인트 따라 회원 등급 바꾸기
if(!$is_admin){
if($sum_point >= 0 && $sum_point < 1500){
$new_level = 2;
}elseif($sum_point >= 1500 && $sum_point < 3000){
$new_level = 3;
}elseif($sum_point >= 3000 && $sum_point < 5000){
$new_level = 4;
}elseif($sum_point >= 5000 && $sum_point < 10000){
$new_level = 5;
}elseif($sum_point >= 10000 && $sum_point < 20000){
$new_level = 6;
}elseif($sum_point >= 20000 && $sum_point < 30000){
$new_level = 7;
}elseif($sum_point >= 30000 && $sum_point < 40000){
$new_level = 8;
}elseif($sum_point >= 40000 && $sum_point < 50000){
$new_level = 9;
}elseif($sum_point >= 50000){
$new_level = 10;
}
$squery = ", mb_level = '$new_level'";
}

[/code]

위 쿼리를 추가해 주시고

[code]
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
sql_query($sql);
[/code]

이쿼리를

[code]
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' $squery where mb_id = '$mb_id' ";
sql_query($sql);
[/code]

이렇게 바꿔주세요


포인트별로 레벨을 자동 변환하는 것은 위방식이 끝입니다.

레벨변경에 대한 로그를 추가하고 싶으시다면 위코드에서 별도의 로그저장 구문을 넣어주시면 됩니다.
|

댓글 17개

우선 추천을!!!

해보진 않았찌만 ㅎㅎ

혹시 저기에 날짜같은거 넣을라믄 어떻게 해야되나요?

예를들어 포인트는 다 채웠지만 가입한지 30일이라든지 기간이 안되면 레벨업 안되게끔용..

많이 어렵겠죠..ㅠ
가입날짜별 레벨제한은 좋은 아이디어 네요.
지금 하는 작업만 끝나면 좀더 보완해서 올려볼께요.
아,,제가 바라고 있던 팁이 끝내 나타났네요.
이 팁을 이용해서 강제적으로 가입인사를 시키고, 게시물작성이 가능하도록 할 예정입니다.

넓은마인드님, 감사합니다.
추쳔하고 갑니다. 스크랩도 하고요....^^
감사합니다.

좀더 보완해서 업그레이드도 할 예정입니다.^^
역시 넓은 마인드님이 최고네요
과찬이십니다.~
^^ 감사합니다. 잘보고 갑니다.
혹시 이거 해보신분 계세요? 테스트로 해봤는데 되지가 않아서..정말 좋은 팁인데..ㅠㅠ윽..
어떻게 안되는지 말해주시면 답변을 해드리겠씁니다.~
레벨전환은 되는데 최고 관리자 레벨이 10이 아니라 2,4로 막 변경이 되버려요 ㅠㅠ
/lib/common.lib.php 파일의 insert_point 함수에
global $is_admin; <= 이구문이 있는지 확인해 보시고
있다면 주석 처리하신후
$is_admin = is_admin($mb_id); <= 이걸 추가해 보세요
delete_point 함수도 마찬가지로 수정해보세요.
global $is_admin 이 안먹는 오류가 있는거 같습니다.
레벨 99까지 인경우에 어떻게하죠 ㅠㅠ
레벨 99까지인 경우 elseif 조건문을 추가해서 처리해야 합니다.
앞으로 레벨 추가및 날짜 지정 등의 업그레이드가 될 예정입니다.
해당 내용 적용 후 테스트를 해본결과 적용되지 않습니다.

현재 그누보드 기본 빌더를 사용중이며, 884번 줄의 바로 아래에 내용을 추가해 보니 오류가 출력되어

$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);

아래에 추가해놓은 상태입니다..
무작정 따라하기 했다가 레벨 1~10까지 에서 1하고 2만 남았어요 ㅠㅠ
감사합니다. 일단은 다른분들의 도움을 받아 적용해볼게요...
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
13년 전 조회 4,604
13년 전 조회 4,367
13년 전 조회 8,890
13년 전 조회 5,460
13년 전 조회 9,818
13년 전 조회 4,258
13년 전 조회 4,130
13년 전 조회 4,393
13년 전 조회 4,700
13년 전 조회 8,664
13년 전 조회 4,046
13년 전 조회 3,679
13년 전 조회 3,996
13년 전 조회 4,243
13년 전 조회 9,895
13년 전 조회 6,875
13년 전 조회 3,007
13년 전 조회 9,088
13년 전 조회 5,529
13년 전 조회 6,761
🐛 버그신고