검색시 문제점 인데요... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

검색시 문제점 인데요... 정보

검색시 문제점 인데요...

본문

검색 조건을 걸고 검색버튼을 누르면

일단 아무것도 못찾는다고 나오고

그상태에서 다시한번 검색버튼을 누르면 이번에는

제대로 검색이 되서 나오는데 도대체 왜 그런건지 이유를 모르겠네요

혹시 도움주실수 있는분이 있나요?

댓글 전체

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 분류 사용 여부
$is_category = false;
if ($board[bo_use_category])
{
    $is_category = true;
    $category_location = "./board.php?bo_table=$bo_table&sca=";
    $category_option = get_category_option($bo_table); // SELECT OPTION 태그로 넘겨받음
}

$sop = strtolower($sop);
if ($sop != "and" && $sop != "or")
    $sop = "and";


// 분류 선택 또는 검색어가 있다면
if ($sca || $stx || $mm3_housename || $mm_gubun || $mm_mmnum || $mm_don || $mm_don2 || $mm_daeji || $mm_daeji2 || $mm_gunmul || $mm_gunmul2 || $mm_struct || $mm_direct || $mm_floor || $mm_room || $mm_toilet || $mm_parking || $area1_select || $area2_select || $area3_select)
{
if ($mm3_housename) {
$sql_search .= " and mm3_housename='$mm3_housename'";
}
if ($mm_gubun) {
$sql_search .= " and ca_name='$mm_gubun'";
}
if ($mm_mmnum) {
$sql_search .= " and mm_mmnum='$mm_mmnum'";
}
if ($mm_don) {
$sql_search .= " and mm_buying>=$mm_don";
}
if ($mm_don2) {
$sql_search .= " and mm_buying<=$mm_don2";
}
if ($mm_daeji) {
$sql_search .= " and mm_daezi2>=$mm_daeji";
}
if ($mm_daeji2) {
$sql_search .= " and mm_daezi2<=$mm_daeji2";
}
if ($mm_gunmul) {
$sql_search .= " and mm_gunmul2>=$mm_gunmul";
}
if ($mm_gunmul2) {
$sql_search .= " and mm_gunmul2<=$mm_gunmul2";
}
if ($mm_struct) {
$sql_search .= " and mm_struct='$mm_struct'";
}
if ($mm_direct) {
$sql_search .= " and mm_direct='$mm_direct'";
}
if ($mm_floor) {
if ($mm_floor<4)
$sql_search .= " and mm_floor=$mm_floor";
if ($mm_floor>4)
$sql_search .= " and mm_floor>=$mm_floor";
}
if ($mm_room) {
$sql_search .= " and mm_room='$mm_room'";
}
if ($mm_toilet) {
$sql_search .= " and mm_toilet='$mm_toilet'";
}
if ($mm_parking) {
$sql_search .= " and mm_parking='$mm_parking'";
}
if ($area1_search){
$sql_search .= " and mm_addr like '%$area1_search%'";
}
if ($area2_search){
$sql_search .= " and mm_addr like '%$area2_search%'";
}
if ($area3_search){
$sql_search .= " and mm_addr like '%$area3_search%'";
}

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from $write_table ";
    $row = sql_fetch($sql);
    $min_spt = $row[min_wr_num];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    $sql = " select distinct wr_parent from $write_table where wr_id>0 $sql_search ";
    $result = sql_query($sql);
    $total_count = mysql_num_rows($result);
}
else
{
    $sql_search = "";

    $total_count = $board[bo_count_write];
}

$total_page  = ceil($total_count / $board[bo_page_rows]);  // 전체 페이지 계산
if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $board[bo_page_rows]; // 시작 열을 구함

// 관리자라면 CheckBox 보임
$is_checkbox = false;
if ($member[mb_id] && ($is_admin == "super" || $group[gr_admin] == $member[mb_id] || $board[bo_admin] == $member[mb_id]))
    $is_checkbox = true;

// 정렬에 사용하는 QUERY_STRING
$qstr2 = "bo_table=$bo_table&sop=$sop";

if ($board[bo_gallery_cols])
    $td_width = (int)(100 / $board[bo_gallery_cols]);

// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst)
{
    if ($board[bo_sort_field])
        $sst = $board[bo_sort_field];
    else
        $sst  = "wr_num, wr_reply";
    $sod = "";
}
$sql_order = " order by $sst $sod ";

if ($mm3_housename) {
$sql_search .= " and mm3_housename='$mm3_housename'";
}
if ($mm_gubun) {
$sql_search .= " and ca_name='$mm_gubun'";
}
if ($mm_mmnum) {
$sql_search .= " and mm_mmnum='$mm_mmnum'";
}
if ($mm_don) {
$sql_search .= " and mm_buying>=$mm_don";
}
if ($mm_don2) {
$sql_search .= " and mm_buying<=$mm_don2";
}
if ($mm_daeji) {
$sql_search .= " and mm_daezi2>=$mm_daeji";
}
if ($mm_daeji2) {
$sql_search .= " and mm_daezi2<=$mm_daeji2";
}
if ($mm_gunmul) {
$sql_search .= " and mm_gunmul2>=$mm_gunmul";
}
if ($mm_gunmul2) {
$sql_search .= " and mm_gunmul2<=$mm_gunmul2";
}
if ($mm_struct) {
$sql_search .= " and mm_struct='$mm_struct'";
}
if ($mm_direct) {
$sql_search .= " and mm_direct='$mm_direct'";
}
if ($mm_floor) {
if ($mm_floor<4)
$sql_search .= " and mm_floor=$mm_floor";
if ($mm_floor>4)
$sql_search .= " and mm_floor>=$mm_floor";
}
if ($mm_room) {
$sql_search .= " and mm_room='$mm_room'";
}
if ($mm_toilet) {
$sql_search .= " and mm_toilet='$mm_toilet'";
}
if ($mm_parking) {
$sql_search .= " and mm_parking='$mm_parking'";
}
if ($area1_search){
$sql_search .= " and mm_addr like '%$area1_search%'";
}
if ($area2_search){
$sql_search .= " and mm_addr like '%$area2_search%'";
}
if ($area3_search){
$sql_search .= " and mm_addr like '%$area3_search%'";
}


if ($sca || $stx || $mm3_housename || $mm_gubun || $mm_mmnum || $mm_don || $mm_don2 || $mm_daeji || $mm_daeji2 || $mm_gunmul || $mm_gunmul2 || $mm_struct || $mm_direct || $mm_floor || $mm_room || $mm_toilet || $mm_parking || $area1_select || $area2_select || $area3_select) 
{
    $sql = " select * from $write_table where wr_id>0 $sql_search $sql_order limit $from_record, $board[bo_page_rows]";
}
else
{
    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);

// 년도 2자리
$today2 = $g4[time_ymd];

$list = array();
$i = 0;

if (!$sca && !$stx && !$mm3_housename && !$mm_gubun && !$mm_mmnum && !$mm_don && !$mm_don2 && !$mm_daeji && !$mm_daeji2 && !$mm_gunmul && !$mm_gunmul2 && !$mm_struct && !$mm_direct && !$mm_floor && !$mm_room && !$mm_toilet && !$mm_parking && !$area1_select && !$area2_select && !$area3_select)
{
    $arr_notice = split("\n", trim($board[bo_notice]));
    for ($k=0; $k<count($arr_notice); $k++)
    {
        if (trim($arr_notice[$k])=='') continue;

        $row = sql_fetch(" select * from $write_table where wr_id = '$arr_notice[$k]' ");

        if (!$row[wr_id]) continue;

        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;

        $i++;
    }
}

$k = 0;

while ($row = sql_fetch_array($result))
{
    // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
    if ($sca || $stx || $mm3_housename || $mm_gubun || $mm_mmnum || $mm_don || $mm_don2 || $mm_daeji || $mm_daeji2 || $mm_gunmul || $mm_gunmul2 || $mm_struct || $mm_direct || $mm_floor || $mm_room || $mm_toilet || $mm_parking || $area1_select || $area2_select || $area3_select)
        $row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent]' ");

    $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
    if (strstr($sfl, "subject"))
        $list[$i][subject] = search_font($stx, $list[$i][subject]);
    $list[$i][is_notice] = false;
    //$list[$i][num] = number_format($total_count - ($page - 1) * $board[bo_page_rows] - $k);
    $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k;

    $i++;
    $k++;
}
$qstr .="&mm3_housename=$mm3_housename&mm_gubun=$mm_gubun&mm_mmnum=$mm_mmnum&mm_don=$mm_don&mm_don2=$mm_don2&mm_daeji=$mm_daeji&mm_daeji2=$mm_daeji2&mm_gunmul=$mm_gunmul&mm_gunmul2=$mm_gunmul2&mm_struct=$mm_struct&mm_direct=$mm_direct&mm_floor=$mm_floor&mm_room=$mm_room&mm_toilet=$mm_toilet&mm_parking=$mm_parking&mm_gunse=$mm_gunse&mm_gunse2=$mm_gunse2&mm_bosung=$mm_bosung&mm_bosung2=$mm_bosung2&mm_walse=$mm_walse&mm_walse2=$mm_walse2&image.x=23&image.y=8";


$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table".$qstr."&page=");

$list_href = '';
$prev_part_href = '';
$next_part_href = '';
if ($sca || $stx) 
{
    $list_href = "./board.php?bo_table=$bo_table";

    //if ($prev_spt >= $min_spt)
    $prev_spt = $spt - $config[cf_search_part];
    if (isset($min_spt) && $prev_spt >= $min_spt)
        $prev_part_href = "./board.php?bo_table=$bo_table".$qstr."&spt=$prev_spt";

    $next_spt = $spt + $config[cf_search_part];
    if ($next_spt < 0)
        $next_part_href = "./board.php?bo_table=$bo_table".$qstr."&spt=$next_spt";
}

$write_href = "";
if ($member[mb_level] >= $board[bo_write_level])
    $write_href = "./write.php?bo_table=$bo_table";

$nobr_begin = $nobr_end = "";
if (preg_match("/gecko|firefox/i", $_SERVER['HTTP_USER_AGENT'])) {
    $nobr_begin = "<nobr style='display:block; overflow:hidden;'>";
    $nobr_end  = "</nobr>";
}

// RSS 보기 사용에 체크가 되어 있어야 RSS 보기 가능 061106
$rss_href = "";
if ($board[bo_use_rss_view])
    $rss_href = "./rss.php?bo_table=$bo_table";

$stx = get_text(stripslashes($stx));
include_once("$board_skin_path/list.skin.php");
?>

bbs/list.php 를 이렇게 수정을 했거든요

왜 그런지 잘 모르겠는데 혹시 아시면 지적 부탁드립니다.
$sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";

때문에 그런 거 아닌가요?

검색을 할 때 (게시물에 10 만 건이 있다고 가정)
만 건씩 끊어서 검색을 하게 제한을 건 겁니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT