좋아요 취소 기능에 대한 질문입니다!!

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
좋아요 취소 기능에 대한 질문입니다!!

QA

좋아요 취소 기능에 대한 질문입니다!!

본문

제가 좋아요 취소 버튼을 만들고 싶어서 https://sir.kr/g5_tip/13384 분의 글을 보고 따라했는데

 

취소는 되는데 다시 좋아요를 클릭하면 클릭이 되질 않습니다 혹시 조언이나 어디를 만지면 된다는 말씀해주실수 있을까요

 


<?php
include_once('./_common.php');
 
run_event('bbs_good_before', $bo_table, $wr_id, $good);
 
@include_once($board_skin_path.'/good.head.skin.php');
 
// 자바스크립트 사용가능할 때
if(isset($_POST['js']) && $_POST['js'] === "on") {
    $error = $count = "";
 
    function print_result($error, $count, $msg='')
    {
    echo '{ "error": "' . $error . '", "count": "' . $count . '", "msg": "'.$msg.'" }';
        if($error)
    exit;
    }
   
 
    if (!$is_member)
    {
        $error = '회원만 가능합니다.';
        print_result($error, $count);
    }
 
    if (!($bo_table && $wr_id)) {
        $error = '값이 제대로 넘어오지 않았습니다.';
        print_result($error, $count);
    }
 
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name)) {
        $error = '해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.';
        print_result($error, $count);
    }
 
    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
    if (!$row['cnt']) {
        $error = '존재하는 게시판이 아닙니다.';
        print_result($error, $count);
    }
 
    if ($good == 'good' || $good == 'nogood')
    {
        if($write['mb_id'] == $member['mb_id']) {
            $error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
            print_result($error, $count);
        }
 
        if (!$board['bo_use_good'] && $good == 'good') {
            $error = '이 게시판은 추천 기능을 사용하지 않습니다.';
            print_result($error, $count);
        }
 
        if (!$board['bo_use_nogood'] && $good == 'nogood') {
            $error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
            print_result($error, $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_id'])
        if($good != $row['bg_flag']){
            if ($row['bg_flag'] == 'good')
             $status = '추천';
            else
             $status = '비추천';
           
            $error = "이미 $status 하신 글 입니다.";
            print_result($error, $count);
           }else{
             // 추천(찬성), 비추천(반대) 카운트 감소
             sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");
             // 내역 삭제
             sql_query(" delete from {$g5['board_good_table']} where bg_id = '".$row['bg_id']."' ");
           
             $sql = " select wr_good,wr_nogood from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
             $row = sql_fetch($sql);
           
             $count = $row['wr_'.$good];
           
             run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
             
             if ($good == 'good')
             $status = '추천';
            else
             $status = '비추천';
           
            $msg = "이 글을 $status 하셨습니다.";
            print_result($error, $count, $msg);
            }
           }
} else {
    include_once(G5_PATH.'/head.sub.php');
 
    if (!$is_member)
    {
        $href = G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id));
 
        alert('회원만 가능합니다.', $href);
    }
 
    if (!($bo_table && $wr_id))
        alert('값이 제대로 넘어오지 않았습니다.');
 
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name))
        alert('해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.');
 
    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
    if (!$row['cnt'])
        alert('존재하는 게시판이 아닙니다.');
 
    if ($good == 'good' || $good == 'nogood')
    {
        if($write['mb_id'] == $member['mb_id'])
            alert('자신의 글에는 추천 또는 비추천 하실 수 없습니다.');
 
        if (!$board['bo_use_good'] && $good == 'good')
            alert('이 게시판은 추천 기능을 사용하지 않습니다.');
 
        if (!$board['bo_use_nogood'] && $good == 'nogood')
            alert('이 게시판은 비추천 기능을 사용하지 않습니다.');
 
            $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_id'])
{
    if($good != $row['bg_flag'])
    {
        if ($row['bg_flag'] == 'good')
            $status = '추천';
        else
            $status = '비추천';
 
        $msg = "이미 $status 하신 글 입니다.";
        alert($msg, '', false);
    }
    else
    {
       
            // 추천(찬성), 비추천(반대) 카운트 감소
            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");
            // 내역 삭제
            sql_query(" delete from {$g5['board_good_table']} where bg_id = '" . $row['bg_id'] . "' ");
 
            $sql = " select wr_good,wr_nogood from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
            $row = sql_fetch($sql);
 
            $count = $row['wr_' . $good];
 
            if ($good == 'good')
                $status = '추천';
            else
                $status = '비추천';
 
            $href = get_pretty_url($bo_table, $wr_id);
 
            run_event('bbs_increase_good_html', $bo_table, $wr_id, $good, $href);
 
            $msg = $status . "이 취소되었습니다.";
            alert($msg, '', false);
            }
        }
    }
}
 
run_event('bbs_good_after', $bo_table, $wr_id, $good);
 
@include_once($board_skin_path.'/good.tail.skin.php');

이 질문에 댓글 쓰기 :

답변 3

if문 모두 변경부분에서 제가 설명이 조금 부족했나보네요
아래 else문은 그대로 두어야합니다

bg_id와 bg_datetime을 들고오는 시점에서 아래부분에 if ($row['bg_flag']) > if ($row['bg_id']) 이런식으로 if문 조건이 변경된게 보이실겁니다
제가 말한 if문 내용 모두 변경은 기존 if ($row['bg_flag']) 이 조건안에 들어있던 내용모두 변경이지 여기 조건에서 else되는 부분(추천부분)은 그대로 두셔야합니다

혹시


        $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_id'])

        if($good != $row['bg_flag']){
            if ($row['bg_flag'] == 'good')
             $status = '추천';
            else
             $status = '비추천';
           
            $error = "이미 $status 하신 글 입니다.";
            print_result($error, $count);
           }else{
            $timestamp = strtotime($row['bg_datetime']." +5 minutes");
            if($timestamp < strtotime(G5_TIME_YMDHIS)){
             $msg = "취소는 5분이내에만 가능합니다.";
             print_result($error, $count, $msg);
            }else{
             // 추천(찬성), 비추천(반대) 카운트 감소
             sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");
             // 내역 삭제
             sql_query(" delete from {$g5['board_good_table']} where bg_id = '".$row['bg_id']."' ");
           
             $sql = " select wr_good,wr_nogood from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
             $row = sql_fetch($sql);
           
             $count = $row['wr_'.$good];
           
             run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
           
             if ($good == 'good')
              $status = '추천';
             else
              $status = '비추천';
           
             $msg = $status."이 취소되었습니다.";
             print_result($error, $count, $msg);
            }
           }
           
        else
        {
            // 추천(찬성), 비추천(반대) 카운트 증가
            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_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'];
			
			run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);

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


이런식으로 바꾸시라고 말씀하신게 맞는지 확인 가능하신가요?

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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