최대한 정돈해서 질문올려봅니다.
시도중인것은 게시판의 목록페이지에서 체크박스를 체크해서 값이 있는 게시물들만 정렬하려고 합니다.
현재 어느정도 되는데 다중체크시 안되고 있어서 질문드려봅니다.
wr_1에 값들은 '지역명'들이 아래처럼 분할저장됩니다.
서울특별시,경기도,인천광역시,강원도,충청북도,충청남도,대전광역시,세종특별자치시,광주광역시,전라북도,전라남도,경상북도,경상남도,대구광역시,부산광역시,울산광역시,제주특별자치도
아래는 현재 사용중인 코드입니다.
<!---다중검색/-->
<?php echo include_once("/theme/basic/skin/board/free/lib/skin.lib.php"); ?> // [팁자료] https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색
<style>
h3.multi_tit{font-size:110%; padding:20px 0 15px 0; font-weight:800;}
</style>
<div class="board_search">
<form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
<input type="hidden" name="bo_table" value="company_list">
<input type="hidden" name="sca" value="<?=$sca?>">
<h3 class="multi_tit">지역</h3>
<input type="checkbox" name="wr_1" value='서울특별시'> 서울특별시
<input type="checkbox" name="wr_1" value='경기도'> 경기도
<input type="checkbox" name="wr_1" value='인천광역시'> 인천광역시
<input type="checkbox" name="wr_1" value='강원도'> 강원도
<input type="checkbox" name="wr_1" value='충청북도'> 충청북도
<input type="checkbox" name="wr_1" value='충청남도'> 충청남도
<input type="checkbox" name="wr_1" value='대전광역시'> 대전광역시
<input type="checkbox" name="wr_1" value='세종특별자치시'> 세종특별자치시
<input type="checkbox" name="wr_1" value='광주광역시'> 광주광역시
<input type="checkbox" name="wr_1" value='전라북도'> 전라북도
<input type="checkbox" name="wr_1" value='전라남도'> 전라남도
<input type="checkbox" name="wr_1" value='경상북도'> 경상북도
<input type="checkbox" name="wr_1" value='경상남도'> 경상남도
<input type="checkbox" name="wr_1" value='대구광역시'> 대구광역시
<input type="checkbox" name="wr_1" value='부산광역시'> 부산광역시
<input type="checkbox" name="wr_1" value='울산광역시'> 울산광역시
<input type="checkbox" name="wr_1" value='제주특별자치도'> 제주특별자치도
<select name="sfl" class="hidden">
<option value="wr_subject">제목</option>
<option value="wr_content">내용</option>
<option value="wr_subject||wr_content">제목+내용</option>
<option value="mb_id,1">회원아이디</option>
<option value="mb_id,0">회원아이디(코)</option>
<option value="wr_name,1">글쓴이</option>
<option value="wr_name,0">글쓴이(코)</option>
</select>
<input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' style="display:none;">
<!--<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">-->
<input type="submit" value="검색" class="btn_submit" style="padding:10px 20px; background:#fff; color:#5cad04; border:1px solid #5cad04;">
<input type="radio" name="sop" value="and" style="display:none;">
<input type="radio" name="sop" value="or" style="display:none;">
</form>
</div>
<!--/다중검색-->
문제는
체크박스를 하나만 선택하면 잘 검색되는데
두개이상 검색하면 아예 안됩니다.
wr_1[]로 해보라고 하는 팁들도 모두 보고 아래처럼 해봤는데
<input type="checkbox" name="wr_1[]" value='서울특별시'> 서울특별시
<input type="checkbox" name="wr_1[]" value='경기도'> 경기도
<input type="checkbox" name="wr_1[]" value='인천광역시'> 인천광역시
<input type="checkbox" name="wr_1[]" value='강원도'> 강원도
<input type="checkbox" name="wr_1[]" value='충청북도'> 충청북도
<input type="checkbox" name="wr_1[]" value='충청남도'> 충청남도
<input type="checkbox" name="wr_1[]" value='대전광역시'> 대전광역시
<input type="checkbox" name="wr_1[]" value='세종특별자치시'> 세종특별자치시
<input type="checkbox" name="wr_1[]" value='광주광역시'> 광주광역시
<input type="checkbox" name="wr_1[]" value='전라북도'> 전라북도
<input type="checkbox" name="wr_1[]" value='전라남도'> 전라남도
<input type="checkbox" name="wr_1[]" value='경상북도'> 경상북도
<input type="checkbox" name="wr_1[]" value='경상남도'> 경상남도
<input type="checkbox" name="wr_1[]" value='대구광역시'> 대구광역시
<input type="checkbox" name="wr_1[]" value='부산광역시'> 부산광역시
<input type="checkbox" name="wr_1[]" value='울산광역시'> 울산광역시
<input type="checkbox" name="wr_1[]" value='제주특별자치도'> 제주특별자치도
<?
if(is_array($_GET[wr_1])){
$str_wr_1 = implode(",",$_GET[wr_1]);
}
?>
<script>
var str_wr_1 = "<?=$str_wr_1?>";
$("input:checkbox[name='wr_1[]']").each(function(index){
if(str_wr_1.indexOf($(this).val()) > -1){
$(this).attr("checked", true);
}
});
</script>
이렇게하면 문제가
주소창에 주소가 ...&sca=&wr_1%5B%5D=서울특별시&sfl=wr_subject&stx=
이런식으로
%5B%5D 가 생기고 검색이 안되더라구요. 역시 다중체크시에 안되구요.
어디가 문제일까요???
도움 좀 부탁드립니다. ^^
답변 2개 / 댓글 8개
제이쿼리로 check 박스에 넣은 값을 stx input으로 넘겨주면 되지 않을까요?
그누보드5의 다중검색은 sop값이 or이고 검색어들은 스페이스(공백)으로 구분합니다.
이를 활용해서 제이쿼리를 이용하면 될것 같습니다.
1. 아래건 지워주세요.
<?php echo include_once("/theme/basic/skin/board/free/lib/skin.lib.php"); ?>
// [팁자료] https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색
2. 지역 체크박스를 form 바깥으로 꺼내주시고 class wr_1 을 다 추가하시고 name을 wr_1[]로 변경하세요.
<input type="checkbox" name="wr_1[]" value='서울특별시' class='wr_1'> 서울특별시
<input type="checkbox" name="wr_1" value='경기도'> 경기도
<input type="checkbox" name="wr_1" value='인천광역시'> 인천광역시
<input type="checkbox" name="wr_1" value='강원도'> 강원도
<input type="checkbox" name="wr_1" value='충청북도'> 충청북도
<input type="checkbox" name="wr_1" value='충청남도'> 충청남도
<input type="checkbox" name="wr_1" value='대전광역시'> 대전광역시
<input type="checkbox" name="wr_1" value='세종특별자치시'> 세종특별자치시
<input type="checkbox" name="wr_1" value='광주광역시'> 광주광역시
<input type="checkbox" name="wr_1" value='전라북도'> 전라북도
<input type="checkbox" name="wr_1" value='전라남도'> 전라남도
<input type="checkbox" name="wr_1" value='경상북도'> 경상북도
<input type="checkbox" name="wr_1" value='경상남도'> 경상남도
<input type="checkbox" name="wr_1" value='대구광역시'> 대구광역시
<input type="checkbox" name="wr_1" value='부산광역시'> 부산광역시
<input type="checkbox" name="wr_1" value='울산광역시'> 울산광역시
<input type="checkbox" name="wr_1" value='제주특별자치도'> 제주특별자치도
3. 셀렉트는 클래스가 히든인데 감춰져있는거겠죠? 그러면 셀렉트를 지우시고 sfl 값을 wr_1로 고정하세요. 그리고 sop도 or로 바꿔야합니다.
<input type="radio" name="sop" value="and" style="display:none;">
<input type="radio" name="sop" value="or" style="display:none;">
이거 지우시고
<input type="hidden" name="sop" value="or">
<input type="hidden" name="sfl" value="wr_1">
4. 아래 제이쿼리를 추가한다음 체크박스를 체크하고 검색을 해보세요.
<script>
$(document).ready(function(){
$(".wr_1").change(function(){
$(".wr_1").prop("checked"); {
var chk = $("input[name='wr_1[]']:checked").map(function() {
return $(this).val();
}).get().join(" ");
$('input[name=stx]').attr('value',chk);
}
});
});
</script>
답변에 대한 댓글 7개
확인해보시고 추가로 응용하자면 결과가 나왔을때 해당 결과의 체크박스에 체크가 되있게 하실려면
<input type="checkbox" name="wr_1[]" class="wr_1" value='서울특별시' <?php if(strpos($_GET['stx'], "서울특별시") !== false) echo 'checked'; ?>> 서울특별시
<input type="checkbox" name="wr_1[]" class="wr_1" value='인천광역시' <?php if(strpos($_GET['stx'], "인천광역시") !== false) echo 'checked'; ?>> 인천광역시
이런식으로 응용하시는것도 좋을것 같네요.
function fsearchbox_submit(f)
{
에서 뿌려줍니다.
그런데 function fsearchbox_submit(f)가 그누보드 최신버전에서는 전체검색에 사용하는건데
올리신 코드에는
<form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
이걸로 되어있네요. 이건 전체검색에서 사용하는 폼이거든요.
그누보드 최신의 게시판 스킨의 기본은
<form name="fsearch" method="get">
이걸로 되어있습니다. 이내용을 바탕으로 bbs/list.php에서 검색을 처리하거든요.
한번 확인해보셔야 할것 같습니다.
이것을 메인화면에서도 작동하게 하려고 옮겼는데
이때 form은
<form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
게시판을 찾아가서 결과가 보여지잖아요.
근데 이때 다시 메인화면에서 두개이상 선택을 못하네요. 흠...
일단 전체검색을 없애버리니까 작동하긴 하네요. 비슷한 상황의 분들이 참고하시길...
$('input[name=stx]').attr('value',chk); 이걸
$('input[class=search_input]').attr('value',chk);
이렇게 바꾸시고
stx 인풋에 class="search_input" 를 추가해주면 전체검색에는 값이 추가가 안될겁니다.
<input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' style="display:none;" class="search_input">
님의 가르침으로 검색이 조금씩 되가고 있습니다. 아래것만 해결하면 소원이 없겠네요 ^^
https://sir.kr/qa/322639?sfl=mb_id%2C1&lstx=route7
안녕하세요 아는선에서만 답을 드리면
현 소스로 봐서 리스트를 만들때
쿼리문이 where wr_1 =서울특별시 and wr_1 =부산광영식 식이거나
또는 체크값중 맨 밑에 있는 wr_1만 검색을 하거나 할겁니다...
서울도 찾고 부산도 값을 찾아야 되면
where (wr_1 = 서울특별시 or wr_1 =부산광역시) 형태로 나오겠금 쿼리가 만들어져야 하겠죠
get 으로 다중검색을 할때 하나의 값으로 or 처리하는 법은 저도모르겠습니다.
저 같은경우는 wr_1_1 로 wr_1_2 wr_1_3 형태로 해서 list쪽에서 wr_1로 모은후에
값 유무에 따라 쿼리를 완성할것 같습니다..
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.