테스트 사이트 - 개발 중인 베타 버전입니다

수정 삭제 버튼 작동 질문 채택완료

Winter0 11개월 전 조회 1,574

안녕하세요...!
글을 올렸었는데, 수정을 한다는 게 삭제를 했나봅니다;;; 지금 발견해서 다시 올려요..

목록에서 바로 게시글 수정 및 삭제를 할 수 있는 버튼을 만들었습니다.

 

                    <div class="post-actions">

                        <a href="<?php echo $row['edit_href']; ?>" class="btn-edit">수정</a>

                        <a href="<?php echo $row['del_href']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>

                    </div>

 

아마 고수님들은 여기서부터 문제를 아실텐데, 모르는 저는 당황...
비회원은 수정, 삭제 버튼이 안 보이더라고요...
post 컨테이너 칸밖으로 빼니까 잘 보이는데... 그 칸이나 안의 다른 건 다 정상적으로 표시되는데, 왜 저 버튼만 안되는지 알 수가 없어요...ㅠㅠ
뚝딱뚝딱 뭔가 바꿔봤는데요..

 

1차 수리 시도

                    <div class="post-actions">

                        <a href="<?php echo $row['edit_href'] ?? G5_BBS_URL . '/password.php?w=u&bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; ?>" class="btn-edit">수정</a>

                        <a href="<?php echo $row['del_href'] ?? G5_BBS_URL . '/password.php?w=d&bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>

                    </div>

2차 수리 시도

                    <div class="post-actions">

                        <a href="<?php echo $row['update_href']; ?>" class="btn-edit">수정</a>

                        <a href="<?php echo $row['delete_href']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>

                    </div>

 

다 안되네요... 뭐가 문제일까요..? 저는 잘 모르겠습니다... ㅠㅠ

아래는 혹시 몰라서 같이 올리는 list.skin.php 전체 코드입니다

 

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>// 선택옵션으로 인해 셀합치기가 가변적으로 변함

$colspan = 5;</p>

<p>if ($is_checkbox) $colspan++;

if ($is_good) $colspan++;

if ($is_nogood) $colspan++;</p>

<p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨

add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);

?></p>

