[Q] 게시물 글 포인트 지정및 삭감 방법은 ? > 그누4 질문답변

그누4 질문답변

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

[Q] 게시물 글 포인트 지정및 삭감 방법은 ? 정보

[Q] 게시물 글 포인트 지정및 삭감 방법은 ?

본문

* write에서 입력박스로 글쓰기 () 포인트 지정하기 (DB는 wr_2 사용해야 겠지요;;)

- 포인트값은 member[mb_point] 에서, 자신의 보유 포인트의 0.1~10%로 지정해야함.
예) 현재 100,000점을 보유하고 있다면,
포인트값 최소 100~10,000점 범위 에서 지정해야함.

- 아래와 같이 글작성시 나타내어야함.
(    ) 포인트 - 현재 100,000점 보유 / 100(0.1%) ~ 10,000(10%) 범위에서 지정 가능
(    ) 포인트 - 현재 ""점 보유 / ""(""%) ~ ""(""%) 범위에서 지정 가능

+ 포인트 단위는 100점 단위로 입력 해야됩니다

* view에서는

- 자신의 글을 볼때엔 포인트 삭감 안되어야함.

- 상대방이 글을 볼때엔 보유포인트에서 위의글 포인트 착감되는 메시지를 나타내어야함.
예) "현재 25,000점 에서 5,000점 착감 되었습니다 (20,000점 남았습니다)"
"현재 ''점 에서 ''점 착감 되었습니다 (''점 남았습니다)"

- 만일 포인트가 모자 랐을겨우엔
예) "현재 4,500점 에서 500점 모자랍니다 글,볼수가 없습니다."
"현재 ''점 에서 ''점 모자랍니다 글,볼수가 없습니다."




* 착감된 포인트는 글쓴이의 포인트에 적립 되어야 합니다.

댓글 전체

기본 구조는 그누의 포인트 정책하고 다르지 않은데,
소진해야 할 포인트가 게시판별로 책정되는 것이 아니라, 글별로 회원이 설정하는 건가요?

쓰기스킨에서 설정하고, 읽기스킨에서 체크하는 방식이면 되지 않을까요?
쓰기스킨에서 포인트 설정하는 방법은, (select 만들어서) 읽기레벨 책정하는 방법을 활용하시면 될테이고,
읽기스킨의 글읽는 방법은,  bbs/board.php  141-145 줄을 참조해 보세요. ^^
지난번 레벨 설정하던 코드에서 좀 바꿔봤어요.. ^^

<?
$min_pct = 0.001;  // 0.1%
$max_pct = 0.1;  // 10%
$step = 100;        // 100 단위로 점프
echo $member['mb_point']*$min_pct." -- ".$member['mb_point']*$max_pct."<br/>";
if($member['mb_point']*$max_pct < $step) { echo "포인트가 부족합니다.<br/>"; }
else {
  echo "<select name='wr_2'>";
  for ( $i=max($step, (int)($member['mb_point']*$min_pct/100)*100); $i<= ($member['mb_point']*$max_pct); $i=$i+$step ) {
    echo "<option value='$i'>$i</option>";
  }
  echo "</select>";
}
?>
테스트 해보니 되긴 하는데, 점수가 큰 경우, select 의 옵션 수에 한계가 있어서 작동안 할 수 있습니다..

글읽을때 포인트 체크하고 포인트 차감하는 것은

if ($view['mb_id'] != $member['mb_id']) {    // 자신이 쓴 글이 아니고
  if ($view['wr_2'] && $member['mb_point'] - $view['wr_2'] < 0) { // 포인트가 모자라면
    alert("현재 ".number_format($member[mb_point])." 점 에서 ".number_format($view['wr_2']-$member['mb_point'])." 점 모자라서 글을 볼수가 없습니다.");
  } else {
    echo "<script type='text/javascript'>";
    echo "alert('"현재 ".number_format($member[mb_point])." 점 에서 ".number_format($view['wr_2'])." 점 착감 되었습니다 (".number_format($member[mb_point]-$view['wr_2'])."점 남았습니다)")';
    echo "</script>";

    insert_point($member['mb_id'], $view['wr_2'], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
  }
}

포인트 체크하는 것은 테스트 해보지는 못했네요.. ^^;
혹시 나중에 참조하실 분이 있을까봐, 글읽을때 포인트 차감하는 부분 오류고친것을 올립니다.
아, 그리고, 운영자는 제외된 조건 포함입니다.

if (!$is_admin && $view['mb_id'] != $member['mb_id']) {    // 운영자아니고, 자신이 쓴 글도 아니면
  if ($view['wr_2'] && $member['mb_point'] - $view['wr_2'] < 0) { // 포인트가 모자라면
    alert("현재 ".number_format($member[mb_point])." 점 에서 ".number_format($view['wr_2']-$member['mb_point'])." 점 모자라서 글을 볼수가 없습니다.");
  } else {
    if ($view['wr_2']>0) {
      // 차감하는 방식에 따라서 아래 세가지 중 하나 선택
      $action = "읽기 사용자포인트 차감";  // 한번만 포인트 차감 적용..
      // $action = "읽기 사용자포인트 차감 ".$g4[time_ymd];  //  하루에 한번만 적용
      // $action = "읽기 사용자포인트 차감 ".$g4[time_ymdhis];  // (이론상으로) 매번 적용     
      $return = insert_point($member['mb_id'], -1*$view['wr_2'], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, $action);

      if ($return>0) {
        echo "<script type='text/javascript'>";
        echo "alert('현재 ".number_format($member['mb_point'])." 점 에서 ".number_format($view['wr_2'])." 점 착감 되었습니다 (".number_format($member[mb_point]-$view['wr_2'])." 점 남았습니다)')";
        echo "</script>";
      }
    }
  }
}
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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