좋아요 취소 기능에 대한 질문입니다!!
본문
제가 좋아요 취소 버튼을 만들고 싶어서 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되는 부분(추천부분)은 그대로 두셔야합니다
소스만을 보고 판단하기에는 어려운부분이 있네요.
좋아요 클릭시 데이터이스에 update가 잘되는지 값을 확인해보시면 될꺼 같은데요.!!
배추베이직 게시판에 추천 취소 기능 내장되어 있으니 참고해 보세요.
답변을 작성하시기 전에 로그인 해주세요.