여분 필드 이용해서 댓글 작성시 포인트 차감

여분 필드 이용해서 댓글 작성시 포인트 차감

QA

여분 필드 이용해서 댓글 작성시 포인트 차감

본문

이전에 아래와 같이 질문글을 남겼었는데요

 

★★★ 이전글 ★★★

 

게시판 여분필드 wr_10 을 이용하여 해당 값 만큼 댓글을 쓰면

포인트를 차감 하고 싶어서 질문을 드렸었는데요

 

write_comment_update.php 에서

 


    // 포인트 부여
    insert_point($member['mb_id'], $board['bo_comment_point'], "{$board['bo_subject']} {$wr_id}-{$comment_id} 댓글쓰기", $bo_table, $comment_id, '댓글'); 

 

이 부분이 댓글을 쓸때 포인트 부여 하는 곳이라고 알려주셨는데요

if 를 사용해서 하면 된다고 하는데

어떻게 해야할지 몰라서 재 문의드립니다 ㅠㅠ

 

f12 로 소스 보기 하니 관리자 페이지에서 댓글 포인트 이름이

bo_comment_point 이부분이길래

 

단순하게 이 부분만 wr_10 으로 바꾸어 보았더니 전혀 적용이 되지않아

고민하다 다시 글을 남깁니다 ㅠㅠ

 

초보라서 조건문을 어떻게 하는지 모르겠어요...

비슷한 류의 답변내용이 있으면 어떻게 참고를 해보겠는데

포인트 관련 질문은 없어서요 ㅠㅠ

 

항상 대가없이 도움을 주시는

SIR 능력자 여러분! 감사합니다^^

 

★★★ 이전글 ★★★

 

 

 

스킨 게시판중에 아이콘샵 소스가 있어 이걸 응용해 보려합니다.

 

list.skin.php 부분


        <?php
        for ($i=0; $i<count($list); $i++) {
  $iconbuy_href = "iconbuy_update.php?bo_table=".$bo_table."&wr_id=".$list[$i]['wr_id'];
  
  $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], 22, 22);
  if($thumb['src']) {
   $img_content = "<div style='background-image: url(".$thumb['src'];
   $img_content .= "); background-repeat: no-repeat;
   background-position: 11px 11px; ";
   $img_content .= "height: 44px; width: 44px; border: 1px solid black;float:left; margin-right:4px;'> </div>";
  } else {
   $img_content = '';
  }
  
  if(get_session("iconbuy-".$bo_table."-".$list[$i]['wr_id']) == false) {
   $buybutton = "<a href={$iconbuy_href} class=btn_b01 onclick=\"return confirm('{$list[$i]['subject']} 아이콘을 구매하겠습니까?\n\n{$list[$i]['wr_1']}점의 포인트가 소모됩니다.');\">구매</a>";
  }
  else if(get_session("iconbuy-".$bo_table."-".$list[$i]['wr_id']) == true) {
   $buybutton = "<a href={$iconbuy_href} class=btn_b01 onclick=\"return confirm('{$list[$i]['subject']} 아이콘을 변경하겠습니까?');\">변경</a>";
  }
  
         ?>

 

bbs 폴더의 iconbuy_update.php 부분


<?php
include_once('./_common.php');
if (!$board['bo_table']) {
   alert('존재하지 않는 게시판입니다.', G5_URL);
}
if (!$bo_table) {
    $msg = "bo_table 값이 넘어오지 않았습니다.\\n\\nboard.php?bo_table=code 와 같은 방식으로 넘겨 주세요.";
    alert($msg);
}

