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

여분필드 검색 질문입니다. 채택완료

웹프로듀서 9년 전 조회 5,699

전체검색에서 여분필드 (wr_22)가 검색이 되게 할려고 질문, 답변 검색해서 수정해봤습니다.

 

bbs/search.php에서

--84줄 근처--

  for ($k=0; $k

 

--205번줄 근처--

   $list[$idx][$i]['subject'] = $subject;     $list[$idx][$i]['content'] = $content;     $list[$idx][$i]['wr_22'] = $wr_22;

 

이렇게 했고요.

 

 

head.php에서

 

이렇게 했습니다.

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

 

문제는 이렇게 하고 전체 검색을 하면 wr_22가 있는 글은 검색이 되는데요. 기존 subject가 검색이 안됩니다.

그리고 search.skin.php에서 이렇게 해도 wr_22 가 출력이 안됩니다.

 

며칠째 이 문제로 헤매고 있네요. 회원님들의 도움을 부탁드립니다.

꾸벅~ 

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

답변 2개

채택된 답변
+20 포인트
9년 전

다른 곳은 문제 없어 보입니다

$list[$idx][$i]['wr_22'] = $wr_22; --> $list[$idx][$i]['wr_22'] = $row['wr_22']; 

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

답변에 대한 댓글 1개

웹프로듀서
9년 전
균이님~ 감사합니다.
알려주신대로 하니까 여분필드 내용이 출력이 잘 됩니다.
그런데 제 질문처럼 여분필드 소스를 추가하면 왜 잘 나오던 다른 게시판의 제목이 검색이 안되는걸까요? 혹시 아시는 부분이 있으면 다시 도움 부탁드려봅니다.

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

혹시 게시판 관리자에서 전체 검색 허용 채크 하셔는 가 확인하세요  

 

그리고  제생각에는 아마도

 

122 번줄정도에 검색을 하느데

다른 게시판에도 22 즉 wr_22 필드가 있는가를 확인하세요         $sql = " select wr_id from {$tmp_write_table} where {$sql_search} "; echo $sql." ";

 

설명을 좀하자면

     case 'wr_22' :                 case 'wr_subject' :                 case 'wr_content' :

추가를 하면 아래처럼 되죠?

((INSTR(wr_subject, '44') or INSTR(wr_content, '44') or INSTR(wr_22, '44')))

 

그런데 이걸  검색 커리 문구로 사용하느데

    for ($i=0; $i

여기서즉 모든 검색을 하용한 게시판의 정보를 가저와요

그런데

select wr_id from g510_write_bible2 where ((INSTR(wr_subject, '44') or INSTR(wr_content, '44') or INSTR(wr_22, '44')))

이런식이 되게지요

문제는 검색 허용한 게시판이 4개면 4개 다 검색되는 건데 각각 게시판에 필드에 wr_22 이 있어야

오류가안나는거죠

 

--205번줄 근처--

   $list[$idx][$i]['subject'] = $subject;     $list[$idx][$i]['content'] = $content;     $list[$idx][$i]['wr_22'] = $wr_22;

이러게하셔다구하느데요

$wr_22; 이걸 정의해주는 곳이 없자나요 예를 들면

          if ($read_level[$idx] <= $member['mb_level'])             {                 //$content = cut_str(get_text(strip_tags($row['wr_content'])), 300, "…");                 $content = strip_tags($row['wr_content']);                 $content = get_text($content, 1);                 $content = strip_tags($content);                 $content = str_replace(' ', '', $content);                 $content = cut_str($content, 300, "…");

                if (strstr($sfl, 'wr_content'))                     $content = search_font($stx, $content);             }             else                 $content = '';

 

 

            $subject = get_text($row['wr_subject']);             if (strstr($sfl, 'wr_subject'))                 $subject = search_font($stx, $subject);

이런식으로 정의를 해줘야 되는거죠

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

답변에 대한 댓글 3개

웹프로듀서
9년 전
열린이글님 꼼꼼한 답변 깊이 감사드립니다.
현재 두 분이 알려주신 덕분에 여분필드 내용 출력은 되는데요. 잘 되던 다른 게시판의 subject가 검색이 안됩니다. search.php를 원래대로 돌리면 wr_22가 검색이 안되고 제목은 검색이 되고, 질문처럼 wr_22 소스를 추가하면 wr_22는 검색이 되고 subject는 검색이 안됩니다.
이 부분 아시는 내용이 있으시면 도움 부탁드립니다.
답변 감사드리고요.^^
균이
9년 전
열린이 님의 명확한 답변대로 wr_22 가 없는 게시판에서는 쿼리 에러가 발생하여 쿼리를 할 수 없기 때문입니다

1. 해법1은 아래처럼 만들고 쿼리문에 wr_22 필드가 있는 게시판과 없는 게시판을 다르게 쿼리하도록
만들면 되겠습니다

case 에서 wr_22 부분 빼버리고
for 문 끝난 후 다음 코드 넣고

if (preg_match("/[a-zA-Z]/", $stx))
$str2=$str. " $sop INSTR(LOWER(wr_22), LOWER('$stx'))";
else $str2 =$str. " $sop INSTR(wr_22, '$stx')";

쿼리부분에 $sql_search가 사용된 곳 찾아서 아래와 같은 방법으로....
if($g5_search['tables'][$i]== 'wr_22있는 게시판') $sql=~~ where $str2
else $sql = 원본


2. 해법2는 모든 게시판에 wr_22필드를 추가하는 것입니다
웹프로듀서
9년 전
균이님, 열린이 님 두 분 모두께 깊은 감사드립니다.
귀한 시간내주시기 어려우셨을텐데 꼼꼼히 답변 주셔서 잘 해결되었습니다.
아직 공부가 부족해서 전체 게시판에 wr_22를 추가하는 방법으로 해결되었습니다.^^
다시 한번 감사드립니다.
무더위에 건강관리 잘하시고요.

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

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

로그인