[그누보드4]게시판 리스트에 간단히 다중검색, 멀티검색,복수검색, 여러개 검색을 로직파일 변경없이 스킨자체적으로 가능하도록 합니다. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

[그누보드4]게시판 리스트에 간단히 다중검색, 멀티검색,복수검색, 여러개 검색을 로직파일 변경없이 스킨자체적으로 가능하도록 합니다. 정보

[그누보드4]게시판 리스트에 간단히 다중검색, 멀티검색,복수검색, 여러개 검색을 로직파일 변경없이 스킨자체적으로 가능하도록 합니다.

첨부파일

lib.zip (3.6K) 882회 다운로드 2012-11-29 18:08:48

본문

=====================================================================
스킨으로 제작완료 스킨링크주소 : http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=140325
=====================================================================

이미지 위와 같이 다중검색, 멀티검색, 복수검색 가능하도록 합니다.

멀티검색의 조건은 wr_1 ~ wr_10 여분필드에 설정해놓으신 값들의 대한 다중검색입니다.

보통 /bbs/list.php 를 변경해야지만, 가능한 일이나, 그누보드 로직파일을 변경하지 않고,

스킨 디렉토리에 한개의 파일을 인클루드 하는 것만으로 다중검색가능하도록 해보았습니다.

일단,

첨부되어있는 파일의 위치를 쓰고자하는 스킨 디렉토리 내부에 두도록 해야합니다.

만약 basic 스킨을 쓴다면 "/skin/board/basic/lib/skin.lib.php" <-- 요렇게 위치되도록 합니다.

그러고 나서 스킨폴더 구성파일 중 list.skin.php 와 view.skin.php 두개 파일 내용중 최상위에 인클루드 하면 됩니다.
 
include_once("$board_skin_path/lib/skin.lib.php");


그러고 보통 list.skin.php 에 내용중 검색 서치 폼의 소스를 보면 (basic 기준으로)


<!-- 검색 -->
    <div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        <select name="sfl">
            <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="검색어" required value='<?=stripslashes($stx)?>'>
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>

위와 같이 소스가 되어있는데요. 여기에 만약에 wr_1 에 연락처를 검색 조건에 넣고 싶다면 그냥 input 폼 name을 wr_1로만 해놓으시면 됩니다. 다만, 검색어에 필수 입력값 "required"를 빼셔야, 검색어 없이 썼을때 검색, 폼 전송(submit) 되실겁니다.

아래의 소스는 연락처를 추가한 검색입니다.

<div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        연락처 : <input type="text" name="wr_1" value='<?=$_GET[wr_1]?>'>
        <select name="sfl">
            <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)?>'>
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>

여기에다가 예를 들어 wr_2 를 회사명으로 하고, 검색폼에 또 추가하고 싶다면 또 아래와 같이 하시면 됩니다.

<div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        연락처 : <input type="text" name="wr_1" value='<?=$_GET[wr_1]?>'>
        회사명 : <input type="text" name="wr_2" value='<?=$_GET[wr_2]?>'>
        <select name="sfl">
            <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)?>'>
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>



1. 첨부된 파일 다운받아, 해당 스킨안에 업로드한다.
(  basic 스킨 사용시 위치 : /skin/board/basic/lib/skin.lib.php )

2. list.skin.php, view.skin.php 의 최상단에

//==============================================
include_once("$board_skin_path/lib/skin.lib.php");
//==============================================

입력한다

3. list.skin.php 에 해당 wr_1~wr_10 검색 하고자 하는 name명을 가진 input박스 타입이 text든, select든 checkbox 든 다 상관없이, 입력한다. 단 stx 에 "required"는 제외 시킨다. (위 소스 참조)


단 주의할 점은,,,,

list 쿼리를 다시 한번더 해서 검색하므로, 엄청 많은 데이터가 존재하는 게시판에서는 속도 저하가 발생 할 수있습니다.
추천
11

댓글 19개

성별 컬럼명이 wr_5 일경우 아래와 같이 하면됩니다.

<!-- 시작 -->
<?
$wr_5_arr =
array(
"전체",
"남성",
"여성"
);
?>
<?for($i = 0; $i < count($wr_5_arr);$i++){?>
<label><input type="radio" name="wr_5" value="<?=$wr_5_arr[$i]?>" >&nbsp;<?=$wr_5_arr[$i]?></label>
<? }?>
 <script>$('input:radio[name=wr_5]:input[value="<?=$_GET[wr_5]?>"]').attr("checked", true);</script>
</script>
<!-- 끝 -->
<!-- 시작 -->
<?
$mb_sex_arr =
array(
"전체",
"M",
"F"
);
?>
<?for($i = 0; $i < count($mb_sex_arr);$i++){?>
<label><input type="radio" name="wr_sex" value="<?=$mb_sex_arr[$i]?>" >&nbsp;<?=$mb_sex_arr[$i]?></label>
<? }?>
 <script>$('input:radio[name=mb_sex]:input[value="<?=$_GET[bm_sex]?>"]').attr("checked", true);</script>