if (isset($wr_id) && $wr_id) {
    // 글이 없을 경우 해당 게시판 목록으로 이동
    if (!$write['wr_id']) {
        $msg = '글이 존재하지 않습니다.\\n\\n글이 삭제되었거나 이동된 경우입니다.';
        alert($msg, './board.php?bo_table='.$bo_table);
    }
 
 if ($is_guest) {
  $msg = "비회원은 이 게시판에 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.";
  alert($msg, './login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr));
 }
}
$view = get_view($write, $board, $board_skin_path);
$mb_id = isset($_SESSION['ss_mb_id']) ? trim($_SESSION['ss_mb_id']) : '';
if(!$mb_id)
    alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');

//echo $view['wr_1'];echo "|"; 가격
//echo $view['wr_2'];echo "|"; 레벨
//echo $view['wr_3']; 수량
//echo $view['file'][0]['view'];
//echo $view['file'][0]['path'];
//echo $view['file'][0]['file'];
$iconfile = G5_DATA_PATH."/file/".$bo_table."/".$view['file'][0]['file'];
$iconsize = str_replace("byte", "", $view['file'][0]['size']);
//설정
$iconpoint_max = 9999999;
$iconlevel_max = 2;
$iconamount_max = 999999;
//파일 존재 검사
if($view['file'][0]['file'] == "") {
    alert('아이콘 파일을 업로드 해주셔야 합니다.');
}
//숫자 여부 검사
if(!is_numeric($view['wr_1'])) {
    alert('가격에는 올바른 숫자를 입력해야 합니다.');
}
if($view['wr_1'] < 1) {
 alert('가격에는 0 이상의 숫자를 입력해야 합니다.');
}
if($view['wr_1'] > $iconpoint_max) {
 alert('가격에는 '.$iconpoint_max.' 이하의 숫자를 입력해야 합니다.');
}
if(!is_numeric($view['wr_2'])) {
    alert('레벨에는 올바른 숫자를 입력해야 합니다.');
}
if($view['wr_2'] < 2) {
 alert('레벨에는 1 이상의 숫자를 입력해야 합니다.');
}
if($view['wr_2'] > $iconlevel_max) {
 alert('레벨에는 '.$iconlevel_max.' 이하의 숫자를 입력해야 합니다.');
}
if(!is_numeric($view['wr_3'])) {
    alert('수량에는 올바른 숫자를 입력해야 합니다.');
}
if($view['wr_3'] > $iconamount_max) {
 alert('수량에는 '.$iconamount_max.' 이하의 숫자를 입력해야 합니다.');
}
//숫자 변수 사용
$iconpoint = $view['wr_1'] * (-1);
$iconlevel = $view['wr_2'];
$iconamount = $view['wr_3'];
// 레벨 검사
if ($member[mb_level] < $iconlevel) {
 alert("현재 레벨(".$member[mb_level].")이 부족해서 아이콘 구입(".$iconlevel.")이 불가합니다."); 
}
// 수량 검사
if ($iconamount < 1) {
 alert("현재 수량이 부족해서 아이콘 구입이 불가합니다."); 
}
// 포인트 검사
if ($member[mb_point] + $iconpoint < 0) {
 alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 아이콘 구입(".number_format($iconpoint).")이 불가합니다.\\n\\n포인트를 모으신 후 다시 구입해 주십시오."); 
}
// 수량 차감, 포인트 차감
if(get_session("iconbuy-".$bo_table."-".$wr_id) == true) {
 insert_point($mb_id, $iconpoint, "아이콘구입 - " . cut_str($write[wr_subject], 40), $bo_table, $wr_id, "아이콘구입 - ".G5_SERVER_TIME);
 $msg_point = "아이콘 구입으로 ".$iconpoint." 포인트를 소모했습니다.";
 // 세션 추가
 set_session("iconbuy-".$bo_table."-".$wr_id, true); 
 
 $iconamount = $iconamount - 1;
 $sql = " update {$write_table}
    set  wr_3 = '{$iconamount}'
     where wr_id = '{$wr_id}' ";
 sql_query($sql);
}
else if(get_session("iconbuy-".$bo_table."-".$wr_id) == false) {
 insert_point($mb_id, $iconpoint, "아이콘구입 - " . cut_str($write[wr_subject], 40), $bo_table, $wr_id, "아이콘구입 - ".G5_SERVER_TIME);
 $msg_point = "아이콘 구입으로 ".$iconpoint." 포인트를 소모했습니다.";
 // 세션 추가
 set_session("iconbuy-".$bo_table."-".$wr_id, true); 
 
 $iconamount = $iconamount - 1;
 $sql = " update {$write_table}
    set  wr_3 = '{$iconamount}'
     where wr_id = '{$wr_id}' ";
 sql_query($sql);
}
// 아이콘 업로드
// 회원 아이콘
$mb_dir = G5_DATA_PATH.'/member/'.substr($mb_id,0,2);
// 아이콘 삭제
if (isset($_POST['del_mb_icon'])) {
    @unlink($mb_dir.'/'.$mb_id.'.gif');
}
$msg = "";
$mb_icon = '';
if(isset($iconfile)) {
    if (preg_match("/(\.gif)$/i", $view['file'][0]['file'])) {
        // 아이콘 용량이 설정값보다 이하만 업로드 가능
        if ($iconsize <= $config['cf_member_icon_size']) {
            @mkdir($mb_dir, G5_DIR_PERMISSION);
            @chmod($mb_dir, G5_DIR_PERMISSION);
            $dest_path = $mb_dir.'/'.$mb_id.'.gif';
            copy($iconfile, $dest_path);
            chmod($dest_path, G5_FILE_PERMISSION);
            if (file_exists($dest_path)) {
                //=================================================================\
                // 090714
                // gif 파일에 악성코드를 심어 업로드 하는 경우를 방지
                // 에러메세지는 출력하지 않는다.
                //-----------------------------------------------------------------
                $size = getimagesize($dest_path);
                if ($size[2] != 1) // gif 파일이 아니면 올라간 이미지를 삭제한다.
                    @unlink($dest_path);
                else
                // 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
                if ($size[0] > $config['cf_member_icon_width'] || $size[1] > $config['cf_member_icon_height'])
                    @unlink($dest_path);
                //=================================================================\
            }
        } else {
            $msg .= '회원아이콘을 '.number_format($config['cf_member_icon_size']).'바이트 이하로 업로드 해주십시오.';
        }
    } else {
        $msg .= $iconfile.'은(는) gif 파일이 아닙니다.';
    }
}
alert("회원아이콘을 구매, 변경했습니다.\\n\\n".$msg_point."\\n\\n변경된 아이콘은 마이 페이지에서 확인할 수 있습니다.\\n\\n(서버 상태에 따라서 변경이 늦어질 수 있습니다.)");

?>

 

 

list.skin.php 에서 구매 를 누르면 wr_1 에 설정된 포인트가 차감되는건데요

이걸 응용해서 댓글 작성시 wr_1 에 있는 포인트를 차감시킬수 있을까요?

 

위 소스엔 wr_1, wr_2, wr_3 이렇게 여분필드를 사용하는데

전 wr_1 번의 설정된 포인트 마이너스 값 만 필요해서 나머지 다 날려도 되는데요

복잡하다면 그냥 놔둬도 됩니다..

 

디자인도 힘들지만 프로그래밍은 더 힘드네요

 

일주일째 미치겠습니다 ㅠㅠ

제발 구원자가 나타나주길 바랍니다

 

오늘도 날이 아니면 그냥 GG치고

외주 의뢰나 해야겠습니다...

 

 

이 질문에 댓글 쓰기 :

답변 1

view_comment.skin.php 파일

<input type="hidden" name="is_good" value=""> 이거 밑에

<input type="hidden" name="wr_point" value="<?=$view['wr_10']?>"> 한 줄 추가하시고

write_comment_update.skin.php 이 파일을 생성하신 후에

<?

insert_point($member['mb_id'], $_POST['wr_point'], "{$board['bo_subject']} {$wr_id}-{$comment_id} 댓글쓰기", $bo_table, $comment_id, '댓글');

이렇게 추가해 보세요. 

안녕하세요 왕계란님.
예전에도 도움 주셨지만 이번에도 정말 감사합니다.

제가 질문에 남겼던 소스를 응용하여
구매 버튼에 서브밋까지 해서 댓글+포인트 증가까지 확인했습니다.
하지만 위 소스를 사용하면 뭔가 임시방편같구
뭔가 근본적인 해답을 찾지 못한것 같아서 고민하던차에

이렇게 귀한 답변을 보게되네요.

제일 편한게 소스를 알려달라 하면 편하지만
그렇게 되면 질문글이 아닌 의뢰글이 되어버리기에
질문과 의뢰의 경계선상에서
많이 답답했습니다.

여러분들께서 남겨주신 주옥같은 답변을
아직 php 이해도가 높지못하여 제대로 활용도 못했구요.

왕계란님께서 남겨주신 답변은
제가 원했던 그 이상입니다.

다시한번 감사드리구요
포인트와 댓글의 관계를
어느정도 이해한것같아 기쁘네요.


왕계란님을 비롯하여
항상 답변을 달아주시는 sir 능력자님.

모두 번창하시고
항상 행복이 깃들기를 기원합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 197
QA 내용 검색

회원로그인

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