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

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

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);
        }
    }
}


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

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

회원로그인

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