그누보드로 이전후 포인트 레벨 동기화

그누보드로 이전후 포인트 레벨 동기화

QA

그누보드로 이전후 포인트 레벨 동기화

답변 4

본문

XE를 그누보드로 이전했습니다. 게시글은 이동하지 않은 상태입니다. 그래서 그런것인지..

예를 들어 XE때의 회원포인트가 1000이지만, 레벨구역3(600~1200)에 해당합니다.

그런데 그누보드로 이전하니 모든 회원이 레벨2입니다. 일일이 기존회원레벨 확인해서 변경해줄 수도 없고,

그누보드의 포인트레벨 정책에 따라 레벨 변경할 수 있는 방법이 있습니까?

 

이 질문에 댓글 쓰기 :

답변 4


$sql = "select * from {$g5['member_table']} where mb_level < 10";
$result = sql_query($sql);
while($row = sql_fetch_array($result)){
 // 조건에맞춰서 포인트별 변경할 레벨을 지정하세요
 if($row['mb_point']>0 && $row['mb_point'] <=599){
   $change_level = 3;
 }elseif($row['mb_point']>=600 && $row['mb_point'] <=1200){
   $change_level = 4;
 }
 sql_query("update {$g5['member_table']} set mb_level = '".$change_level."' where mb_id='".$row['mb_id']."'"); // 레벨 변경
}

 

위처럼 코드를 간단히 짜서 php 파일 실행 시키시면 지정된 범위안에있는 

포인트 별로 레벨을 재설정 해서 update 시켜줍니다

코드를 짜본적이 사실 없어요. 일단 위에 포인트만 적절히 수정하여 2레벨에 대한것만 해보았는데,
1 <?php
2 $sql = "select * from {$g5['member_table']} where mb_level < 10";
3 $result = sql_query($sql);
.
.
.
.
?>

결과
Fatal error: Uncaught Error: Call to undefined function sql_query() in 내.php:3 Stack trace: #0 {main} thrown in 내.php on line 3

회원 레벨 마다 각각 다르게 주고 싶단거잖아요?

네 그렇습니다. 회원마다 기존누적된포인트가 254, 1024, 3015 등 다양하며 이것을 그대로 새서버로 이전한 상태인데 그누보드의 포인트에 따른 레벨설정이 적용되지 않는 상황입니다.
회원포인트에 따라 자동 레벨 적용이 반영되는 방법 질문입니다.

제일 상단에

include_once('./_common.php');

 

이거 넣어주셔야 합니다

감사합니다. 잘 해결되었습니다. 그누빌더에 이윰테마를 쓰는데 이전한 회원정보가 그누빌더 테이블에는 예를 들면 천명이 들어가있는데, 이윰의 회원테이블에는 10명밖에 있지 않네요.
이건 테마만드신 분께 알아봐야겠습니다.

감사합니다. 변경이 잘되었는데 한가지 문의 드립니다.
DB에는 레벨이 변경이 되어있지만, 그누관리자에 가보면,
1. 일단은 레벨 변경하는 부분이라든가 그런게 혹시 어디에 있을까요?
2. 그누관리자-회원관리에 가보면, 회원포인트옆에 권한이란 부분이 있더군요.권한이 1~3까지만 표시가 되어있는데, 저는 레벨=권한 이라고 첨에 생각을 했습니다. 그런데 그런게 아닌것 같네요.
레벨은 6이지만 권한은 1이고,, 게시판접근은 레벨이 아닌 권한에 따른 접근 여부로 되어있는것 같네요. 권한을 포인트레벨과 같이 1~6까지 변경도 가능한지요? 가능하다면 관리부분에서 가능할까요?
저는 레벨에  따른 게시판 접근을 제한하고 싶은데 말입니다. ㅠㅠ.

우선 xe레벨과 그누보드 레벨 단계가 다르잖아요

그누보드는 최상위레벨이 10이니....

레벨을 xe처럼 10이상을 설정 할 것인지 정해서(그누보드에서 레벨을 더 많은 단계를 만들어 사용할 필요성을 느끼지 못하겠습니다만)

레벨을 10이상으로 설정하는 작업부터하세요<--검색하면 나옵니다

다음처럼 단계별 레벨을 만들어 실행해 주면 됩니다

반드시 회원테이블을 백업 한 후 테스트하세요

<?

include "_common.php";

$tmpArr =array('','',599,1200, 1800, 2400.................);//<--레벨별 최고 포인트

for($i=3; $i< count($tmpArr); $i++){

  $p1 = $tmpArr[$i-1]+1;  $p2 = $tmpArr[$i];

  sql_query("update {$g5['member_table']} set mb_level = $i where mb_point between $p1 and $p2");

}

 

고맙습니다. 배열의 또 새로운 방법이네요.
일단 회원테이블이야 아예 비워버려도 됩니다. 다시 이전시키면 되니까요.
그럼 순서를 적어보면,
1. 회원테이블 비운다(관리자빼고)
2. 레벨만든다. 저는 이윰테마를 씌웠는데, 그누레벨은 2부터있고, 이윰테마는 또 1부터 그룹식을 나눠져있더군요. 그래서 동일하게 2부터 8까지만 하던지 하려고 하고요. 아니면  이윰테마의 레벨 설정은 사용하지 않음으로.. (xe 도 10이상 갈 필요성 못느꼈습니다)
3. 회원테이벌 이전( XE--> 그누)
4.  레벨 php 실행

요렇게 하면 되겠지요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 88
© SIRSOFT
현재 페이지 제일 처음으로