레벨에 따라 얻는 포인트 다르게 할 수 있나요? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

레벨에 따라 얻는 포인트 다르게 할 수 있나요? 정보

레벨에 따라 얻는 포인트 다르게 할 수 있나요?

본문

예를 들어 레벨 2의 회원이 글을 썼을때 20포인트 얻는다면
레벨 3의 회원이 글을쓰면 50포인트 얻게끔..
 
가능할까요?

댓글 전체

아래 함수를 변형하면 가능합니다.

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];

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

    return 1;
}
위 구문 변수중 $point  이부분을 회원 레벨가 비교해서 하시면 됩니다.

예)

=========================================================================
$sql = " select * from g4_member where mb_id = '$mb_id' ";
foreach ($sql as $row){

$mb_level  = $row[mb_level];
$set_point  =  $mb_level*1.2 ;  // 레벨별 추가 20% 증대한다. 즉 3등급은 60% 추가지급
$point  = $point*$set_point;

}

위 구문을 적당한 곳에 삽입하시면 될거 같습니다.

설명

1. 접속한 회원의 레벨을 일단 불러옵니다.

$sql = " select * from g4_member where mb_id = '$mb_id' ";

2. 회원레벨에 적용하고 싶은 조건을 설정합니다.

$mb_level  = $row[mb_level];
$set_point  =  $mb_level*1.2 ;  // 요기에 적용하고 싶은....

3. 아래에 적용된 변수명으로 원위치 시킵니다.

$point  = $point*$set_point;


전 안해봤습니다.
=====================================================
예를 들어 레벨 2의 회원이 글을 썼을때 20포인트 얻는다면
레벨 3의 회원이 글을쓰면 50포인트 얻게끔..
=====================================================

^^ 질문이 이거 아니었던가요.?  포인트를 등급별레벨에 적용....
insert_point()  <<--- 이 함수를 변형하는거고요.
$point            <<---  등급에 맞게끔 변수를 둘려면 요거를 조정해야 되거둥요.

등급별 포인트 적용율을 차등 .....

$mb_level  = $row[mb_level];
$set_point  =  $mb_level*1.2 ;  // 레벨별 추가 20% 증대한다. 즉 3등급은 60% 추가지급
$point  = $point*$set_point;
$sql = " select * from g4_member where mb_id = '$mb_id' ";
foreach ($sql as $row){

$mb_level  = $row[mb_level];
$set_point  =  $mb_level*1.2 ;  // 레벨별 추가 20% 증대한다. 즉 3등급은 60% 추가지급
$point  = $point*$set_point;

}

이걸..

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

이 함수 밑에 넣었더니...

에러가 납니다..

foreach ($sql as $row){    <--이부분에서 에러가 나는듯한데..ㅠㅠ
$sql = " select * from g4_member where mb_id = '$mb_id' ";
-----------------------------------------------------
$result = sql_fetch($sql)  // <<----------누락 됬습니당.
------------------------------------------------------
foreach ($result  as $row){

=====================================================

제가 사용하는 코드만 생각을 했기때문에.ㅠㅠ
$result = sql_fetch($sql)

요걸 넣는 순간 ....화면이 하얗게 되고...여전히

foreach ($result  as $row){  <-이 라인에서 에러가 난다고 나오네요..

에휴,,한번에 해결하면 좋을텐데..뮤죤님넘 미안합니다..
호호호 그러게요... 그렇다고 제가 쓰는 방식으로 할려면 쩝..봅잡해 지구..

안되면..  while  구문으로 돌리세요...  foreach  <<--- php5 에서만 작동되나 몰겠네요.

while  구문으로 바꺼서 해보세요..


^^ 유저님께서 완성 되세면 공개좀 부탁해용. ㅎㅎ 저도 덕좀 보게용.. ^^
$sub_sql = " select * from g4_member where mb_id = '$mb_id' ";
while ($data = sql_fetch_array($sub_sql))
{

$mb_level  = $data[mb_level];
$count  = '2';
$set_point  =  $mb_level*$count ;  // 레벨별 추가 20% 증대한다. 즉 3등급은 60% 추가지급
$point  = $point*$set_point;
}


에공 왜 안되징..
에러는 없어졌는데..포인트는 아무변화가 없네요..



http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=8261&page=

여기 소스를 이용하면 가능할까요? 라고 한번 생각해봤는데;;
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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