코멘트(댓글) 선택삭제를 만들려면 어떻게 해야할까요?

코멘트(댓글) 선택삭제를 만들려면 어떻게 해야할까요?

QA

코멘트(댓글) 선택삭제를 만들려면 어떻게 해야할까요?

답변 3

본문

댓글에 선택삭제 기능을 넣을려 궁리하다가 기본 게시판의 목록 페이지에 있는 선택삭제를 참고하여 해봤는데 댓글에서는 작동을 안하네요...ㅠ.ㅠ

어디 부분을 참고해야 할까요?

고수님들의 고견 부탁드립니다.

 

배추빌더에 이런 부분이 있던데 이건 그누4로 만들어지고 db까지 커스텀을 너무 많이해서 어디서부터 손써야할지 감이 안오네요...ㅠ.

 


<input onclick="if (this.checked) all_checked(true); else all_checked(false);" type=checkbox>
<input type="checkbox" name="chk_comment_id[]" class="chk_comment_id" value="<?php echo $list[$i][wr_id]?>">
 
<? if ($is_admin) { ?>
function comment_all_delete()
{
    if (!$("input[name=chk_comment_id[]]:checked").length) {
        alert("삭제할 코멘트를 하나 이상 선택하세요.");
        return false;
    }
    if (!confirm("선택한 코멘트를 정말 삭제 하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다")) {
        return false;
    }
    comment_id = $("input[name=chk_comment_id[]]:checked").map(function () { return $(this).val() }).get().join(',');
    $.post("<?php echo $board_skin_url?>/mw.comment.delete.php", {
        'bo_table' : '<?php echo $bo_table?>',
        'comment_id' : comment_id },
    function (ret) {
        if (ret == 'ok')
            location.reload();
        else
            alert(ret);
    });
}
<? } ?>    

 


$chk_comment_id = explode(",", $comment_id);
for ($i=0, $m=count($chk_comment_id); $i<$m; $i++) 
{
    $write = sql_fetch(" select * from $write_table where wr_id = '{$comment_id[$i]}' ");
    if ($write[wr_id])
        delete_row($board, $write);
}
echo "ok";
exit;

이 질문에 댓글 쓰기 :

답변 3

배추빌더 소스 참조하셔서 그대로 만드셔도 될 것 같네요.
어차피 wr_id 로 삭제하는 거라, DB가 커스텀 되었다고 하더라도, 특별히 문제될 것은 없어 보입니다.

delete_row 함수만 확인하시고, 동일하게 함수를 사용하시던지, 직접 삭제처리하시던지 해도 될 것 같습니다.

덧붙히면 삭제 후 댓글 카운트만 조정도 빼놓지 않으시면 됩니다.

답변 감사합니다.
위에 작성한 코드가 배추빌더 코드인데...체크박스에 체크하고 삭제 버튼을 클릭해도 아무 반응이 없어서요...ㅠ.ㅠ


<img src="<?php echo $board_skin_url ?>/img/btn_delete.gif" border=0 onclick="comment_all_delete()" style="cursor:pointer;">

if (!$("input[name=chk_comment_id[]]:checked").length) {
        alert("삭제할 코멘트를 하나 이상 선택하세요.");
        return false;
    }


이 코드가 체크를 인식 못하고 있는거 같은데...우째 수정을 해야할지...

좀더 고민해 보겠습니다. 감사합니다.

img 클릭시 comment_all_delete 함수를 실행시킵니다.

 

<? if ($is_admin) { ?>
function comment_all_delete()
{
    if (!$("input[name=chk_comment_id[]]:checked").length) {
        alert("삭제할 코멘트를 하나 이상 선택하세요.");
        return false;
    }
    if (!confirm("선택한 코멘트를 정말 삭제 하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다")) {
        return false;
    }
    comment_id = $("input[name=chk_comment_id[]]:checked").map(function () { return $(this).val() }).get().join(',');
    $.post("<?php echo $board_skin_url?>/mw.comment.delete.php", {
        'bo_table' : '<?php echo $bo_table?>',
        'comment_id' : comment_id },
    function (ret) {
        if (ret == 'ok')
            location.reload();
        else
            alert(ret);
    });
}
<? } ?>

동일하게 함수를 넣어주시고, 스킨 폴더 내에 mw.comment.delete.php 파일을 현재 버전에 맞게 수정해서 넣어주시면 될 것 같네요.

위에 두분의 조언을 참고하여 오늘 하루종일 씨름하다가 드디어 완성했습니다...감사합니다.

코멘트(댓글) 선택삭제, 일괄삭제

 

view_comment.skin.php


<form name="fviewcomment" id="fviewcomment" action="./comment.delete.php" onsubmit="return comment_submit(this);" method="post">
<input type=hidden name="bo_table"    value='<?php echo $bo_table ?>'>
<input type=hidden name="wr_id"       value='<?php echo $wr_id ?>'>
<input type=hidden name="comment_id"  id='comment_id' value=''>
<input type=hidden name="sca"         value='<?php echo $sca ?>' >
<input type=hidden name="sfl"       value='<?php echo $sfl ?>' >
<input type=hidden name="stx"         value='<?php echo $stx ?>'>
<input type=hidden name="spt"         value='<?php echo $spt ?>'>
<input type=hidden name="page"        value='<?php echo $page ?>'>
<input type=hidden name="cwin"        value='<?php echo $cwin ?>'> 
 
 <?php if ($is_checkbox) { ?><input type="checkbox" id="chkall" onclick="if(this.checked) all_checked(true); else all_checked(false);"><?php } ?>
 
<?php if ($is_checkbox) { ?><input type="checkbox" name="chk_comment_id[]" value="<?php echo $list[$i][wr_id]?>" id="chk_comment_id_<?=$i?>"><?php } ?>
 
<?php if ($is_checkbox) { ?><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value" class="btn btn_admin"><i class="fa fa-trash-o" aria-hidden="true"></i>선택삭제</button><?php } ?>
 
<script>
function all_checked(sw) {
var f=document.fviewcomment;
for(var i=0; i<f.length; i++) {
    if(f.elements[i].name=="chk_comment_id[]")
        f.elements[i].checked=sw;
    }
}
function comment_submit(f) {
var chk_count=0;
for(var i=0; i<f.length; i++) {
    if(f.elements[i].name=="chk_comment_id[]" && f.elements[i].checked)
    chk_count++;
}
if(!chk_count) {
    alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
    return false;
}

if(document.pressed=="선택삭제") {
    if(!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다"))
    return false;
}
return true;
}
</script>

 

/bbs/comment.delete.php


<?php
include_once('./_common.php');
if (!$bo_table)
    die("bo_table 이 없습니다.");
if (!$is_admin)
    die("관리자만 실행할 수 있습니다.");

$tmp_array = $_POST['chk_comment_id'];
$chk_count = count($tmp_array);

for ($i=$chk_count-1; $i>=0; $i--)
{
    $del_id=$tmp_array[$i];
    $write = sql_fetch(" select * from $write_table where wr_id = '{$chk_comment_id[$i]}' ");
    sql_query(" delete from $write_table where wr_parent = '$wr_id' and wr_id = '$del_id' ");
}
sql_query(" update $write_table set wr_comment =  wr_comment - $chk_count where wr_id = '$wr_id' ");
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment - $chk_count where bo_table = '$bo_table' ");
// 새글에 등록이 되었다면 전부삭제
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_parent = '$wr_id' ");
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id&page=$page" . $qstr);
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 88
© SIRSOFT
현재 페이지 제일 처음으로