댓글 1회 입력시 더이상 입력 불가능하게 만들었습니다.

댓글 1회 입력시 더이상 입력 불가능하게 만들었습니다.

QA

댓글 1회 입력시 더이상 입력 불가능하게 만들었습니다.

답변 2

본문

도움을받아 댓글 1회 입력시 해당 게시물에 

더이상 입력 불가능하게 경고창을 띄우는것까지 만들었는데

입력이 불가능한데도 댓글등록부분이 보이니까 이상하더군요;;

 

생각해보니까 댓글1회 입력하면 댓글등록부분을 아예안보이도록 만들면 

되는거였는데 멍청했었습니다..

 

댓글 1회 입력시에 댓글 등록부분을 안보이게 만들려면

어떻게 해야되나요? 도움 좀 주시면 정말 감사하겠습니다.ㅠ-ㅠ

 

view_comment.skin.php파일에서 댓글쓰기시작 부분을 조건문으로 묶으면 될거같은데 

어떻게 조건을 줘야 할지 모르겠습니다..

도움 부탁드립니다. 

 

 

 

이 질문에 댓글 쓰기 :

답변 2

extend/ 안에 임의로 파일을 추가해서 함수로 넣어주시고 호출하면 쓰기 더 편하겠군요.
저장하실 때 utf-8로 인코딩 지정하는거 잊지마시구요.

<?php
function check_my_comment($bo_table, $wr_id, $wr_num='') {
    global $g5, $member;

    $board_list = array('bbsId', 'bbsId2'); // 검사해야 할 게시판 목록
    if (!in_array($bo_table, $board_list)) return true; // 목록에 없으면 댓글쓰기가능

    if(!isset($member['mb_id']) || empty($member['mb_id'])) return false; // 비회원 댓글 금지

    $write_table = $g5['write_prefix'].$bo_table;
    if (!$wr_num) { // wr_num이 없는경우 가져오기
        $sql = ' select wr_num from '.$write_table.' where wr_parent = "'.$wr_id.'" limit 1 ';
        $row = sql_fetch($sql);
        $wr_num = $row['wr_num'];
    }
    $sql = " select count(*) as cnt from ".$write_table." where wr_num='".$wr_num."' and wr_parent = '".$wr_id."' and wr_is_comment = 1 and mb_id='".$member['mb_id']."' "; 
    $row = sql_fetch($sql);
    return ($row['cnt'] > 0 ? false : true); // 내가 쓴 댓글이 있으면 false, 없으면(쓰기 가능하면) true
}
?>

view_comment.skin.php에서 좀전에 만든 함수로 체크합니다.
따로 include는 안해도 됩니다. extend/ 안에 있는건 자동으로 불러와요.

<?php //if ($is_comment_write) { // 이 문장을 찾아서 주석처리하고 아래로 바꿔주세요.
$possible_write = check_my_comment($bo_table, $wr_id, $write['wr_num']);
if ($is_comment_write && $possible_write) {

그리고 write_comment_update.php 에 추가하신 체크는 있는게 아무래도 좋겠죠.
다만 bbs/ 내의 파일을 수정하심보다는 skin에서 처리하심이 더 좋겠습니다.
write_comment_update.head.skin.php 파일에 넣어주면 됩니다. (파일 만들때 항상 인코딩 주의)

if (!check_my_comment($bo_table, $wr_id, $write['wr_num'])) {
    alert("이미 참여한 게시물 입니다. 각 게시물당 댓글은 한 번씩만 작성이 가능합니다.");
}

댓글 1회 입력시 해당 게시물에 더이상 입력 불가능하게 경고창을 띄우는것까지 만드셨으니

동일한 조건으로 댓글 입력부분을 if문의 false로 둘러싸면 됩니다.

만약

if ( 댓글1회카운트 == 1 ) {

경고창;

}

 

으로 하셨으면

 

if ( !댓글1회카운트 == 1 ) {

댓글입력부분;

}

으로 느낌표를 붙이시면 됩니다.

 

 

write_comment_update.php 파일에서

$sql = " select count(*) as cnt from ".$write_table." where wr_num='".$wr['wr_num']."' and wr_parent = '".$wr_id."' and wr_is_comment = 1 and mb_id='".$mb_id."' ";

$row = sql_fetch($sql);

if($row['cnt'] > 0) { //숫자를 바꿈으로 해당회원이 몇번까지 댓글을 적을 수 있는지 제어

  alert("이미 참여한 게시물 입니다. 각 게시물당 댓글은 한 번씩만 작성이 가능합니다.");
}

이 소스를 추가해서 댓글입력을 제한했습니다.

그런데 댓글입력부분을 조건문으로 감싸는 소스는
view_comment.skin.php 파일에 있는데 여기에는 $row 변수를 사용할수 없지 않나요??

무슨 include같은걸 써야하나여??

죄송합니다 ㅠㅠ

원 질문글에서 "댓글등록부분을 아예안보이도록 만들면 되는거였는데~" 라고 하신걸 보면
굳이 write_comment_update.php에 적어주신 소스를 추가하지 않으셔도 됩니다.

basic 스킨을 사용하심을 예를 들면...
view_comment.skin.php에 <aside id="bo_vc_w"> 태그가 있습니다. 해당 태그 안쪽 내용이 댓글을 작성할수 있게 form으로 둘러쌓인 부분입니다.

<aside id="bo_vc_w"> 위에 write_comment_update.php에 작성하신 추가된 로직을 복붙하시고

if($row['cnt'] > 0) { //숫자를 바꿈으로 해당회원이 몇번까지 댓글을 적을 수 있는지 제어
<aside id="bo_vc_w"> ~~~~ </aside>
}

추가하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,103
© SIRSOFT
현재 페이지 제일 처음으로