아이디 당 댓글 1개만 등록....alert창 띄운 후 댓글이 생성되네요..
본문
아래...게시글(https://sir.kr/qa/254867) 에 jbsstyle 님이 답변 주신것을 참고해서..
수정하여
/skin/board/xxx/write_comment_udpate.skin.php
처리를 했는데요...
아래 코드는 모두 실행되어 아래 Alert 창까지 처리되었는데요.
댓글이 생성되네요...
알람창을 띄우고 작성한 댓글을 지워야 하나요?
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$mb_id = $member['mb_id'];
$sql = " select count(*) as count from $write_table
where wr_parent = '$wr_id'
and mb_id = '$mb_id' ";
$row = sql_fetch($sql);
//echo $sql; exit;
if ($row['count'] != "0" ) )
alert('댓글은 1개만 등록이 가능합니다.');
?>
답변 5
댓글을 1개씩만 달게 하고 싶으시면 로직을 만들어야 합니다.
위 소스는 댓글이 1개 이상 등록되었는지 확인만 하는 소스 이구요.
댓글이 1개 달렸으면 그 후부터는 댓글을 아예 못쓰게 해야하는 거구요.
그러면 한 사용자가 댓글을 2개 달 수 조차 없기 때문에 원하시는 서비스가 될 겁니다.
님은 이미 한사람 댓글이 2-3개 달린 상태에서 로직을 1개 이상 못단다고 하려고 하시는 거 같은데
그 경우 2-3개 달렸더라도 최초 한개만 보이게 해야겠죠.
전자가 정상 로직일텐데 당장의 상태를 바꿔 보시려고 하시니 다음과 같이 진행 해보세요.
위 로직은 그대로 쓰시구요.
write_comment_udpate.skin.php 파일 15라인쯤
$cmt_amt = count($list);
// 추가해주세요.
$comment_yn = false;
$mem_commet = array();
// 추가해주세요.
for ($i=0; $i<$cmt_amt; $i++) {
// 추가 해주세요.
if(!$comment_yn)
$member['mb_id'] == $list[$i]['mb_id'] ? $comment_yn=true : $comment_yn=false;
if($mem_commet[$list[$i]['mb_id']] == "")
$mem_commet[$list[$i]['mb_id']] = 1;
else
continue;
// 추가 해주세요.
이후 1번 이상 댓글 단사람은 아예 댓글 다는 창을 없애 줍니다.
대충 317라인 쯤
// 추가해주세요.
<?php if(!$comment_yn){?>
comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)
<?php }?>
// 추가해주세요
이경우 댓글에 답변도 댓글을 단사람은 막야야 겠죠. 댓글에 답변도 댓글로 인식하니까요.
대충 80라인 쯤
<ul class="bo_vc_act">
<?php if(!$comment_yn){?>
<?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;" class="btn_b03">답변</a></li><?php } ?>
<?php }?>
댓글이 DB로 등록되어 생성된게 아닌듯 하고 스크립트 상에서 보여지는 부분이 아닌지 싶은데
그게 아니라면 수정페이지에서 insert 부분으로 처리되는 부분을 체크해 보셔야 할듯 싶습니다.
if ($row['count'] != "0" ) )
alert('댓글은 1개만 등록이 가능합니다.');
==>
if ($row['count'] != "0"){
alert('댓글은 1개만 등록이 가능합니다.');
exit;
}
해당 소스를 write_comment_update.head.skin.php' 로 해보세요 글 올라가기 전에 체크합니다.
bbs 폴더에 보시면 write_comment_update.php 코멘트 업로드 하고나서 스킨 폴더에 write_comment_update.skin.php 가 출력됩니다. 그러니간 디비저장후에 출력됩니다.
스킨폴더에 write_comment_update.head.skin.php 파일에 적용하시고 없으시면 파일을 만들어서 올리시면 될것같아요^^
bbs 폴더에 보시면 write_comment_update.php 에 마지막부분 내용입니다.
$sql = " update $write_table
set wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10',
wr_option = '$wr_option'
$sql_ip
$sql_secret
where wr_id = '$comment_id' ";
sql_query($sql);
}
// 사용자 코드 실행
@include_once($board_skin_path.'/write_comment_update.skin.php');
@include_once($board_skin_path.'/write_comment_update.tail.skin.php');
delete_cache_latest($bo_table);