체크박스 검색 문의 드립니다. (급! 재질문) 정보
체크박스 검색 문의 드립니다. (급! 재질문)
본문
안녕하세요.
체크박스를 사용하여 list 페이지에서 검색하는 방법을 문의드리고자 합니다.
몇차례 질문을 올렸던 카테고리 중복선택을 포기하고, 다른 방법을 택하여 유사한 결과를 내고자 하였습니다.
1) 첨부 이미지처럼 분류를 체크박스에 중복체크하여 DB에 저장을 시킵니다.
2) 보기페이지 (view.skin.php)에서는 체크한 값이 정상적으로 표시가 됩니다. (정상적으로 저장이 된 것이지요)
3) 리스트페이지 (list.skin.php)에서 체크박스에 체크를 하고 검색을 하면, 맨 마지막에 체크된 값만 검색이 되고 있습니다.
예를 들어, 분류 1, 분류 3, 분류 4를 체크하면 분류 4만 검색이 되는 것이지요.
4) 분류 1, 분류 3, 분류 4를 체크했을 때, 분류 1, 분류 3, 분류 4에 '모두' 해당하는 결과값이 검색되려면 어떻게 해야하는 것인지요??
<form name="fsearch" method="get">
<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_00';"> 분류 1</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_01';"> 분류 2</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_02';"> 분류 3</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_03';"> 분류 4</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_04';"> 분류 5</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_05';"> 분류 6</td>
</tr>
</table>
<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="right">
<input type="hidden" name="sop" value="and">
</form>
그럼, 다시 답변을 기다려 봅니다. 감사합니다.
체크박스를 사용하여 list 페이지에서 검색하는 방법을 문의드리고자 합니다.
몇차례 질문을 올렸던 카테고리 중복선택을 포기하고, 다른 방법을 택하여 유사한 결과를 내고자 하였습니다.
1) 첨부 이미지처럼 분류를 체크박스에 중복체크하여 DB에 저장을 시킵니다.
2) 보기페이지 (view.skin.php)에서는 체크한 값이 정상적으로 표시가 됩니다. (정상적으로 저장이 된 것이지요)
3) 리스트페이지 (list.skin.php)에서 체크박스에 체크를 하고 검색을 하면, 맨 마지막에 체크된 값만 검색이 되고 있습니다.
예를 들어, 분류 1, 분류 3, 분류 4를 체크하면 분류 4만 검색이 되는 것이지요.
4) 분류 1, 분류 3, 분류 4를 체크했을 때, 분류 1, 분류 3, 분류 4에 '모두' 해당하는 결과값이 검색되려면 어떻게 해야하는 것인지요??
<form name="fsearch" method="get">
<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_00';"> 분류 1</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_01';"> 분류 2</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_02';"> 분류 3</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_03';"> 분류 4</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_04';"> 분류 5</td>
<td><input type="checkbox" onClick="this.form.sfl.value='wr_7';this.form.stx.value='info_05';"> 분류 6</td>
</tr>
</table>
<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="right">
<input type="hidden" name="sop" value="and">
</form>
그럼, 다시 답변을 기다려 봅니다. 감사합니다.
댓글 전체
wr_7에 .. 3가지를 선택했을때 db에 어떻게 저장되는지는 알아야 될듯 싶군요.
그리고 그누에서 1필드에서는 1개만 검색되며, 기본적으로 검색관련 엔진을 새로 설계해야 합니다.
(조금 많이 고쳐야 합니다..... 프로그래머가 아니면 의뢰 하십시오)
그리고 그누에서 1필드에서는 1개만 검색되며, 기본적으로 검색관련 엔진을 새로 설계해야 합니다.
(조금 많이 고쳐야 합니다..... 프로그래머가 아니면 의뢰 하십시오)

