아이디 당 댓글 1개만 등록....alert창 띄운 후 댓글이 생성되네요..

아이디 당 댓글 1개만 등록....alert창 띄운 후 댓글이 생성되네요..

QA

아이디 당 댓글 1개만 등록....alert창 띄운 후 댓글이 생성되네요..

본문

아래...게시글(https://sir.kr/qa/254867) 에  jbsstyle 님이 답변 주신것을 참고해서..

수정하여 

/skin/board/xxx/write_comment_udpate.skin.php

처리를 했는데요...

 

아래 코드는  모두 실행되어 아래 Alert 창까지 처리되었는데요.

댓글이 생성되네요...

 

 

2049185043_1531451455.6844.png

 

알람창을 띄우고 작성한 댓글을 지워야 하나요?

 

<?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;

}

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);

답변을 작성하시기 전에 로그인 해주세요.
전체 407
QA 내용 검색

회원로그인

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