게시판 더보기버튼을 누르면 옵션 실행이 안됩니다.

게시판 더보기버튼을 누르면 옵션 실행이 안됩니다.

QA

게시판 더보기버튼을 누르면 옵션 실행이 안됩니다.

본문

https://sir.kr/g5_skin/20427

이 분의 더보기버튼 스킨을 써서 응용하였습니다.

 

게시판 실행이 잘 되는줄 알았는데 더보기버튼을 누르고 옵션을 누르면 실행이 안되더라구요.

 

구체적으로 선택삭제와 선택복사가 잘 안됩니다.

 

게시판 더보기버튼을 누르고 - 전체선택 - 선택삭제 누르면 올바른 방법으로 이용하라고 뜨며 안되고,

게시판 더보기버튼을 누르고 - 전체선택 - 선택복사 누르면 복사되었다고 알림창만 뜨고 복사가 안되어있습니다.

근데 또 선택이동은 실행이 되네요.

 

계속 목록을 수정하면서 php에 대해 지식이 늘었다고 생각했는데 

또 오류가 생기니 막막하기만 합니다...

위치도 바꿔보고 코드도 수정도 해봤는데 더 악화만 되네요...

 

옵션이 제대로 실행이 되도록하려면 코드를 어떻게 수정해야할까요.. 알려주시면 정말 감사하겠습니다!

 

 

아래는 list.php 코드입니다.

코드가 길어서 죄송합니다..전체 다 보여줘야 파악하기 쉬울거같아서 다 올렸습니다ㅜㅜ

 


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
 
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
 
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
?>
 
