다중 검색을 원합니다. 일단 그림참고 해 주세요 > 그누3질답

그누3질답

다중 검색을 원합니다. 일단 그림참고 해 주세요 정보

그누보드 다중 검색을 원합니다. 일단 그림참고 해 주세요

본문

일단 그림을 먼저 봐 주십시오.
그림과 소스를 올렸습니다.
혼자서 지금 몇주째
붙잡고 있는데..

중복 검색을 어떻게 하는 지 좀 알려 주십시오...

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr class="pt9">
<td width="50%">
<? if ($prev_section_href) { echo "<a href='$prev_section_href'><img src='$board_skin/img/sectionprev.gif' border=0 alt='이전검색'></a>"; } ?>
<?=$write_pages?>
<? if ($next_section_href) { echo "<a href='$next_section_href'><img src='$board_skin/img/sectionnext.gif' border=0 alt='다음검색'></a>"; } ?>
</td>

<td width="50%" align="right" valign="bottom">
<? if ($list_href) { echo "<a href='$list_href'><img src='$board_skin/img/list.gif' width='56' height='18' border=0 alt='목록'></a>"; } ?>
<? if ($write_href) { echo "<a href='$write_href'><img src='$board_skin/img/write.gif' width='56' height='18' border=0 alt='글쓰기'></a>"; } ?>
<? if ($is_checkdelete) { ?>
<a href='javascript:all_checked(true);'><img src='<?="$board_skin/img/allchk.gif"?>' border=0 width='19' height='18' alt='전체선택'></a><img  src='<?="$board_skin/img/blank.gif"?>' width='1'><a href='javascript:all_checked(false);'><img src='<?="$board_skin/img/allunchk.gif"?>' border=0 width='19' height='18' alt='선택해제'></a><img  src='<?="$board_skin/img/blank.gif"?>' width='1'><a href='javascript:all_delete();'><img src='<?="$board_skin/img/allchkdel.gif"?>' border=0 width='19' height='18' alt='선택삭제'></a>
<script language='javascript'>
function all_checked(sw)
{
var f = document.frmgblist;

for (var i=0; i<f.length; i++) {
if (f.elements[i].name == 'chk_wr_id[]') {
f.elements[i].checked = sw;
}
}
}

function all_delete()
{
var f = document.frmgblist;
var chk_count = 0;

for (var i=0; i<f.length; i++) {
if (f.elements[i].name == 'chk_wr_id[]' && f.elements[i].checked) {
chk_count++;
}
}

if (!chk_count) {
alert("게시물을 하나 이상 선택하세요.");
return;
}

if (!confirm("선택한 게시물을 정말 삭제 하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다")) {
return;
}

f.submit();
}
</script>
<? } ?>




</td>
</tr>
<tr>
<form name=fsearch method=get action='<?="./$cfg[index]"?>'>
<input type=hidden name=doc value='<?=$doc?>'>
<input type=hidden name=bo_table value='<?=$bo_table?>'>


<input type=hidden name=wr_1    value='<?=$wr_1?>'>
<input type=hidden name=wr_2    value='<?=$wr_2?>'>
<input type=hidden name=wr_3    value='<?=$wr_3?>'>
<input type=hidden name=wr_4    value='<?=$wr_4?>'>



<td height="30"></td>
<td align="right" valign="top"><img src='<?="$board_skin/img/search_ic.gif"?>' width="20" height="18">


<select name=wr_1 value=>
<option value= >년도</option>
<OPTION value=2003>2003</OPTION><OPTION  value=2004>2004</OPTION><option value=2005>2005</option>
        </select>
<select name=wr_2 value=>
<option value= >과목</option>
<OPTION value=국어>국어</OPTION><OPTION  value=과학>과학</OPTION>
        </select>
<select name=wr_3 value=>
<option value= >학년</option>
<OPTION value=중1>중1학년</OPTION><OPTION  value=중2>중2학년</OPTION><OPTION  value=중3>중3학년</OPTION>
        </select>
<select name=wr_4 value=>
<option value= >출판사</option>
<OPTION value=교학(배)>교학(배)</OPTION><OPTION  value=두산동아>두상동아</OPTION>
        </select>


<select name=soperator>
            <option value='0'>OR</option>
            <option value='1'>AND</option>
        </select>

       
<input type=image src='<?="$board_skin/img/search.gif"?>' width='56' height='18' border=0 alt='검색' align='absmiddle'>

       
</td>
</form>
</tr>
</table>

<? if ($stext) { ?>
    <script language='JavaScript'>
        if ('<?=$sselect?>' == 'ca_id') {
            document.fcategory.ca_id.value = '<?=$stext?>';
            document.fsearch.stext.value = '';
        } else {
            document.fsearch.sselect.value  = '<?=$sselect?>';
            document.fsearch.soperator.value = '<?=(int)$soperator?>';
        }
    </script>
<? } ?>

댓글 전체

