게시판 검색결과 페이지에서 더보기 버튼
본문
이 분의 더보기버튼 스킨을 써서 응용했는데
게시판 검색결과 페이지에서 더보기 버튼을 누르면 검색결과에 해당되지않은 게시물도 같이 보여집니다.
하지만 저는
1, 검색결과 페이지에서 더보기를 눌렀을 때 검색결과만 나오도록 하고
2. 만약 검색결과에 게시물이 없다면 더보기를 없애고싶습니다.
검색해도 나오지 않고 스스로 계속 깨작깨작 만져도 오히려 악화만 될뿐이네요...
혹시 방법을 알려주시면 정말로 감사하겠습니다!
아래는 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">
<h2>게시판 제목</h2>
<!-- 게시판 검색 시작 { -->
<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="20" 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_admin btn" title="관리자"><i
class="fa-solid fa-gear"></i></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 ($is_admin) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i
class="fa-solid fa-pen"></i></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-solid fa-ellipsis-vertical"></i></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) ?>&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?>";
});
});
</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 } ?>
답변 3
검색기능이 원활하려면
검색어 / 조건에 해당하는 값을 더보기의 데이타를 가져오는 로직에 동일하게 맞춰주셔야합니다.
검색을 할때 넘겨주는 정보는
<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 ?>">
들이 있는데
이중에서
더보기에 넘기는 서버호출내용은
$.get("<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&ajax_ck=1&sca=<?php echo urlencode($sca) ?>&page=" +
page_n,
의 내용에 따라
sca 와
page가 있네요
page는 더보기할때마다 증가하게 구성되어있으니
sca와 page를 제외한 나머지를
get parameter방식으로 추가를 하시면 될것같습니다.
게시판 검색결과 페이지에서 더보기 버튼을 누르면 검색결과에 해당되지않은 게시물도 같이 보여집니다......
===
구체적으로 무엇을 검색하신 건가요?
단어 검색인 경우 댓글에 해당 단어가 있을 수 있습니다.
더보기 눌렀을때 페이지 뿐만아니라 검색조건이 안넘어가서 그런거 같습니다.
stx 와 sfl 을 같이 보내시면 되실거 같아요
임시로 이렇게 해보시겠어요?
$.get("<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&ajax_ck=1&sca=<?php echo urlencode($sca) ?>&page=" + page_n + "&sfl=<?=$sfl?>&stx=<?=$stx?>",