<section id="sc_1" class="co">
    <div class="sc_mid">
        <!-- input -->
        <!-- 게시판 검색 시작 { -->
        <div class="bo_sch_wrap">
            <!-- 게시판 검색 시작 { -->
            <form name="fsearch" method="get" id="formbox">
                <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">
                <div class="sel1box selbox">
                    <select name="sfl" id="sfl">
                        <option value="wr_subject">제목</option>
                        <option value="wr_content">내용</option>
                        <option value="wr_subject||wr_content">제목+내용</option>
                        <option value="wr_name,1">글쓴이</option>
                        <option value="wr_name,0">글쓴이(코)</option>
                    </select>
                </div>
                <div class="sel2box selbox">
                    <?php if ($is_category) { ?>
                    <!--
        <form name="fcategory" method="get">
            <input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>">
        -->
                    <select name="sca" id="cat">
                        <option value=''>전체</option>
                        <?php echo get_category_option($bo_table, $sca); // SELECT OPTION 태그로 넘겨받음 ?>
                    </select>
                    <!--
            <input type="submit" value="확인" class="sel_btn">
        </form>
        -->
                    <?php } ?>
                </div>
 
                <div class="sch_bar">
                    <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx"
                        class="sch_input" size="25" maxlength="50" placeholder=" 무엇을 도와드릴까요?">
                    <button type="submit" value="검색" class="sch_btn"><i class="fa-solid fa-magnifying-glass"></i>
                        <span class="xbtn"><i class="fa-solid fa-xmark"></i></span>
                    </button>
                </div>
            </form>
            </fieldset>
        </div>
    </div>
</section>
 
<!-- top button -->
<a href="#" class="top_button">
    <i class="xi-angle-up"></i>
</a>
 
<!-- 게시판 목록 시작 { -->
<section id="bo_list">
    <form name="fboardlist" id="fboardlist" action="./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="">
 
        <div class="tbl_head01 tbl_wrap">
            <table>
                <thead>
                    <tr>
                        <?php if ($is_checkbox) { ?>
                        <th scope="col" class="all_chk chk_box">
                            <input type="checkbox" id="chkall"
                                onclick="if (this.checked) all_checked(true); else all_checked(false);"
                                class="selec_chk">
                            <label for="chkall">
                                <p>전체선택</p>
                            </label>
                        </th>
                        <?php } ?>
                        <div id="bo_list_total">
                            <span>Total <?php echo number_format($total_count) ?>건</span>
                        </div>
                    </tr>
                </thead>
                <tbody id="ajax_data">
                    <?php
        for ($i=0; $i<count($list); $i++) {
            if ($i%2==0) $lt_class = "even";
            else $lt_class = "";
        ?>
                    <tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">
                        <?php if ($is_checkbox) { ?>
                        <td class="td_chk chk_box">
                            <input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>"
                                id="chk_wr_id_<?php echo $i ?>">
                        </td>
                        <?php } ?>
 
                        <td class="td_subject td_news"
                            style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"> <?php
                if ($is_category && $list[$i]['ca_name']) {
                ?>
                            <a href="<?php echo $list[$i]['ca_name_href'] ?>"
                                class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>
                            <?php } ?>
                            <div class="list_box">
                                <div class="bo_h2">
                                    <a href="<?php echo $list[$i]['href'] ?>">
                                        <?php echo $list[$i]['icon_reply'] ?>
                                        <?php
                            if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
                        ?>
                                        <?php echo $list[$i]['subject'] ?>
                                    </a>
                                </div>
                                <div class="bo_date">
                                    <?php echo $list[$i]['datetime'] ?>
                                </div>
                            </div>
                            <a href="#">
                                <div class="new_arr"></div>
                            </a>
                        </td>
 
                    </tr>
                    <?php } ?>
                    <?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table" datano="no">게시물이 없습니다.</td></tr>'; } ?>
                </tbody>
            </table>
        </div>

 
        <div class="more_button">더보기 +</div>
 
        <!-- 게시판 페이지 정보 및 버튼 시작 { -->
        <div id="bo_btn_top">
            <ul class="btn_bo_user">
                <?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_b01 btn_admin btn"
                        title="관리자">관리자</a></li><?php } ?>
                <?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><span
                            class="sound_only">RSS</span></a></li>
                <?php } ?>
                <?php if ($is_admin) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기">글쓰기</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="리스트 옵션">옵션</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>
        <!-- } 게시판 페이지 정보 및 버튼 끝 -->
    </form>
</section>
 
<?php if($is_checkbox) { ?>
<noscript>
    <p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>

 
<!-- 페이지 -->
 
<span id="page_n" style="display:none;">2</span>
 
<script type="text/javascript">
<!--
$(document).ready(function() {
 
    $(".more_button").click(function() {
        $(this).html('<i class="fa fa-spinner fa-spin"></i>');
 
        var disp_li_length = $("#gallery_json > li").length;
 
        var page_n = $('#page_n').html();
        $.get("<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&ajax_ck=1&sca=<?php echo urlencode($sca) ?>&sfl=<?php echo $sfl ?>&stx=<?php echo urlencode($stx) ?>&page=" +
            page_n,
            function(data) {
                var append_data = $(data).find('#ajax_data').html();
                var cking = $(data).find('.empty_table').attr("datano");
 
                if (cking != "no") {
                    $('#page_txt').html('');
                    $('#ajax_data').append(append_data);
                    $('#page_n').html(parseInt(page_n) + 1);
                    $(".more_button").html('더보기 +');
                } else {
                    alert('게시물이 존재하지 않습니다.');
                    $(".more_button").html('더보기 +');
                }
            });
 
    });
});
//
-->
</script>
 
<script>
jQuery(function(x) {
    $(".bo_sch_wrap h2").on("click", function() {
        window.location = "<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>";
    });
 
    /* searchbox */
    $("input[type=text]").on("input", function() {
 
        let inputval = $("input[type=text]").val();
 
        if (inputval != "") {
            $(".xbtn").css("display", "block");
 
        }
    });
 
    $(".xbtn").on("click", function() {
        $("input[type=text]").val("");
        $(".xbtn").css("display", "none");
    });
});
</script>
 
<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
    var f = document.fboardlist;
 
    for (var i = 0; i < f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}
 
function fboardlist_submit(f) {
    var chk_count = 0;
 
    for (var i = 0; i < f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }
 
    if (!chk_count) {
        alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
 
    if (document.pressed == "선택복사") {
        select_copy("copy");
        return;
    }
 
    if (document.pressed == "선택이동") {
        select_copy("move");
        return;
    }
 
    if (document.pressed == "선택삭제") {
        if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
            return false;
 
        f.removeAttribute("target");
        f.action = "./board_list_update.php";
    }
 
    return true;
}
 
// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;
 
    if (sw == "copy")
        str = "복사";
    else
        str = "이동";
 
    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
 
    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
// 게시판 리스트 관리자 옵션
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

구조적으로 살펴봐야 할부분으로 보여지는게

더보기로 가져오는 로직에서 

 

 

 

for ($i=0; $i<count($list); $i++) {
            if ($i%2==0) $lt_class = "even";
            else $lt_class = "";
        ?>
                    <tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">
                        <?php if ($is_checkbox) { ?>
                        <td class="td_chk chk_box">
                            <input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>"
                                id="chk_wr_id_<?php echo $i ?>">

영역에서 $i 에 해당되는값이 어떻게 처리되는지가 중요할것 같아보이는데요

 

id="chk_wr_id_<?php echo $i?>" 가 동일하게 적용되어있다면

 

count($list)로 가져오는값이 0부터 시작되서

가져올때마다 새로 0부터 할당할것같아보이거든요

 

그리고, 선택수정/삭제를 할때

 

선택된 항목들이 고유한 값들인지(wr_id)로 판단해봐야겠지만

그값들이 정상적으로 전달후 넘어가지는지

일일이 디버그하면서확인해야 알것같습니다.

 

말씀하신것처럼 id="chk_wr_id_5" 까지 있다가 더보기를 누르면  id="chk_wr_id_0" 으로 새로 시작하네요..


    $("input[type=checkbox]").on("click", function() {
        let chk = $('input[type=checkbox]:checked').length;
        console.log(chk);
    });

위 코드로 확인했을 때 더보기를 누르고 input을 선택하면 input checkbox 에서 체크한 갯수가 오르지않구요..하지만 전체선택을 누르면 또 개수가 오르네요..

그리고 더보기로 나온 게시물들은 value="<?php echo $list[$i]['wr_id'] ?>" 가 안나옵니다..

이럴땐

        $.get("<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&ajax_ck=1&sca=<?php echo urlencode($sca) ?>&sfl=<?php echo $sfl ?>&stx=<?php echo urlencode($stx) ?>&page=" +
            page_n,

위 코드에 input에 대한 것을 추가해야하나요??

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

회원로그인

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