테스트 사이트 - 개발 중인 베타 버전입니다

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

배정태 3년 전 조회 5,535

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

 

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

 

</p>

<p><?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>run_event('bbs_good_before', $bo_table, $wr_id, $good);</p>

<p> </p>

<p>@include_once($board_skin_path.'/good.head.skin.php');</p>

<p> </p>

<p>// 자바스크립트 사용가능할 때</p>

<p>if(isset($_POST['js']) && $_POST['js'] === "on") {</p>

<p>    $error = $count = "";</p>

<p> </p>

<p>    function print_result($error, $count, $msg='')</p>

<p>    {</p>

<p>    echo '{ "error": "' . $error . '", "count": "' . $count . '", "msg": "'.$msg.'" }';</p>

<p>        if($error)</p>

<p>    exit;</p>

<p>    }</p>

<p>   </p>

<p> </p>

<p>    if (!$is_member)</p>

<p>    {</p>

<p>        $error = '회원만 가능합니다.';</p>

<p>        print_result($error, $count);</p>

<p>    }</p>

<p> </p>

<p>    if (!($bo_table && $wr_id)) {</p>

<p>        $error = '값이 제대로 넘어오지 않았습니다.';</p>

<p>        print_result($error, $count);</p>

<p>    }</p>

<p> </p>

<p>    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;</p>

<p>    if (!get_session($ss_name)) {</p>

<p>        $error = '해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.';</p>

<p>        print_result($error, $count);</p>

<p>    }</p>

<p> </p>

<p>    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);</p>

<p>    if (!$row['cnt']) {</p>

<p>        $error = '존재하는 게시판이 아닙니다.';</p>

<p>        print_result($error, $count);</p>

<p>    }</p>

<p> </p>

<p>    if ($good == 'good' || $good == 'nogood')</p>

<p>    {</p>

<p>        if($write['mb_id'] == $member['mb_id']) {</p>

<p>            $error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';</p>

<p>            print_result($error, $count);</p>

<p>        }</p>

<p> </p>

<p>        if (!$board['bo_use_good'] && $good == 'good') {</p>

<p>            $error = '이 게시판은 추천 기능을 사용하지 않습니다.';</p>

<p>            print_result($error, $count);</p>

<p>        }</p>

<p> </p>

<p>        if (!$board['bo_use_nogood'] && $good == 'nogood') {</p>

<p>            $error = '이 게시판은 비추천 기능을 사용하지 않습니다.';</p>

<p>            print_result($error, $count);</p>

<p>        }</p>

<p> </p>

<p>        $sql= " select bg_id,bg_flag,bg_datetime from {$g5['board_good_table']}</p>

<p>        where bo_table = '{$bo_table}'</p>

<p>        and wr_id = '{$wr_id}'</p>

<p>        and mb_id = '{$member['mb_id']}'</p>

<p>        and bg_flag in ('good', 'nogood') ";</p>

<p>        $row = sql_fetch($sql);</p>

<p>        if ($row['bg_id'])</p>

<p>        if($good != $row['bg_flag']){</p>

<p>            if ($row['bg_flag'] == 'good')</p>

<p>             $status = '추천';</p>

<p>            else</p>

<p>             $status = '비추천';</p>

<p>           </p>

<p>            $error = "이미 $status 하신 글 입니다.";</p>

<p>            print_result($error, $count);</p>

<p>           }else{</p>

<p>             // 추천(찬성), 비추천(반대) 카운트 감소</p>

<p>             sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");</p>

<p>             // 내역 삭제</p>

<p>             sql_query(" delete from {$g5['board_good_table']} where bg_id = '".$row['bg_id']."' ");</p>

<p>           </p>

<p>             $sql = " select wr_good,wr_nogood from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";</p>

<p>             $row = sql_fetch($sql);</p>

<p>           </p>

<p>             $count = $row['wr_'.$good];</p>

<p>           </p>

<p>             run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);</p>

<p>             </p>

<p>             if ($good == 'good')</p>

<p>             $status = '추천';</p>

<p>            else</p>

<p>             $status = '비추천';</p>

<p>           </p>

<p>            $msg = "이 글을 $status 하셨습니다.";</p>

<p>            print_result($error, $count, $msg);</p>

<p>            }</p>

<p>           }</p>

