게시판목록에서 체크박스를 이용한 wr_1값 다중검색
본문
최대한 정돈해서 질문올려봅니다.
시도중인것은 게시판의 목록페이지에서 체크박스를 체크해서 값이 있는 게시물들만 정렬하려고 합니다.
현재 어느정도 되는데 다중체크시 안되고 있어서 질문드려봅니다.
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
제이쿼리로 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>
안녕하세요 아는선에서만 답을 드리면
현 소스로 봐서 리스트를 만들때
쿼리문이 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로 모은후에
값 유무에 따라 쿼리를 완성할것 같습니다..