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

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

QA

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

본문

도움을받아 댓글 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>
}

추가하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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