<p>} else {</p>

<p>    include_once(G5_PATH.'/head.sub.php');</p>

<p> </p>

<p>    if (!$is_member)</p>

<p>    {</p>

<p>        $href = G5_BBS_URL.'/login.php?'.$qstr.'&amp;url='.urlencode(get_pretty_url($bo_table, $wr_id));</p>

<p> </p>

<p>        alert('회원만 가능합니다.', $href);</p>

<p>    }</p>

<p> </p>

<p>    if (!($bo_table && $wr_id))</p>

<p>        alert('값이 제대로 넘어오지 않았습니다.');</p>

<p> </p>

<p>    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;</p>

<p>    if (!get_session($ss_name))</p>

<p>        alert('해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.');</p>

<p> </p>

<p>    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);</p>

<p>    if (!$row['cnt'])</p>

<p>        alert('존재하는 게시판이 아닙니다.');</p>

<p> </p>

<p>    if ($good == 'good' || $good == 'nogood')</p>

<p>    {</p>

<p>        if($write['mb_id'] == $member['mb_id'])</p>

<p>            alert('자신의 글에는 추천 또는 비추천 하실 수 없습니다.');</p>

<p> </p>

<p>        if (!$board['bo_use_good'] && $good == 'good')</p>

<p>            alert('이 게시판은 추천 기능을 사용하지 않습니다.');</p>

<p> </p>

<p>        if (!$board['bo_use_nogood'] && $good == 'nogood')</p>

<p>            alert('이 게시판은 비추천 기능을 사용하지 않습니다.');</p>

<p> </p>

<p>            $sql = " select bg_id,bg_flag,bg_datetime from {$g5['board_good_table']}</p>

<p>            where bo_table = '{$bo_table}'</p>

<p>            and wr_id = '{$wr_id}'</p>

<p>            and mb_id = '{$member['mb_id']}'</p>

<p>            and bg_flag in ('good', 'nogood') ";</p>

<p>$row = sql_fetch($sql);</p>

<p> </p>

<p>if ($row['bg_id'])</p>

<p>{</p>

<p>    if($good != $row['bg_flag'])</p>

<p>    {</p>

<p>        if ($row['bg_flag'] == 'good')</p>

<p>            $status = '추천';</p>

<p>        else</p>

<p>            $status = '비추천';</p>

<p> </p>

<p>        $msg = "이미 $status 하신 글 입니다.";</p>

<p>        alert($msg, '', false);</p>

<p>    }</p>

<p>    else</p>

<p>    {</p>

<p>       </p>

<p>            // 추천(찬성), 비추천(반대) 카운트 감소</p>

<p>            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");</p>

<p>            // 내역 삭제</p>

<p>            sql_query(" delete from {$g5['board_good_table']} where bg_id = '" . $row['bg_id'] . "' ");</p>

<p> </p>

<p>            $sql = " select wr_good,wr_nogood from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";</p>

<p>            $row = sql_fetch($sql);</p>

<p> </p>

<p>            $count = $row['wr_' . $good];</p>

<p> </p>

<p>            if ($good == 'good')</p>

<p>                $status = '추천';</p>

<p>            else</p>

<p>                $status = '비추천';</p>

<p> </p>

<p>            $href = get_pretty_url($bo_table, $wr_id);</p>

<p> </p>

<p>            run_event('bbs_increase_good_html', $bo_table, $wr_id, $good, $href);</p>

<p> </p>

<p>            $msg = $status . "이 취소되었습니다.";</p>

<p>            alert($msg, '', false);</p>

<p>            }</p>

<p>        }</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>run_event('bbs_good_after', $bo_table, $wr_id, $good);</p>

<p> </p>

<p>@include_once($board_skin_path.'/good.tail.skin.php');</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
Policia
3년 전

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

P
Policia
3년 전
팁내용도 수정해두었습니다
배정태
3년 전
아닙니다 팁 자료는 너무 설명을 잘 해주셨는데 제가 잘못한거 같네요 한번 확인해보고 안되는 부분이 있으면 또 질문을 드려도 될까요?
배정태
3년 전
혹시
[code]
$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);
}
}
}
[/code]

이런식으로 바꾸시라고 말씀하신게 맞는지 확인 가능하신가요?
배정태
3년 전
설명해주신대로 해서 잘 됩니다 정말 감사합니다 !!
P
Policia
3년 전
if ($row['bg_id']) 문 {}이 없는것 같은데 그것만 추가해주시면 될것같네요

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
3년 전

배추베이직 게시판에 추천 취소 기능 내장되어 있으니 참고해 보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

복스리
3년 전

소스만을 보고 판단하기에는 어려운부분이 있네요. 

좋아요 클릭시 데이터이스에 update가 잘되는지 값을 확인해보시면 될꺼 같은데요.!!

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인