테스트 사이트 - 개발 중인 베타 버전입니다

게시판 검색 띄어쓰기 무시 질문드립니다! 채택완료

airs 3년 전 조회 3,546

안녕하세요.

게시글 제목이 그누 보드 라고 띄어쓰기가 있으면,

게시판 검색을 그누보드, 누보 등등 이라고 해도 게시글이 검색이 되도록 띄어쓰기를 제거하려고 합니다.

질문 전에 서칭을 했었는데 대부분 "전체검색"에 관한 질문이네요...

게시판 검색이니까 bbs/list.php에서 검색 쿼리를 건드려줘야 할 것 같은데.. 잘 모르겠네요..

 

bbs/list.php

</p>

<p>// 분류 선택 또는 검색어가 있다면</p>

<p>$stx = trim($stx);</p>

<p>//검색인지 아닌지 구분하는 변수 초기화</p>

<p>$is_search_bbs = false;</p>

<p> </p>

<p>if ($sca || $stx || $stx === '0') {     //검색이면</p>

<p>    $is_search_bbs = true;      //검색구분변수 true 지정</p>

<p>    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);</p>

<p> </p>

<p>    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)</p>

<p>    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";</p>

<p>    $row = sql_fetch($sql);</p>

<p>    $min_spt = (int)$row['min_wr_num'];</p>

<p> </p>

<p>    if (!$spt) $spt = $min_spt;</p>

<p> </p>

<p>    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";</p>

<p> </p>

<p>    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)</p>

<p>    // 라엘님 제안 코드로 대체 <a href="http://sir.kr/g5_bug/2922" target="_blank" rel="noopener noreferrer">http://sir.kr/g5_bug/2922</a></p>

<p>    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";</p>

<p>    $row = sql_fetch($sql);</p>

<p>    $total_count = $row['cnt'];</p>

<p>    /*</p>

<p>    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";</p>

<p>    $result = sql_query($sql);</p>

<p>    $total_count = sql_num_rows($result);</p>

<p>    */</p>

<p>} else {</p>

<p>    $sql_search = "";</p>

<p> </p>

<p>    $total_count = $board['bo_count_write'];</p>

<p>}</p>

<p>

 

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

답변 2개

채택된 답변
+20 포인트
m
3년 전
common.lib.php 파일에서 get_sql_search 이 함수를 찾아서 
switch ($field[$k]) { 위에 아래처럼 수정해보세요

            // 필드값에 a-z A-Z 0-9 _ , | 이외의 값이 있다면 검색필드를 wr_subject 로 설정한다.
            $field[$k] = preg_match("/^[\w\,\|]+$/", $field[$k]) ? strtolower($field[$k]) : "wr_subject";
            if($field[$k] == "wr_subject") {
                $field[$k] = " REPLACE(wr_subject, ' ', '') ";
            }
            $str .= $op2;
            switch ($field[$k]) {

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

a
airs
3년 전
감사합니다!! 해결했습니다!

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

LovelyCaT
3년 전
$stx = trim($stx);

다음줄에

 

$stx = preg_replace("/\s+/","",$stx);

추가하면 될거 같아요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

a
airs
3년 전
안녕하세요. LovelyCaT님. 답변해주셔서 감사합니다.

말씀하신대로 코드를 넣었는데 같은 증상이 보이네요.. ㅜㅜ
L
LovelyCaT
3년 전
@airs
전체검색이 아닌 제목일때만 띄어쓰기를 없애면 되는거라면
if(sfl=='wr_subject'){
$stx = preg_replace("/\s+/","",$stx);
}
으로 수정하면 되는데.. 정확히 어떤 증상인지 모르겠네요..ㅎㅎ;;

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

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

로그인