추천 비추천 여분필드에 있는 포인트 지급 차감 관련 문의

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
추천 비추천 여분필드에 있는 포인트 지급 차감 관련 문의

QA

추천 비추천 여분필드에 있는 포인트 지급 차감 관련 문의

본문

$is_success = false;
$ss_times = (int)$boset['na_gtimes']; // 횟수
$ss_name = 'ss_good_'.$bo_table.'_'.$wr_id; // 세션

if ($good == 'good' || $good == 'nogood') {

    if($write['mb_id'] == $member['mb_id']) {
        $error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
        print_result($error, $success, $count);
    }

    if (!$board['bo_use_good'] && $good == 'good') {
        $error = '이 게시판은 추천 기능을 사용하지 않습니다.';
        print_result($error, $success, $count);
    }

    if (!$board['bo_use_nogood'] && $good == 'nogood') {
        $error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
        print_result($error, $success, $count);
    }

    $sql = " select bg_id, bg_flag, bg_datetime from {$g5['board_good_table']}
                where bo_table = '{$bo_table}'
                and wr_id = '{$wr_id}'
                and mb_id = '{$member['mb_id']}'
                and bg_flag in ('good', 'nogood') ";
    $row = sql_fetch($sql);
    if ($row['bg_flag']) {

        $good = $row['bg_flag'];

        if ($good == 'good')
            $status = '추천';
        else
            $status = '비추천';

        // 취소체크
        $cancel_sec = (int)$boset['na_gcancel'];
        if($cancel_sec > 0 && G5_SERVER_TIME < (strtotime($row['bg_datetime']) + $cancel_sec)) {
            if($ss_times > 0) {
                $times = get_session($ss_name);
                if($times) {
                    if($ss_times > $times) {
                        set_session($ss_name, $times + 1);
                    } else {
                        $error = "더이상 취소할 수 없습니다.";
                        print_result($error, $success, $count);
                    }
                } else {
                    set_session($ss_name, 1);
                }
            }
            
            // 내역 삭제
            sql_query(" delete from {$g5['board_good_table']} where bg_id = '{$row['bg_id']}' ");

            // 추천(찬성), 비추천(반대) 카운트 감소
            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");

            $count = $write['wr_'.$good] - 1;
            $success = "$status 취소를 하셨습니다.";
            
        // 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
        if ($good == "nogood")    {        
        insert_point($write['mb_id'], '2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
        }        
        if ($good == "good") {         
        insert_point($write['mb_id'], '-2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'추천 취소');
        }

        
        } else {
            $error = "이미 $status 하셨습니다.";
        }

        print_result($error, $success, $count);

    } else{

        // 추천(찬성), 비추천(반대) 카운트 증가
        sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
    
        // 추천(찬성), 비추천(반대) 취소에 따른 포인트 적립
        if ($good == "nogood")    {        
        insert_point($write['mb_id'], '-2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천');
        }        
        if ($good == "good") {         
        insert_point($write['mb_id'], '2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 추천했습니다.", $bo_table, $wr_id, $member['mb_id'].'추천');
        }
        
        // 내역 생성
        sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");

        $sql = " select wr_{$good} as count from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
        $row = sql_fetch($sql);

        $count = $row['count'];

        if ($good == 'good')
            $status = '추천';
        else
            $status = '비추천';

        if($opt) {
            run_event('comment_increase_good_json', $bo_table, $wr_id, $good);
        } else {
            run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
        }

        $is_success = true;
    }
}

 

위 추천 비추천 시 포인트 지급 및 차감이 되는데,   포인트 지급 차감을 게시판 wr_18  여분필드 값을 차감되게 하려고 하는데 포인트 부분에 어떻게 넣어야 할까요?

이 질문에 댓글 쓰기 :

답변 2

예를 들어 다음과 같이 해볼 수 있을 것 같습니다.

포인트를 wr_18에 저장하는 부분을 추가


// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {        
    // 비추천을 취소할 경우 포인트를 반환합니다.
    // 여기서 '-2'는 포인트를 차감하는 양입니다. 적절한 값을 사용해주세요.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 - 2 where wr_id = '{$wr_id}' ");
    // 이하 포인트 취소 로직
}
if ($good == "good") {         
    // 추천을 취소할 경우 포인트를 반환합니다.
    // 여기서 '2'는 포인트를 지급하는 양입니다. 적절한 값을 사용해주세요.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 + 2 where wr_id = '{$wr_id}' ");
    // 이하 포인트 취소 로직
}

아~ 제가 문의를 잘못 한거 같네요... 게시판에 글을 작성하고 관리자가 수정을 해서 wr_18에 저장을 할 수 있게 하고 있습니다 그래서 비추천을 눌렀을 때 위에 내용은 -2 포인트가 차감이 되는데 관리자가  wr_18에 넣었을 때 비추천 눌렀을 때 그 수치만큼 글작성자 포인트가 차감 되게 하려고 합니다

예를 들어 다음과 같이 해볼 수 있을 것 같습니다


// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {        
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = 0 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {
        // 여기서 '-2' 대신 포인트 차감하는 양을 $point_to_deduct로 설정합니다.
        insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
    }
    // 이하 포인트 취소 로직
}

와우 아주 잘 되네요. 알려주신 코드 보면서 공부도 많이 됐네요^^ 완전감사합니다  wr_18 비추천해서 차감되면 0으로 초기화가 되서 wr_18로 하니 관리자가 입력해 놓은 수치대로 남아 있네요^^ 아 그런데 혹시 글 작성자 포인트가  wr_18 차감될 수치보다 작으면 포인트가 부족합니다. 라는 메세지가 뜨고, 포인트 차감은 안되게 할 수 있나요? 현재는 -포인트로 되어서요~ 그렇게도 가능할까요?

다음과 같이 해보시는건 어떨까 합니다.


// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {        
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = 0 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {
        // 글 작성자의 현재 포인트를 가져옵니다.
        $writer_points = get_point($write['mb_id']);
        if ($writer_points >= $point_to_deduct) {
            // 포인트가 충분한 경우에만 차감하도록 합니다.
            insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
        } else {
            // 포인트가 부족한 경우 메시지를 표시합니다.
            $error = "포인트가 부족합니다.";
            print_result($error, $success, $count);
            exit; // 포인트가 부족하면 더 이상의 처리를 하지 않고 종료합니다.
        }
    }
    // 이하 포인트 취소 로직
}

// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {       
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {
        // 여기서 '-2' 대신 포인트 차감하는 양을 $point_to_deduct로 설정합니다.
        insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
    }
    // 이하 포인트 취소 로직
}

} else {
$error = "이미 $status 하셨습니다.";
}

print_result($error, $success, $count);

} else{

// 추천(찬성), 비추천(반대) 카운트 증가
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");

위부분에서

// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {       
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = 0 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {
        // 글 작성자의 현재 포인트를 가져옵니다.
        $writer_points = get_point($write['mb_id']);
        if ($writer_points >= $point_to_deduct) {
            // 포인트가 충분한 경우에만 차감하도록 합니다.
            insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
        } else {
            // 포인트가 부족한 경우 메시지를 표시합니다.
            $error = "포인트가 부족합니다.";
            print_result($error, $success, $count);
            exit; // 포인트가 부족하면 더 이상의 처리를 하지 않고 종료합니다.
        }
    }
    // 이하 포인트 취소 로직
}
} else{

// 추천(찬성), 비추천(반대) 카운트 증가
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");

이렇게 변경 되는게 맞을까요?? 여러가지 방법을 해 봤는데, 포인트가 차감이 되지 않아서요~

첫번째 답변을 참고하셔서 추가된 부분을 적용하시면 됩니다.
그러면 wr_18에 저장된 포인트가 부족할 경우 에러메세지를 띄우면서 포인트 차감이 되지 않습니다

// 추천(찬성), 비추천(반대) 취소에 따른 포인트 적립
if ($good == "nogood") {       
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {

  // 글 작성자의 현재 포인트를 가져옵니다.
        $writer_points = get_point($write['mb_id']);
        if ($writer_points >= $point_to_deduct) {

        // 여기서 '-2' 대신 포인트 차감하는 양을 $point_to_deduct로 설정합니다.
        insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
 
 } else {
            // 포인트가 부족한 경우 메시지를 표시합니다.
            $error = "포인트가 부족합니다.";
            print_result($error, $success, $count);
            exit; // 포인트가 부족하면 더 이상의 처리를 하지 않고 종료합니다.
        }
    }
    // 이하 포인트 취소 로직
}

알려주신 코드를 적용해 보았는데, 비추천을 누르면 숫자는 올라가고  작성자 포인트가 얼마나 있는지는 관계 없이 포인트 차감은 되지 않네요.ㅠㅠ 혹시 윗 부분이 무엇인가 잘못 넣었을까요?

다시 수정해 봤습니다. 참고해 보세요


if ($good == "nogood") {
    // 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
    // $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
    $point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
    sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 where wr_id = '{$wr_id}' "); // wr_18 초기화
    if ($point_to_deduct > 0) {
        // 글 작성자의 현재 포인트를 가져옵니다.
        $writer_points = get_point($write['mb_id']);
        if ($writer_points >= $point_to_deduct) {
            // 포인트 차감
            insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
        } else {
            // 포인트가 부족한 경우 메시지를 표시합니다.
            $error = "포인트가 부족합니다.";
            print_result($error, $success, $count);
            exit; // 포인트가 부족하면 더 이상의 처리를 하지 않고 종료합니다.
        }
    }
    // 이하 포인트 취소 로직
}
답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

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