게시판 더보기버튼을 누르면 옵션 실행이 안됩니다. 채택완료
https://sir.kr/g5_skin/20427" rel="nofollow noreferrer noopener" target="_blank">https://sir.kr/g5_skin/20427
이 분의 더보기버튼 스킨을 써서 응용하였습니다.
게시판 실행이 잘 되는줄 알았는데 더보기버튼을 누르고 옵션을 누르면 실행이 안되더라구요.
구체적으로 선택삭제와 선택복사가 잘 안됩니다.
게시판 더보기버튼을 누르고 - 전체선택 - 선택삭제 누르면 올바른 방법으로 이용하라고 뜨며 안되고,
게시판 더보기버튼을 누르고 - 전체선택 - 선택복사 누르면 복사되었다고 알림창만 뜨고 복사가 안되어있습니다.
근데 또 선택이동은 실행이 되네요.
계속 목록을 수정하면서 php에 대해 지식이 늘었다고 생각했는데
또 오류가 생기니 막막하기만 합니다...
위치도 바꿔보고 코드도 수정도 해봤는데 더 악화만 되네요...
옵션이 제대로 실행이 되도록하려면 코드를 어떻게 수정해야할까요.. 알려주시면 정말 감사하겠습니다!
아래는 list.php 코드입니다.
코드가 길어서 죄송합니다..전체 다 보여줘야 파악하기 쉬울거같아서 다 올렸습니다ㅜㅜ
</p>
<p><?php</p>
<p>if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>
<p> </p>
<p>// 선택옵션으로 인해 셀합치기가 가변적으로 변함</p>
<p>$colspan = 5;</p>
<p> </p>
<p>if ($is_checkbox) $colspan++;</p>
<p>if ($is_good) $colspan++;</p>
<p>if ($is_nogood) $colspan++;</p>
<p> </p>
<p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨</p>
<p>add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);</p>
<p>?></p>
<p> </p>
<p><section id="sc_1" class="co"></p>
<p> <div class="sc_mid"></p>
<p> <!-- input --></p>
<p> <!-- 게시판 검색 시작 { --></p>
<p> <div class="bo_sch_wrap"></p>
<p> <!-- 게시판 검색 시작 { --></p>
<p> <form name="fsearch" method="get" id="formbox"></p>
<p> <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>"></p>
<p> <!-- <input type="hidden" name="sca" value="<?php echo $sca ?>"> --></p>
<p> <input type="hidden" name="sop" value="and"></p>
<p> <div class="sel1box selbox"></p>
<p> <select name="sfl" id="sfl"></p>
<p> <option value="wr_subject">제목</option></p>
<p> <option value="wr_content">내용</option></p>
<p> <option value="wr_subject||wr_content">제목+내용</option></p>
<p> <option value="wr_name,1">글쓴이</option></p>
<p> <option value="wr_name,0">글쓴이(코)</option></p>
<p> </select></p>
<p> </div></p>
<p> <div class="sel2box selbox"></p>
<p> <?php if ($is_category) { ?></p>
<p> <!--</p>
<p> <form name="fcategory" method="get"></p>
<p> <input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>"></p>
<p> --></p>
<p> <select name="sca" id="cat"></p>
<p> <option value=''>전체</option></p>
<p> <?php echo get_category_option($bo_table, $sca); // SELECT OPTION 태그로 넘겨받음 ?></p>
<p> </select></p>
<p> <!--</p>
<p> <input type="submit" value="확인" class="sel_btn"></p>
<p> </form></p>
<p> --></p>
<p> <?php } ?></p>
<p> </div></p>
<p> </p>
<p> <div class="sch_bar"></p>
<p> <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx"</p>
<p> class="sch_input" size="25" maxlength="50" placeholder=" 무엇을 도와드릴까요?"></p>
<p> <button type="submit" value="검색" class="sch_btn"><i class="fa-solid fa-magnifying-glass"></i></p>
<p> <span class="xbtn"><i class="fa-solid fa-xmark"></i></span></p>
<p> </button></p>
<p> </div></p>
<p> </form></p>
<p> </fieldset></p>
<p> </div></p>
<p> </div></p>
<p></section></p>
<p> </p>
<p><!-- top button --></p>
<p><a href="#" class="top_button"></p>
<p> <i class="xi-angle-up"></i></p>
<p></a></p>
<p> </p>
<p><!-- 게시판 목록 시작 { --></p>
<p><section id="bo_list"></p>
<p> <form name="fboardlist" id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);"</p>
<p> method="post"></p>
<p> <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>"></p>
<p> <input type="hidden" name="sfl" value="<?php echo $sfl ?>"></p>
<p> <input type="hidden" name="stx" value="<?php echo $stx ?>"></p>
<p> <input type="hidden" name="spt" value="<?php echo $spt ?>"></p>
<p> <input type="hidden" name="sca" value="<?php echo $sca ?>"></p>
<p> <input type="hidden" name="sst" value="<?php echo $sst ?>"></p>
<p> <input type="hidden" name="sod" value="<?php echo $sod ?>"></p>
<p> <input type="hidden" name="page" value="<?php echo $page ?>"></p>
<p> <input type="hidden" name="sw" value=""></p>
<p> </p>
<p> <div class="tbl_head01 tbl_wrap"></p>
<p> <table></p>
<p> <thead></p>
<p> <tr></p>
<p> <?php if ($is_checkbox) { ?></p>
<p> <th scope="col" class="all_chk chk_box"></p>
<p> <input type="checkbox" id="chkall"</p>
<p> onclick="if (this.checked) all_checked(true); else all_checked(false);"</p>
<p> class="selec_chk"></p>
<p> <label for="chkall"></p>
<p> <p>전체선택</p></p>
<p> </label></p>
<p> </th></p>
<p> <?php } ?></p>
<p> <div id="bo_list_total"></p>
<p> <span>Total <?php echo number_format($total_count) ?>건</span></p>
<p> </div></p>
<p> </tr></p>
<p> </thead></p>
<p> <tbody id="ajax_data"></p>
<p> <?php</p>
<p> for ($i=0; $i<count($list); $i++) {</p>
<p> if ($i%2==0) $lt_class = "even";</p>
<p> else $lt_class = "";</p>
<p> ?></p>
<p> <tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>"></p>
<p> <?php if ($is_checkbox) { ?></p>
<p> <td class="td_chk chk_box"></p>
<p> <input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>"</p>
<p> id="chk_wr_id_<?php echo $i ?>"></p>
<p> </td></p>
<p> <?php } ?></p>
<p> </p>
<p> <td class="td_subject td_news"</p>
<p> style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"> <?php</p>
<p> if ($is_category && $list[$i]['ca_name']) {</p>
<p> ?></p>
<p> <a href="<?php echo $list[$i]['ca_name_href'] ?>"</p>
<p> class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a></p>
<p> <?php } ?></p>
<p> <div class="list_box"></p>
<p> <div class="bo_h2"></p>
<p> <a href="<?php echo $list[$i]['href'] ?>"></p>
<p> <?php echo $list[$i]['icon_reply'] ?></p>
<p> <?php</p>
<p> if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);</p>
<p> ?></p>
<p> <?php echo $list[$i]['subject'] ?></p>
<p> </a></p>
<p> </div></p>
<p> <div class="bo_date"></p>
<p> <?php echo $list[$i]['datetime'] ?></p>
<p> </div></p>
<p> </div></p>
<p> <a href="#"></p>
<p> <div class="new_arr"></div></p>
<p> </a></p>
<p> </td></p>
<p> </p>
<p> </tr></p>
<p> <?php } ?></p>
<p> <?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table" datano="no">게시물이 없습니다.</td></tr>'; } ?></p>
<p> </tbody></p>
<p> </table></p>
<p> </div></p>
<p>
</p>
<p> <div class="more_button">더보기 +</div></p>
<p> </p>
<p> <!-- 게시판 페이지 정보 및 버튼 시작 { --></p>
<p> <div id="bo_btn_top"></p>
<p> <ul class="btn_bo_user"></p>
<p> <?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_b01 btn_admin btn"</p>
<p> title="관리자">관리자</a></li><?php } ?></p>
<p> <?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><span</p>
<p> class="sound_only">RSS</span></a></li></p>
<p> <?php } ?></p>
<p> <?php if ($is_admin) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기">글쓰기</a></p>
<p> </li></p>
<p> <?php } ?></p>
<p> <?php if ($is_admin == 'super' || $is_auth) { ?></p>
<p> <li></p>
<p> <button type="button" class="btn_more_opt is_list_btn btn_b01 btn" title="리스트 옵션">옵션</button></p>
<p> <?php if ($is_checkbox) { ?></p>
<p> <ul class="more_opt is_list_btn"></p>
<p> <li><button type="submit" name="btn_submit" value="선택삭제"</p>
<p> onclick="document.pressed=this.value"><i class="fa fa-trash-o" aria-hidden="true"></i></p>
<p> 선택삭제</button></li></p>
<p> <li><button type="submit" name="btn_submit" value="선택복사"</p>
<p> onclick="document.pressed=this.value"><i class="fa fa-files-o" aria-hidden="true"></i></p>
<p> 선택복사</button></li></p>
<p> <li><button type="submit" name="btn_submit" value="선택이동"</p>
<p> onclick="document.pressed=this.value"><i class="fa fa-arrows" aria-hidden="true"></i></p>
<p> 선택이동</button></li></p>
<p> </ul></p>
<p> <?php } ?></p>
<p> </li></p>
<p> <?php } ?></p>
<p> </ul></p>
<p> </div></p>
<p> <!-- } 게시판 페이지 정보 및 버튼 끝 --></p>
<p> </form></p>
<p></section></p>
<p> </p>
<p><?php if($is_checkbox) { ?></p>
<p><noscript></p>
<p> <p>자바스크립트를 사용하지 않는 경우
별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p></p>
<p></noscript></p>
<p><?php } ?></p>
<p>
</p>
<p><!-- 페이지 --></p>
<p> </p>
<p><span id="page_n" style="display:none;">2</span></p>
<p> </p>
<p><script type="text/javascript"></p>
<p><!--</p>
<p>$(document).ready(function() {</p>
<p> </p>
<p> $(".more_button").click(function() {</p>
<p> $(this).html('<i class="fa fa-spinner fa-spin"></i>');</p>
<p> </p>
<p> var disp_li_length = $("#gallery_json > li").length;</p>
<p> </p>
<p> var page_n = $('#page_n').html();</p>
<p> $.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=" +</p>
<p> page_n,</p>
<p> function(data) {</p>
<p> var append_data = $(data).find('#ajax_data').html();</p>
<p> var cking = $(data).find('.empty_table').attr("datano");</p>
<p> </p>
<p> if (cking != "no") {</p>
<p> $('#page_txt').html('');</p>
<p> $('#ajax_data').append(append_data);</p>
<p> $('#page_n').html(parseInt(page_n) + 1);</p>
<p> $(".more_button").html('더보기 +');</p>
<p> } else {</p>
<p> alert('게시물이 존재하지 않습니다.');</p>
<p> $(".more_button").html('더보기 +');</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> });</p>
<p>});</p>
<p>//</p>
<p>--></p>
<p></script></p>
<p> </p>
<p><script></p>
<p>jQuery(function(x) {</p>
<p> $(".bo_sch_wrap h2").on("click", function() {</p>
<p> window.location = "<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>";</p>
<p> });</p>
<p> </p>
<p> /* searchbox */</p>
<p> $("input[type=text]").on("input", function() {</p>
<p> </p>
<p> let inputval = $("input[type=text]").val();</p>
<p> </p>
<p> if (inputval != "") {</p>
<p> $(".xbtn").css("display", "block");</p>
<p> </p>
<p> }</p>
<p> });</p>
<p> </p>
<p> $(".xbtn").on("click", function() {</p>
<p> $("input[type=text]").val("");</p>
<p> $(".xbtn").css("display", "none");</p>
<p> });</p>
<p>});</p>
<p></script></p>
<p> </p>
<p><?php if ($is_checkbox) { ?></p>
<p><script></p>
<p>function all_checked(sw) {</p>
<p> var f = document.fboardlist;</p>
<p> </p>
<p> for (var i = 0; i < f.length; i++) {</p>
<p> if (f.elements[i].name == "chk_wr_id[]")</p>
<p> f.elements[i].checked = sw;</p>
<p> }</p>
<p>}</p>
<p> </p>
<p>function fboardlist_submit(f) {</p>
<p> var chk_count = 0;</p>
<p> </p>
<p> for (var i = 0; i < f.length; i++) {</p>
<p> if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)</p>
<p> chk_count++;</p>
<p> }</p>
<p> </p>
<p> if (!chk_count) {</p>
<p> alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");</p>
<p> return false;</p>
<p> }</p>
<p> </p>
<p> if (document.pressed == "선택복사") {</p>
<p> select_copy("copy");</p>
<p> return;</p>
<p> }</p>
<p> </p>
<p> if (document.pressed == "선택이동") {</p>
<p> select_copy("move");</p>
<p> return;</p>
<p> }</p>
<p> </p>
<p> if (document.pressed == "선택삭제") {</p>
<p> if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))</p>
<p> return false;</p>
<p> </p>
<p> f.removeAttribute("target");</p>
<p> f.action = "./board_list_update.php";</p>
<p> }</p>
<p> </p>
<p> return true;</p>
<p>}</p>
<p> </p>
<p>// 선택한 게시물 복사 및 이동</p>
<p>function select_copy(sw) {</p>
<p> var f = document.fboardlist;</p>
<p> </p>
<p> if (sw == "copy")</p>
<p> str = "복사";</p>
<p> else</p>
<p> str = "이동";</p>
<p> </p>
<p> var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");</p>
<p> </p>
<p> f.sw.value = sw;</p>
<p> f.target = "move";</p>
<p> f.action = "./move.php";</p>
<p> f.submit();</p>
<p>}</p>
<p>// 게시판 리스트 관리자 옵션</p>
<p>jQuery(function($) {</p>
<p> $(".btn_more_opt.is_list_btn").on("click", function(e) {</p>
<p> e.stopPropagation();</p>
<p> $(".more_opt.is_list_btn").toggle();</p>
<p> });</p>
<p> $(document).on("click", function(e) {</p>
<p> if (!$(e.target).closest('.is_list_btn').length) {</p>
<p> $(".more_opt.is_list_btn").hide();</p>
<p> }</p>
<p> });</p>
<p>});</p>
<p></script></p>
<p><?php } ?></p>
<p>
답변 1개
구조적으로 살펴봐야 할부분으로 보여지는게
더보기로 가져오는 로직에서
</p>
<pre>
<code>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 ?>"></code></pre>
<p><code>
영역에서 $i 에 해당되는값이 어떻게 처리되는지가 중요할것 같아보이는데요
id="chk_wr_id_<?php echo $i?>" 가 동일하게 적용되어있다면
count($list)로 가져오는값이 0부터 시작되서
가져올때마다 새로 0부터 할당할것같아보이거든요
그리고, 선택수정/삭제를 할때
선택된 항목들이 고유한 값들인지(wr_id)로 판단해봐야겠지만
그값들이 정상적으로 전달후 넘어가지는지
일일이 디버그하면서확인해야 알것같습니다.
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
[code]
$("input[type=checkbox]").on("click", function() {
let chk = $('input[type=checkbox]:checked').length;
console.log(chk);
});
[/code]
위 코드로 확인했을 때 더보기를 누르고 input을 선택하면 input checkbox 에서 체크한 갯수가 오르지않구요..하지만 전체선택을 누르면 또 개수가 오르네요..
그리고 더보기로 나온 게시물들은 value="<?php echo $list[$i]['wr_id'] ?>" 가 안나옵니다..
이럴땐
[code]
$.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,
[/code]
위 코드에 input에 대한 것을 추가해야하나요??