<p><!-- 게시판 목록 시작 { -->

<div id="bo_list" style="width:<?php echo $width; ?>"></p>

<p>    <!-- 게시판 카테고리 시작 { -->

    <?php if ($is_category) { ?>

    <nav id="bo_cate">

        <h2><?php echo $board['bo_subject'] ?> 카테고리</h2>

        <ul id="bo_cate_ul">

            <?php echo $category_option ?>

        </ul>

    </nav>

    <?php } ?>

    <!-- } 게시판 카테고리 끝 -->

    

    <form name="fboardlist" id="fboardlist" action="<?php echo G5_BBS_URL; ?>/board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">

    

    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">

    <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="sca" value="<?php echo $sca ?>">

    <input type="hidden" name="sst" value="<?php echo $sst ?>">

    <input type="hidden" name="sod" value="<?php echo $sod ?>">

    <input type="hidden" name="page" value="<?php echo $page ?>">

    <input type="hidden" name="sw" value=""></p>

<p>    <!-- 게시판 페이지 정보 및 버튼 시작 { -->

    <div id="bo_btn_top">

        <!-- 전체 선택 -->

        <?php if ($is_checkbox) { ?>

        <div class="chk-box all-select">

            <input type="checkbox" id="chk_all" onclick="all_checked(this.checked)">

            전체 선택

        </div>

        <?php } ?></p>

<p>        <ul class="btn_bo_user">

            <?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>

            <?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>

            <li>

                <button type="button" class="btn_bo_sch btn_b01 btn" title="게시판 검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">게시판 검색</span></button>

            </li>

            <?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>

            <?php if ($is_admin == 'super' || $is_auth) {  ?>

            <li>

                <button type="button" class="btn_more_opt is_list_btn btn_b01 btn" title="게시판 리스트 옵션"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>

                <?php if ($is_checkbox) { ?>    

                <ul class="more_opt is_list_btn">  

                    <li><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value"><i class="fa fa-trash-o" aria-hidden="true"></i> 선택삭제</button></li>

                    <li><button type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value"><i class="fa fa-files-o" aria-hidden="true"></i> 선택복사</button></li>

                    <li><button type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value"><i class="fa fa-arrows" aria-hidden="true"></i> 선택이동</button></li>

                </ul>

                <?php } ?>

            </li>

            <?php }  ?>

        </ul>

    </div>

    <!-- } 게시판 페이지 정보 및 버튼 끝 --></p>

<p><div class="post-list">

    <form name="fboardlist" id="fboardlist" method="post">

        <?php

            foreach ($list as $i => $row) {

            // 게시글 제목 및 내용 처리

            $title = $row['subject'];

            $content = '';

            

            if (!empty($row['wr_id'])) {

                // 비밀글 여부 확인

                if (!empty($row['icon_secret']) || (isset($row['is_secret']) && $row['is_secret'])) {

                    $title = "비밀글입니다."; // 제목 대체

                    $content = ""; // 내용 숨김

                } else {

                    // 비밀글이 아닐 경우 제목과 내용 가져오기

                    $sql = "SELECT wr_content FROM {$write_table} WHERE wr_id = '{$row['wr_id']}'";

                    $result = sql_fetch($sql);

                    $content = nl2br(cut_str(strip_tags($result['wr_content'], '
'), 1000)); // 줄바꿈 보존

                }

            }

        ?>

        <div class="post-item">

            <?php if ($is_checkbox) { ?>

                <div class="chk-box">

                    <input type="checkbox" name="chk_wr_id[]" value="<?php echo $row['wr_id']; ?>" id="chk_wr_id_<?php echo $row['wr_id']; ?>" class="selec_chk">

                    <label for="chk_wr_id_<?php echo $row['wr_id']; ?>">

                        <span></span>

                        <b class="sound_only"><?php echo $row['subject']; ?></b>

                    </label>

                </div>

                    <!-- 수정/삭제 버튼 -->

                    <div class="post-actions">

                        <a href="<?php echo $row['update_href']; ?>" class="btn-edit">수정</a>

                        <a href="<?php echo $row['delete_href']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>

                    </div>

            <?php } ?>

            <h3 class="post-title"><?php echo $title; ?></h3>

            <p class="post-content"><?php echo $content; ?></p>

        </div>

        <?php } ?>

    </form>

</div></p>

<p>            

    <!-- 페이지 -->

    <?php echo $write_pages; ?>

    <!-- 페이지 -->

    

    <?php if ($list_href || $is_checkbox || $write_href) { ?>

    <div class="bo_fx">

        <?php if ($list_href || $write_href) { ?>

        <ul class="btn_bo_user">

            <?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>

            <?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>

            <?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>

        </ul>    

        <?php } ?>

    </div>

    <?php } ?>   

    </form></p>

<p>    <!-- 게시판 검색 시작 { -->

    <div class="bo_sch_wrap">

        <fieldset class="bo_sch">

            <h3>검색</h3>

            <form name="fsearch" method="get">

            <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">

            <input type="hidden" name="sca" value="<?php echo $sca ?>">

            <input type="hidden" name="sop" value="and">

            <label for="sfl" class="sound_only">검색대상</label>

            <select name="sfl" id="sfl">

                <?php echo get_board_sfl_select_options($sfl); ?>

            </select>

            <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>

            <div class="sch_bar">

                <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder=" 검색어를 입력해주세요">

                <button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>

            </div>

            <button type="button" class="bo_sch_cls" title="닫기"><i class="fa fa-times" aria-hidden="true"></i><span class="sound_only">닫기</span></button>

            </form>

        </fieldset>

        <div class="bo_sch_bg"></div>

    </div>

    <script>

    jQuery(function($){

        // 게시판 검색

        $(".btn_bo_sch").on("click", function() {

            $(".bo_sch_wrap").toggle();

        })

        $('.bo_sch_bg, .bo_sch_cls').click(function(){

            $('.bo_sch_wrap').hide();

        });

    });

    </script>

    <!-- } 게시판 검색 끝 --> 

</div></p>

<p><?php if($is_checkbox) { ?>

<noscript>

<p>자바스크립트를 사용하지 않는 경우
별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>

</noscript>

<?php } ?></p>

<p><?php if ($is_checkbox) { ?>

<script>

function all_checked(sw) {

    document.querySelectorAll('.post-item .selec_chk').forEach(function (checkbox) {

        checkbox.checked = sw; // 체크 상태 적용

    });

}</p>

<p>function fboardlist_submit(f) {

    var chk_count = 0;</p>

<p>    for (var i=0; i<f.length; i++) {

        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)

            chk_count++;

    }</p>

<p>    if (!chk_count) {

        alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");

        return false;

    }</p>

<p>    if(document.pressed == "선택복사") {

        select_copy("copy");

        return;

    }</p>

<p>    if(document.pressed == "선택이동") {

        select_copy("move");

        return;

    }</p>

<p>    if(document.pressed == "선택삭제") {

        if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))

            return false;</p>

<p>        f.removeAttribute("target");

        f.action = g5_bbs_url+"/board_list_update.php";

    }</p>

<p>    return true;

}</p>

<p>// 선택한 게시물 복사 및 이동

function select_copy(sw) {

    var f = document.fboardlist;</p>

<p>    if (sw == "copy")

        str = "복사";

    else

        str = "이동";</p>

<p>    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");</p>

<p>    f.sw.value = sw;

    f.target = "move";

    f.action = g5_bbs_url+"/move.php";

    f.submit();

}</p>

<p>// 게시판 리스트 관리자 옵션

jQuery(function($){

    $(".btn_more_opt.is_list_btn").on("click", function(e) {

        e.stopPropagation();

        $(".more_opt.is_list_btn").toggle();

    });

    $(document).on("click", function (e) {

        if(!$(e.target).closest('.is_list_btn').length) {

            $(".more_opt.is_list_btn").hide();

        }

    });

});

</script>

<?php } ?>

<!-- } 게시판 목록 끝 -->

 

 