새로운나라님, 고맙습니다.
write.ski.php에서는 아래처럼,
<? $info_exp=explode("|" , $write[wr_7]) ?>
<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td><input type=checkbox name='info_00' value="info_00" <?if($info_exp[0]):?> checked<?endif;?>>분류 1</td>
<td><input type=checkbox name='info_01' value="info_01" <?if($info_exp[1]):?> checked<?endif;?>>분류 2</td>
<td><input type=checkbox name='info_02' value="info_02" <?if($info_exp[2]):?> checked<?endif;?>>분류 3</td>
...
이렇게 값을 넘기고
write_update.ski.php에서는 아래와 같이 처리하고 있습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$wr_7 = "$info_00|$info_01|$info_02|$info_03|$info_04|$info_05|$info_06|";
$sql7 = " update $write_table set wr_7 = '$wr_7' where wr_id = '$wr_id' ";
sql_query($sql7);
?>
write.ski.php에서는 아래처럼,
<? $info_exp=explode("|" , $write[wr_7]) ?>
<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td><input type=checkbox name='info_00' value="info_00" <?if($info_exp[0]):?> checked<?endif;?>>분류 1</td>
<td><input type=checkbox name='info_01' value="info_01" <?if($info_exp[1]):?> checked<?endif;?>>분류 2</td>
<td><input type=checkbox name='info_02' value="info_02" <?if($info_exp[2]):?> checked<?endif;?>>분류 3</td>
...
이렇게 값을 넘기고
write_update.ski.php에서는 아래와 같이 처리하고 있습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$wr_7 = "$info_00|$info_01|$info_02|$info_03|$info_04|$info_05|$info_06|";
$sql7 = " update $write_table set wr_7 = '$wr_7' where wr_id = '$wr_id' ";
sql_query($sql7);
?>
일단 검색 부분은 답은 없구요 (새로설계해야 함)
본문보기는... 출력하는 부분에서 explode로 잘라서...
해당값이 있으면 checkbox에 checked 하는 javascript를 작성하거나,
또는 단순 print 해주면됩니다. (hidden으로 처리해서)
본문보기는... 출력하는 부분에서 explode로 잘라서...
해당값이 있으면 checkbox에 checked 하는 javascript를 작성하거나,
또는 단순 print 해주면됩니다. (hidden으로 처리해서)

본문보기는 정상적으로 출력되고 있어서 이상이 없는데, 리스트의 검색이 문제여서요...
분류의 복수선택은 이런 방식으로도 구현이 안되는 것일까요...
일단 DB에 저장이 되었으니, 검색이 아니라 다른 방식으로라도 불러올 방법이 있지 않을까요??
분류의 복수선택은 이런 방식으로도 구현이 안되는 것일까요...
일단 DB에 저장이 되었으니, 검색이 아니라 다른 방식으로라도 불러올 방법이 있지 않을까요??

wr_subject 에서는 '검색어 1 and 검색어 2 and '검색어 3 ' 과 같은 방식으로 검색이 이뤄지는 것으로 알고 있는데, wr_7 에서도 같은 방법으로 가능하지 않을런지요?
wr_7 테이블에는 ' info_00|||info_03|||info_06|||||||| ' 와 같은 형태로 저장되어 있습니다.
wr_7 테이블에는 ' info_00|||info_03|||info_06|||||||| ' 와 같은 형태로 저장되어 있습니다.
자바스크립트를 이용해서 검색어 부분에 넣는데 ...
공백을 이용해서 하는 방식이 되면 될 거라고 생각이 듭니다.
즉 stx의 값을 info_00 info_03 info_04 이렇게 넣게 되면
가능합니다.자바스크립트는 검색해보세요 문자열 합치기 이런걸로 하시면 될껍니다.
공백을 이용해서 하는 방식이 되면 될 거라고 생각이 듭니다.
즉 stx의 값을 info_00 info_03 info_04 이렇게 넣게 되면
가능합니다.자바스크립트는 검색해보세요 문자열 합치기 이런걸로 하시면 될껍니다.

애화몽님 답변 감사합니다.
체크박스 분류로 범위를 좁혀 검색을 하는 것은 흔히 보는 기능인데, 구현이 쉽질 않네요...
좀 더 방법을 찾아봐야겠습니다.
체크박스 분류로 범위를 좁혀 검색을 하는 것은 흔히 보는 기능인데, 구현이 쉽질 않네요...
좀 더 방법을 찾아봐야겠습니다.
implode를 , 으로 하고
find_in_set 으로 검색하면 될 듯 싶은데요....ㅎ
( and 검색인 경우에 한합니다.)
find_in_set 으로 검색하면 될 듯 싶은데요....ㅎ
( and 검색인 경우에 한합니다.)
뭐.. 검색하면 되겠지만.. 그 sql문을 그누보드를 손봐야한다는거..
그리고 find_in_set 이 함수의 성능이 대용량 데이터에서 얼마나 버텨 줄런지는... ^^;
그리고 find_in_set 이 함수의 성능이 대용량 데이터에서 얼마나 버텨 줄런지는... ^^;