카테고리를 두개(다단계)이상 만들어서 검색하는 방법? > 그누3질답

그누3질답

카테고리를 두개(다단계)이상 만들어서 검색하는 방법? 정보

그누보드 카테고리를 두개(다단계)이상 만들어서 검색하는 방법?

본문

위 그림을 보시면 아시겠지만,
게시판 옵션필드중에 'wr_2' 필드를 이용해서 <select>문을 하나 더 만들었습니다.
기존의 분류옵션은 '1학년,2학년,3학년'으로 구분하고
추가 wr_2 필드를 분류카테고리 모양으로 만들어서 '국어,영어,수학,과학'.. 이런식으로
입력시킵니다.

뷰화면이나 입력처리화면은 그냥 그런대로 이상이 없는데,
리스트화면에서 위처럼 구현을 하려고 합니다.

조건은...
먼저 '카테고리1'을 선택하고 '카테고리2'를 선택하면 두조건을 만족하는
게시물만 보여지도록 하고싶은데 방법을 모르겠군요.

위 두개의 셀렉트문을 선택하고하고 뒤에 '검색버튼'을 만들어서 게시물조회를 해도 상관없고
아니면 '카테고리1' 선택 -> '카테고리2' 선택하면 바로 해당 조건에 맞는 게시물이 바로 출력되도록 해도 상관은 없습니다.

어느방법이던.... 위 방법을 구현해보셨거나 또는 팁을 아시는분의 도움을 좀 구합니다.
위는 그냥 그림으로 만들었고, 아직 어떻게 고쳐야 할지를 몰라서 구현을 못하고 있습니다.
옵션필드가 궂이 아니어도 상관은 없으므로 ..... 구현방법에 대해서 도움을 좀 구합니다.

문제가 해결된다면 '본스킨'은 다양하게 응용하실분들을 위해서
제가 만들어서 공개토록 하겠습니다.
좀 도와주십시요.

꼭 좀 도와주세요~

댓글 전체

이런이런.. 또 실수를.. 위 소스는 wr_1을 추출한 예입니다. wr_2는
         
 case "wr_option" :
                $str .= " (wr_2 like '%$s[$i]%' or ca_id like '%$s[$i]%') ";
                break;

이렇게 바꿔서 넣어주세요.. 제가 정신이 좀 엄써서..  --;;
lib/gnuboard.lib.php 파일의 160번째 라인쯤에 추가하세요.

 // 검색어를 구분자로 나눈다. 여기서는 공백
        ..중략..
            case "wr_num" :
                $str .= " ($field = ".((-1)*$s[$i]).") ";
                break;

// wr_1과 ca_id를 한꺼번에 조회하는 경우 다음 3줄 추가.
            case "wr_option" :
                $str .= " (wr_1 like '%$s[$i]%' or ca_id like '%$s[$i]%') ";
                break;

            default :
                //$str .= " ($field like '%$s[$i]%') ";
                // 3.36

다음으로는 스킨의 리스트 파일(gblist.skin.php)에서 검색부분을 삭제하고,
아래소스를 긁어서 search.php라고 이름지은 후 삭제했던 부분에 인클루드 시킵니다.

//search.php
<SCRIPT LANGUAGE="JavaScript">
function change_keyword_option_list(form) {
    form.stext.options.length=0;
    var func_name="keyword_option_for_";
    func_name += form.sch.options[form.sch.selectedIndex].value;
    func_name += "(form)";
    eval(func_name);
}

// ca_id=1
function keyword_option_for_sc(form) {
    form.stext.options[0] = new Option("전체","1");
    form.stext.options[1] = new Option("국어","1 국어");
    form.stext.options[2] = new Option("수학","1 수학");
    form.stext.options[3] = new Option("영어","1 영어");
    form.stext.options[4] = new Option("과학","1 과학");
    form.stext.options[5] = new Option("한문","1 한문");



// ca_id=2
function keyword_option_for_sn(form) {
    form.stext.options[0] = new Option("전체","2");
    form.stext.options[1] = new Option("국어","2 국어");
    form.stext.options[2] = new Option("수학","2 수학");
    form.stext.options[3] = new Option("영어","2 영어");
    form.stext.options[4] = new Option("과학","2 과학");
    form.stext.options[5] = new Option("한문","2 한문");



// ca_id=3
function keyword_option_for_ss(form) {
    form.stext.options[0] = new Option("전체","3");
    form.stext.options[1] = new Option("국어","3 국어");
    form.stext.options[2] = new Option("수학","3 수학");
    form.stext.options[3] = new Option("영어","3 영어");
    form.stext.options[4] = new Option("과학","3 과학");
    form.stext.options[5] = new Option("한문","3 한문");

 
// 전체 카테고리에서 검색
function keyword_option_for_sh(form) {
    form.stext.options[0] = new Option("국어","국어");
    form.stext.options[1] = new Option("수학","수학");
    form.stext.options[2] = new Option("영어","영어");
    form.stext.options[3] = new Option("과학","과학");
    form.stext.options[4] = new Option("한문","한문");
}
</SCRIPT>

  <form name=fsearch method=get action='<?="./"?>'>   
  <input type=hidden name=doc value='<?=$doc?>'>   
  <input type=hidden name=bo_table value='<?=$bo_table?>'>
  <input type=hidden name=soperator value='1'>
  <input type=hidden name=sselect value='wr_option'>

<SELECT NAME="sch" SIZE="1" WIDTH="500" onChange="change_keyword_option_list(this.form);">
<OPTION VALUE="">분류</OPTION>
<OPTION VALUE="sc">1학년</OPTION>
<OPTION VALUE="sn">2학년</OPTION>
<OPTION VALUE="ss">3학년</OPTION>
</SELECT>

<b>→</b>

<SELECT NAME="stext" SIZE="1" WIDTH="500">
<OPTION>학년을 먼저선택하세요</OPTION>
</SELECT>
   
<input type=image src='<?="$board_skin/search.gif"?>' border=0 alt='검색' align=absmiddle>
</form>

이렇게 하시면 원하시는대로 검색이 가능하리라 생각됩니다.
참고로 위 예는 카테고리를 3개로 설정한 경우입니다.
아, 그리고 gnuboard.lib.php  이 파일 수정 후 bak파일은 삭제해 주셔야 될겁니다.
이거 삭제안하면 오류가 생기던데 제가 아직 그누초보라 그 이유는 잘 모르겠구요.
그리고 위 소스는 제로에서 사용하던 방법을 응용한거라 필요없는 값이 get으로 넘어가는 구질한 모습이 있습니다.
그래도 검색은 제대로 되더라구요.
그누고수님들이 손봐주심 좋을텐데.. ^^;
전체 9,564
그누3질답 내용 검색

회원로그인

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