살려주세요..
 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
cola2016
11개월 전

            <?php if ($is_checkbox) { ?>
                <div class="chk-box">
                    <input type="checkbox" name="chk_wr_id[]" value="<?php echo $row['wr_id']; ?>" id="chk_wr_id_<?php echo $row['wr_id']; ?>" class="selec_chk">
                    <label for="chk_wr_id_<?php echo $row['wr_id']; ?>">
                        <span></span>
                        <b class="sound_only"><?php echo $row['subject']; ?></b>
                    </label>
                </div>
                    <!-- 수정/삭제 버튼 -->
                    <div class="post-actions">
                        <a href="<?php echo $row['update_href']; ?>" class="btn-edit">수정</a>
                        <a href="<?php echo $row['delete_href']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>
                    </div>
            <?php } ?>

$is_checkbox의 권한이 없으니 비회원은 나오지 않아요.
지금은 체크 박스 자체도 안보이시지 않으신가요?
비회원에게도 이 부분을 해지하면 타 유저의 글도 삭제가 될 위험이 있는데요. 
그게 상관없으시다면 아래를 복사하여 교체하세요.
아마 수정/삭제 권한이 없어서 버튼만 보이고 또 클릭하면 권한 요청은 나오겠지만요

                <div class="chk-box">
                    <input type="checkbox" name="chk_wr_id[]" value="<?php echo $row['wr_id']; ?>" id="chk_wr_id_<?php echo $row['wr_id']; ?>" class="selec_chk">
                    <label for="chk_wr_id_<?php echo $row['wr_id']; ?>">
                        <span></span>
                        <b class="sound_only"><?php echo $row['subject']; ?></b>
                    </label>
                </div>
                    <!-- 수정/삭제 버튼 -->
                    <div class="post-actions">
                        <a href="<?php echo $row['update_href']; ?>" class="btn-edit">수정</a>
                        <a href="<?php echo $row['delete_href']; ?>" class="btn-delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>
                    </div>
로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

W
Winter0
11개월 전
우선 답변 감사합니다. 이게 체크박스 영향을 받아서 그렇군요;;
체크박스는 기존의 그누보드 게시글 관리 용도로, 관리자 모드에서만 보이게 하려고 했습니다.. 체크박스는 안 보이는 게 맞아요
수정 삭제만 보이게하고 싶습니다 .. 비회원도 글 작성과 수정, 삭제가 가능하게 하고 싶어요. 그리고 게시글 작성자를 인식해서 비밀번호 안 맞거나 계정이 아니면 못하는 걸 의도했는데.... 어렵네요 ㅋㅋㅋㅠㅠ
c
cola2016
11개월 전
일단은 기본적으로는 체크박스가 없으면 수정 삭제를 못해요. 어떤 게시글의 선택인지 모르기 때문에

비회원 수정 삭제를 만드실려면 게시글마다 $row['update_href'] 와 $row['delete_href'] 를 주고 wr_id 값을 가져오도록 만들면 될것 같습니다.
W
Winter0
11개월 전
아 그 방법밖엔 없나요.... ㅠ 뭔가 의도한 거랑 다르네요 아 이런 흑흑

일단 코드 조금 수정해서 비회원일 경우, 비회원도 수정 삭제가 보이게 하는 건 성공했습니다..
W
Winter0
11개월 전
와 하나님 은혜로 어찌저찌 잘 됐습니다. 그래도 감사합니다 ^^!!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인