</script>
<!-- 끝 -->
이래도 될수 있을까요 ?
<?
$mb_sex_arr =
array(
"전체",
"M",
"F"
);
?>
<?for($i = 0; $i < count($mb_sex_arr);$i++){?>
<label><input type="radio" name="wr_sex" value="<?=$mb_sex_arr[$i]?>" >&nbsp;<?=$mb_sex_arr[$i]?></label>
<? }?>
 <script>$('input:radio[name=wr_sex]:input[value="<?=$_GET[wr_sex]?>"]').attr("checked", true);</script>
</script>
<!-- 끝 -->

이렇게 하셔야 할듯 하네요,
붉은바람님 좋은자료,좋은팁 감사를 드립니다.

추천 도장도 쾅!!! 찍었습니다^^*

말씀하신 내용 

저는 세내기여서 어떻게 하는건지 도무지 모르겠습니다.

그러나 제가 찾고있었던 것이어서 완성해보고 싶은데 어떻게 해야할지 통~ 모르겠네요ㅜ.ㅜ

배추스킨사이트에도 요청도 해놓은 상태이지만
http://g4.miwit.com/bbs/board.php?bo_table=g4_qna&wr_id=48893

초보여서 꼭! 붉은바람님께서 그림으로 캡쳐해주신것처럼
만들고 싶은데 잘~ 안됩니다.
list부분, view부분, write 부분 등등 수정해야 할텐데.......막막합니다....ㅜ.ㅜ;

팁자료실에 설명 잘~ 해주셨는데...
name명을 가진 input박스 타입이 text든, select든 checkbox  예제 부분과 샘플로
되어있는 부분이 있으시면 첨부해주시면 너무 감사드려요
성별 부분에서는 첨부하여 주셔서 그렇게 적용을 해보고 있는데요..

세내기 수준에서 다시한번 상세하게 설명부탁드려요.

그리고  고수님들도 이글 보시고 추가로 자세하게 세내기 수준으로 설명좀 부탁드려요...ㅜ.ㅜ

염치없이 요청드려죄송합니다. 감사합니다 [꾸벅]
순정 그누보드면 알려드릴수있는데 배추스킨은 저는 안써봐서, 잘 모르겠네요.

 제가 올려놓은 스킨은

순정 그누보드에 한해서 입니다;
검색어 포함되었을때는 검색이 되질 않네요. 전체 검색어가 매치 되야 검색이 됩니다.
예를 들어 wr_1이 "경기도 성남시 중원구 한빛 아파트" 일 경우 경기도 혹은 성남시 이런 검색어로는 검색이 되질 않네요. "경기도 성남시 중원구 한빛 아파트" 를 다 넣줘야 검색이 됩니다. 원래 그런가요?
skin.lib.php에 42번째줄에 아래의 소스를
$str = append_sql($str, " and ", " {$search_arr[name][$j]}  = '{$search_arr[val][$j]}' ");

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
$str = append_sql($str, " and ", " {$search_arr[name][$j]}  like '%{$search_arr[val][$j]}%' ");

이렇게 like 검색되서 나올거에요
안녕하세요! 올려주신 팁 잘 사용하고 있는데요
날짜검색도 같이 하려고하면 어떻게 해야 하나요 ?
wr_10 에 날짜가 들어있다고 한다면..
기간검색을 하고 싶은데요..
알려주시면 안될까요??
구인게시판 같은 곳에서
성별 남자를 검색하면
남자와 무관이 동시에 나타나는데
이는 어떻게 나타내면 좋을까요 ㅠㅜa
$ex10_filed = explode("|",$write[wr_10]);
$ext10_00  = $ex10_filed[0];
$ext10_01  = $ex10_filed[1];
$ext10_02  = $ex10_filed[2];
$ext10_03  = $ex10_filed[3];
$ext10_04  = $ex10_filed[4];
$ext10_05  = $ex10_filed[5];
$ext10_06  = $ex10_filed[6];
$ext10_07  = $ex10_filed[7];
$ext10_08  = $ex10_filed[8];
$ext10_09  = $ex10_filed[9];

wr_1 ~ wr_10까지 잘 되고 있습니다.
그런데 위의 경우처럼 ext10_00 에서만 검색을 하려면 어떻게 해야하나요.

감사합니다.
두번쿼리가 단점이긴 하네요

두번쿼리가 부담인사람들을 위해
리스트 파일을 하나더 만들어 주실 의향은 없으시옵니까?
원본은 백업하고 덮어쓰도록요.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT