같은이름의 포인트를 계속 지급해야 할 경우, 포인트 내역 줄이기 > 그누4 팁자료실

그누4 팁자료실

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

같은이름의 포인트를 계속 지급해야 할 경우, 포인트 내역 줄이기 정보

같은이름의 포인트를 계속 지급해야 할 경우, 포인트 내역 줄이기

본문

lib/common.lib 파일에 중간어느쯤 "// 포인트 삭제 " 아래에 두시면 됩니다.

insert_point() 를 응용해서 만들었구요
insert_auto_sum_point() 명령어로 사용하심 됩니다.

같은내용의 포인트를 계속 지급해 줘야 할경우, 포인트 내역이 장난아니게 늘어나는데

자동포인트 증가하면 같은 이름의 포인트는 한번만 지급되고 포인트만 증가하게 됩니다.

update 하는것이 아니라 delete 한다음 다시 insert 하므로 po_id도 계속증가하니

포인트 내역보기에서도 상단에 위치하게 됩니다.

포인트 내역이 없어서 안타깝다 하시는 분들은 "깜찍한악마" 님이 올리신 캐시시스템(글 하단 참조)을 응용해서 또다른 포인트(캐시) 시스템을 하나더 만들어 쿼리를 두번 날려주심 되겠슴다. ^^;;

// 자동증가포인트
function insert_auto_sum_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $amount='', $yesno='', $mb_idx='' )
{
    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 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' ";
  $row = sql_fetch($sql);
  $data = sql_fetch(" select * from $g4[point_table] where mb_id = '$mb_id' and po_rel_table = '$rel_table' and po_rel_id = '$rel_id' ");

  // 적립된 내역이 없다면 생성
  if(!$row[cnt] || $row[cnt] == "0")
  {
  // 포인트 건별 생성
   $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;
  }
  
  //적립된 내역이 있다면 증가(수정)
  else if($row[cnt] >= "1")
  {
  //
   sql_query (" delete from $g4[point_table]
       where mb_id = '$mb_id'
       and  po_rel_table = '$rel_table'
       and  po_rel_id = '$rel_id' ");

   sql_query (" insert into $g4[point_table]
                    set mb_id = '$mb_id',
                       po_datetime = '$g4[time_ymdhis]',
                       po_content = '".addslashes($content)."',
                       po_point = $data[po_point] + $point,
                       po_rel_table = '$rel_table',
                       po_rel_id = '$rel_id',
                       po_rel_action = '$rel_action' ");

   // 포인트 내역의 합을 구하고
   $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;
  }
    }
}


깜찍한 악마님의 캐시시스템 : http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=19762&sca=&sfl=wr_subject&stx=%C4%B3%BD%C3&sop=and

추천
0

댓글 0개

전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

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