채택완료

게시판 멀티검색 문의 드립니다.

2024-04-18 (목) 19:55:33 2,444

그누보드 게시판 검색에서 기본검색은 단일값 또는 제목+내용 검색만 제공하는데요.

wr_1 : 성명

wr_2 : 등급

wr_3 : 고유번호

이렇게 입력을 해서,  3가지 모두를 만족하는 게시물만 검색할 수 있게 하고 싶습니다.

[제목+내용] 은 or 검색으로 나오는데요.

wr_1 and wr_2 and wr_3 검색이 되게 하려면 어떻게 하면 될까요?

답변 2개 / 댓글 8개

채택된 답변
+20 포인트
2024-04-18 (목) 20:10:46

* /bbs/list.php

Copy
if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;      //검색구분변수 true 지정
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);


Copy
if ($sca || $stx || $stx === '0' || ($bo_table == 'aa' && $wr_1)) {     //검색이면
    $is_search_bbs = true;      //검색구분변수 true 지정
    if ($bo_table == 'aa' && $wr_1)
      $sql_search = " wr_1 = '{$wr_1}' and wr_2 = '{$wr_2}' and wr_3 = '{$wr_3}' and wr_is_comment = '0' ";
    else
      $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

답변에 대한 댓글 8개

답글 너무 감사합니다. 혹시 특정게시판에만 적용하는 방법도 있을까요?
2024-04-18 (목) 20:41:38
지금 코드가 특정 게시판에만 적용하는 코드입니다.

$bo_table == 'aa'
(aa 게시판에만 적용)
네~ 너무 감사 드립니다.
알려주신 팁으로 적용중인데요. 검색 입력란에 wr_1 부터 wr_3 까지 입력받는 부분은 어떻게 수정해야 할까요? 게시판검색 기본소스에서는 입력을 1개만 받을 수 있게 되어 있어서요.

<fieldset id="bo_sch">
<legend>게시물 검색</legend>
<form name="fsearch" method="get">
<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">
<option value="wr_1"<?php echo get_selected($sfl, 'wr_1', true); ?>>성명</option>
</select>
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="20">
<input type="submit" value="검색" class="btn_submit">
</form>
</fieldset>
2024-04-30 (화) 19:06:16
[code]
<fieldset id="bo_sch">
<legend>게시물 검색</legend>
<form name="fsearch" method="get">
<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">
성명 : <input type="text" name="wr_1" value="<?php echo stripslashes($wr_1) ?>" required id="wr_1" class="frm_input required" size="15" maxlength="20">
등급 : <input type="text" name="wr_2" value="<?php echo stripslashes($wr_2) ?>" required id="wr_2" class="frm_input required" size="15" maxlength="20">
고유번호 : <input type="text" name="wr_3" value="<?php echo stripslashes($wr_3) ?>" required id="wr_3" class="frm_input required" size="15" maxlength="20">
<input type="submit" value="검색" class="btn_submit">
</form>
</fieldset>
[/code]
알려주신 소스대로 적용해서 실행해보니 (게시판명 :certi1) 검색결과가 나오지 않습니다.
주소창에 찍히는 내용은 아래와 같이 보이네요.

/bbs/board.php?bo_table=certi1&sca=&sop=and&wr_1=김나나&wr_2=1111&wr_3=2222

많이 도와주셨는데, 제가 뭘 잘못한 것인지 검색결과가 나오지 않네요.
2024-04-30 (화) 21:01:40
if ($sca || $stx || $stx === '0' || ($bo_table == 'aa' && $wr_1)) {

if ($sca || $stx || $stx === '0' || ($bo_table == 'certi1' && $wr_1)) {

--------------------------------------------------------------------------------

또는

$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);



$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
echo $sql;
$row = sql_fetch($sql);

을 하면 SQL문을 브라우저에서 확인할 수 있습니다.

해당 SQL문을 DB 에 직접 실행해 보면서 https://sir.kr/g5_tip/15716

어떤 부분에서 문제가 있는지 살펴 볼 수 있습니다.
다시 잘 확인하고, 수정해서 잘 해결 했습니다.
보내주신 소스대로 잘 작동합니다. 감사합니다.

채택을 1번밖에 할수 없어서 죄송하네요.

빠른답변 너무 감사 드립니다.

답변을 작성하려면 로그인이 필요합니다.