그누보드5 search.php에서 계시판 쿼리 만들어내는 부분은 어딘가요?
본문
/list.php는 해당 계시판의 검색창 search.php는 전체 검색창의 검색기능으로 알고 있는데
실제 쿼리를 만들어내는 lib/common.lib.php 파일의 get_sql_search() 함수는 list.php에서만 사용하고
search.php에서는 사용을 안하나 바요.
search.php에서 아래부분이 호출될 당시의 bo_table은 어떻게 가져와야 하는지요?
fulltext공부를 하다보니 bo_table에 따라 쿼리를 달리 만들어야 할거 같아서요.
일단 $bo_table에는 값이 없는거 같네요.
$str = '(';
for ($i=0; $i<count($s); $i++) {
if (trim($s[$i]) == '') continue;
$search_str = $s[$i];
// 인기검색어
insert_popular($field, $search_str);
$str .= $op1;
$str .= "(";
$op2 = '';
// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
for ($k=0; $k<count($field); $k++) {
$str .= $op2;
switch ($field[$k]) {
case 'mb_id' :
case 'wr_name' :
답변 3
검색부분에 적용 하실 정확한 조건들이 어떻게 되나요?
말씀하신 것을 토대로 한다면 약간 변수를 확장해서 처리 가능한듯 한데요
큰 분기조건이 2가지 정도라면 $sql_search / $sql_search2 로 확장 하시고 원본은 건드리지 않코
$sql_search2만 확장 해서 처리 가능 해 보입니다.
적요은
$sql = " select wr_id from {$tmp_write_table} where {$sql_search} ";
해당 부분만 확장처리 하면 되겠네요
!-->search.php 파일 33번째~55번째줄 확인해보세요
해당 부분에서 $g5_search['tables'] 로 변수처리 하네요
테이블 별 처리 원하시면 해당 변수로 처리하시면 됩니다
kaiki님 감사해요 덕분에 조금 간단하고 정리가 됬어요.
for($i-0; $i<count($g5_search['tables']); $i++) {
// iam add modify
if( $g5_search['tables'][$i]=='free'||$g5_search['tables'][$i]=='note'||$g5_search['tables'][$i]=='vote')
$sql = " select count(wr_id) as cnt from {$tmp_write_table} where {$sql_search2} ";
else
$sql = " select count(wr_id) as cnt from {$tmp_write_table} where {$sql_search} ";
$result = sql_fetch($sql, false);
$row['cnt'] = (int)$result['cnt'];