그누보드5 다중검색 기능.. 도와주세요..
본문
정상적으로 글쓰기에서 체크박스 및 셀렉트박스로 글쓰기를 완료하면 wr_값으로 리스트에 뿌려지도록 만들었습니다.
리스트에서 파견가능 지역(wr_5), 근무형태(wr_4)를 체크하면 리스트에 그 값을 가지고 있는 게시물만 보일 수 있도록 검색기능을 만들려고 합니다..
list.skin.php
<div class="board_search">
<div class="write_wrap">
<form id="fsearch" name="fsearch" method="get">
<table>
<tbody>
<tr>
<th scope="row"><label for="wr_4">근무형태</label></th>
<td colspan="3">
<?php
$check1 = explode(",", $write['wr_4']);
?>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work1" value="파견"<?php echo in_array("파견", $check1) ? ' checked=""' : '' ?>>
<label for="work1">파견</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work2" value="정규직"<?php echo in_array("정규직", $check1) ? ' checked=""' : '' ?>>
<label for="work2">정규직</label></span>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work3" value="재택"<?php echo in_array("재택", $check1) ? ' checked=""' : '' ?>>
<label for="work3">재택</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work4" value="반상주"<?php echo in_array("반상주", $check1) ? ' checked=""' : '' ?>>
<label for="work4">반상주</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work5" value="해외파견"<?php echo in_array("해외파견", $check1) ? ' checked=""' : '' ?>>
<label for="work5">해외파견</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check1[]" id="work6" value="기타"<?php echo in_array("기타", $check1) ? ' checked=""' : '' ?>>
<label for="work6">기타</label>
</span>
</td>
<th scope="row"><label for="wr_1">경력</label></th>
<td>
<div class="write_div sel_box">
<select name="wr_1" id="wr_1" class="sel_box_btn">
<option value="">경력</option>
<option value="1년"<?php echo ($write['wr_1'] == "1년") ? " selected" : "";?>>1년</option>
<option value="2년"<?php echo ($write['wr_1'] == "2년") ? " selected" : "";?>>2년</option>
<option value="3년"<?php echo ($write['wr_1'] == "3년") ? " selected" : "";?>>3년</option>
<option value="4년"<?php echo ($write['wr_1'] == "4년") ? " selected" : "";?>>4년</option>
<option value="5년"<?php echo ($write['wr_1'] == "5년") ? " selected" : "";?>>5년</option>
<option value="6년"<?php echo ($write['wr_1'] == "6년") ? " selected" : "";?>>6년</option>
<option value="7년"<?php echo ($write['wr_1'] == "7년") ? " selected" : "";?>>7년</option>
<option value="8년"<?php echo ($write['wr_1'] == "8년") ? " selected" : "";?>>8년</option>
<option value="9년"<?php echo ($write['wr_1'] == "9년") ? " selected" : "";?>>9년</option>
<option value="10년"<?php echo ($write['wr_1'] == "10년") ? " selected" : "";?>>10년</option>
<option value="11년"<?php echo ($write['wr_1'] == "11년") ? " selected" : "";?>>11년</option>
<option value="12년 이상"<?php echo ($write['wr_1'] == "12년 이상") ? " selected" : "";?>>12년 이상</option>
</select>
</div>
</td>
</tr>
<tr>
<th scope="row"><label for="wr_5">파견가능지역</label></th>
<td colspan="5">
<?php
$check2 = explode(",", $write['wr_5']);
?>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area1" value="서울"<?php echo in_array("서울", $check2) ? ' checked=""' : '' ?>>
<label for="area1">서울</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area2" value="경기"<?php echo in_array("경기", $check2) ? ' checked=""' : '' ?>>
<label for="area2">경기</label></span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area3" value="인천"<?php echo in_array("인천", $check2) ? ' checked=""' : '' ?>>
<label for="area3">인천</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area4" value="부산"<?php echo in_array("부산", $check2) ? ' checked=""' : '' ?>>
<label for="area4">부산</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area5" value="광주"<?php echo in_array("광주", $check2) ? ' checked=""' : '' ?>>
<label for="area5">광주</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area6" value="대전"<?php echo in_array("대전", $check2) ? ' checked=""' : '' ?>>
<label for="area6">대전</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area7" value="울산"<?php echo in_array("울산", $check2) ? ' checked=""' : '' ?>>
<label for="area7">울산</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area8" value="대구"<?php echo in_array("대구", $check2) ? ' checked=""' : '' ?>>
<label for="area8">대구</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area9" value="세종"<?php echo in_array("세종", $check2) ? ' checked=""' : '' ?>>
<label for="area9">세종</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area10" value="강원"<?php echo in_array("강원", $check2) ? ' checked=""' : '' ?>>
<label for="area10">강원</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area11" value="충남"<?php echo in_array("충남", $check2) ? ' checked=""' : '' ?>>
<label for="area11">충남</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area12" value="충북"<?php echo in_array("충북", $check2) ? ' checked=""' : '' ?>>
<label for="area12">충북</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area13" value="경남"<?php echo in_array("경남", $check2) ? ' checked=""' : '' ?>>
<label for="area13">경남</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area14" value="경북"<?php echo in_array("경북", $check2) ? ' checked=""' : '' ?>>
<label for="area14">경북</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area15" value="전남"<?php echo in_array("전남", $check2) ? ' checked=""' : '' ?>>
<label for="area15">전남</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area16" value="전북"<?php echo in_array("전북", $check2) ? ' checked=""' : '' ?>>
<label for="area16">전북</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area17" value="제주도"<?php echo in_array("제주도", $check2) ? ' checked=""' : '' ?>>
<label for="area17">제주도</label>
</span>
<span class="work_checkbox">
<input type="checkbox" name="check2[]" id="area18" value="해외"<?php echo in_array("해외", $check2) ? ' checked=""' : '' ?>>
<label for="area18">해외</label>
</span>
</td>
</tr>
</tbody>
</table>
<fieldset id="bo_sch">
<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">
<label for="sfl" class="sound_only">검색대상</label>
<select name="sfl" id="sfl" class="sel_box_btn">
<?php echo get_board_sfl_select_options($sfl); ?>
</select>
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
<button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
</fieldset>
</form>
</div>
</div>
지금까지 리스트 영역에서 만진거는 지금 코드가 끝입니다..
다중검색 기능을 하려면 어케해야하는지 알려주시면 감사드리겠습니다..
체크박스 및 셀렉트박스만 선택하고 검색버튼을 누르면
bbs/board.php?check1%5B%5D=재택&wr_1=6년&check2%5B%5D=충북&bo_table=bbs1&sca=&sop=and&sfl=wr_subject&stx=
이렇게 출력되고 있습니다...
검색결과는 리스트 페이지 첫화면 그대로 나오고 있고요..
아 write.skin.php에서 저 체크박스 폼을 그대로 사용하고 있습니다.
!-->
답변 3
1. 우선 선택한값 가져오시구요
$check1 = isset($_GET['check1']) ? $_GET['check1'] : array();
$check2 = isset($_GET['check2']) ? $_GET['check2'] : array();
$wr_1 = isset($_GET['wr_1']) ? $_GET['wr_1'] : '';
2. 그리고 체크된 값을 가지고있는 게시물 검색
$postCheck1 = explode(",", $post['wr_4']);
$postCheck2 = explode(",", $post['wr_5']);
3. 게시판에 선택된값과 일치한게 있는지 확인
$filteredPosts = array_filter($posts, function($post) use ($check1, $check2, $wr_1) {
$postCheck1 = explode(",", $post['wr_4']);
$postCheck2 = explode(",", $post['wr_5']);
4. 위에 값들을 처리
$filteredPosts = array_filter($posts, function($post) use ($check1, $check2, $wr_1) {
return $check1Match && $check2Match && $wr_1Match;
}
5. 그리고 결과물 표시
foreach ($filteredPosts as $post) {
목록 ~~~
https://sir.kr/bbs/board.php?bo_table=g4_skin&wr_id=140325
https://sir.kr/bbs/board.php?bo_table=g4_skin&wr_id=143379
https://sir.kr/g4_tiptech/30754
이 링크에 답이 있을것 같네요..
참고하세요..
검색어로 넘어온 배열 값을 풀어서 or 조건으로 검색하신다고 생각하시면 될거에요.