음...예제 만들어서 하는 답변은 시간도 그렇고..암튼 잘 안하는 편인데..^^;
간단히 예제를 들어보겠습니다..
* 그리고 중요한건 그누보드는 엔진에서 검색펑션을 따로 사용합니다.  따라서 아래 예제를 gblist 에서 사용하되, 검색으로 넘어올 경우로 조건을 붙여서 사용하시면 됩니다..즉, 검색으로 넘어오면 아래 쿼리문을 사용하고 아니면 기존의 원래있는 쿼리문을 사용하는 방식으로 하세요.  아니면 엔진 펑션을 수정하거나 변수를 하나주고 체크해서 따로 펑션을 만들어서 사용해야 합니다.  직접 하시긴 힘들것 같구요. 

// 게시판에 등록된 게시글 카운트 가져오기
$sql = " select count(*) from 테이블명 ";
$row = sql_fetch($sql);
$total_count = $row[0];

$rows = $cfg[list_rows];                          // 페이지당 출력할 목록 수
$total_page  = ceil($total_count / $rows);  // 무조건 반올림하여 페이지수 맞추고..
if ($page == "") $page = 1;                        // 페이지가 없으면 1부터..
$from_record = ($page - 1) * $rows;        // 몇 번째부터 가져와야 하는가..

// 예 - 년도=2000, 과목=국어, 학년=6학년, 출판사=크라운  ** $stext 는 필요없네요..검색구문을 안쓰니.. **
// 실제 검색에 사용할 쿼리 및 게시판에 뿌려줄 목록 가져오기 쿼리..
$sql2 = " select * from 테이블명 ";

** 여기에서 wr_1 만 해도되며, 정확히 체크하고싶다면 if($wr_1 && wr_2 && wr_3 && wr_4) 이렇게해도 되며, 처음검색버튼을 누를때 스크립트를 하나만들어서 검색항목들을 다 선택했는지 체크하고 넘겨도 됩니다.

// 검색이면  wr_1 ~ wr_4 까지는 본인이 사용한 검색 필드명입니다.
** 중요 : 항목이 많을 경우는 찾기(INSTR)로 하지말고 그냥 조건에 맞게 갖고오는게 좋습니다. 2가지 예제를 들어보겠습니다.
1. 검색형식으로 갖고오기(쿼리문이 맞나 모르겠네요.  복수검색은 잘 안써서..테스트를 못해봤습니다..)
if($wr_1){
  $sql2 .= " where INSTR(LOWER(wr_1),  LOWER('$wr_1')) > 0 and INSTR(LOWER(wr_2), LOWER('$wr_2') > 0 and INSTR(LOWER(wr_3), LOWER('$wr_3') > 0 and INSTR(LOWER(wr_4), LOWER('$wr_4') > 0  ";
}

2. 조건에 맞는 기준으로 갖고오기 (이 방법이 더 좋을듯 합니다.)
if($wr_1){
  $sql2 .= " where wr_1='$wr_1' and wr_2='$wr_2' and wr_3='$wr_3' and wr_4='$wr_4' ";
    $course_sql .= " order by pid desc ";
}
$sql2 .= " order by 정렬하고싶은 방식 ";
$sql2 .= " limit $from_record, $rows ";
$result = sql_query($sql2);

위처럼 바꾸고 약 93번째 라인쯤? 에 보면 배열로 갖고오는 쿼리가 있죠...거기에서는 $result 로 갖고 오니까 아래는 수정하지 않아도 됩니다.

그럼 이만..
쩝...참 힘들게 하시는군요..
검색 셀렉트박스의 value 에 처음인덱스가 아닌 선택값에 특정값을 주고, 이 부분의 폼의 메서드를 post로 넘겨서 같은 페이지에서 받으세요.(같은 페이지에서 받도록 되어있죠)
게시판이라면 gblist.php 에서 받아서 스킨리스트 페이지에서 뿌려주죠.. 그리고 검색 셀렉트박스에서 검색값이 있을때만 넘기도록 스크립트하나 만들어주면 되겠죠..(셀렉트 박스의 첫번째 인덱스에는 값을주지 않거나 스크립트에서 selectedIndex == 0  <- 이걸로 체크하면 되겠군요.)

예를 들어 년도=2000 이고, 과목=국어 이고, 학년=6학년 이고, 출판사=크라운 이라고 가정하고(중요 - db에는 이미 이 부분에 대한 컬럼값들이 있어야 합니다), 검색을 눌렀을때 post 로 넘어오는 값을 받아보죠..

$sql = 게시판 테이블 쿼리문( 예 - select * from $bo_table )

if($wr_1){  // 검색이라면 - 이 부분의 코딩은 수정된 검색에 사용하도록 추가해야 하겠죠.
그리고 이 부분은 여러형태로 검색여부값을 넘겨서 체크할수 있으니 편한방법으로 넘기세요..
  $sql .= " where INSTR(LOWER(년도필드명), LOWER('$년도')) > 0 and 과목...학년...출판사... ";
}

** 만약 중복 쿼리문과 같은 문제가 생긴다면 위의 쿼리문과 결과를 뽑아오는 $result 에 해당하는 변수명을 별도로 해서 조건문을 사용하여 검색인경우와 아닌 경우를 구분해서 결과를 뽑으면 됩니다.

음..오늘은 시간이 좀 남으니까 게시판에 한번씩 들어오게 되는군요..쩝..시간남으면 굶는다는 얘긴데..ㅡㅡ;
전체 9,564
그누3질답 내용 검색

회원로그인

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