두개 조건으로 검색 가능할까요?

두개 조건으로 검색 가능할까요?

QA

두개 조건으로 검색 가능할까요?

답변 3

본문

특정 행사나 대회 참가 신청을 받고 

(신청하기 = 그누보드 게시판 글쓰기)

 

이름(wr_name), 연락처(wr_1) 

위 두가지 주요 항목을 필수로 받아둔 상태에서

 

게시판 검색 하기에서 

 

input1 : [이름입력]

input2 : [연락처입력]

[참가 신청 확인하기]

 

위 처럼 인풋(텍스트) 두개와, Submit 버튼 하나로 구성후

참가 신청 확인용으로 이름 / 연락처 입력후 버튼 클릭 시 wr_name 과 wr_1 두가지가 100% 일치할 경우에

'신청이 완료되었습니다' 라고 출력하고 싶습니다.

 

가능할까요?

혹시 가능하다면 대략적으로 라도 갈피를 잡아주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 3

* 참고글입니다. - https://sir.kr/g5_tip/5056

 

기존의 사용되는 검색을 이용하여,

<input type="hidden" name="sop" value="and">

<input type="hidden" name="sfl" value="wr_name||wr_1">

<input type="hidden" name="stx" value="">

 

를 검색폼 안에 추가한 뒤,

검색버튼 클릭(submit)시에,

stx 의 value 값을 wr_name 과 wr_1 을 공백으로 조합해주면 됩니다. (wr_name + ' ' + wr_1)

 

wr_name 의 경우 일치 검색이지만, wr_1 은 기타에 속해 라이크 검색이 되기 때문에, 

그 부분을 해결하고자 한다면 common.lib.php 에서 get_sql_search 의 switch 문에서 wr_name 의 case 문 위에 wr_1 을 추가해 주면 됩니다.

다 잘 되는데
common.lib.php 에서 get_sql_search 의 switch 문에서 wr_name 의 case 문 위에 wr_1 을 추가해도 라이크 검색이 되네요 ㅠㅠ

switch ($field[$k]) {
    case "mb_id" :
    case "wr_1" :
    case "wr_name" :
        $str .= " $field[$k] = '$s[$i]' ";
        break;
    case "wr_hit" :
    case "wr_good" :
    case "wr_nogood" :
        $str .= " $field[$k] >= '$s[$i]' ";
        break;
    // 번호는 해당 검색어에 -1 을 곱함
    case "wr_num" :
        $str .= "$field[$k] = ".((-1)*$s[$i]);
        break;
    case "wr_ip" :
    case "wr_password" :
        $str .= "1=0"; // 항상 거짓
        break;
    // LIKE 보다 INSTR 속도가 빠름
    default :
        if (preg_match("/[a-zA-Z]/", $search_str))
            $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
        else
            $str .= "INSTR($field[$k], '$search_str')";
        break;
}

좋은 방법은 아닙니다만..

계속해서 문제가 풀리지 않는다면,

해당 검색 sql문을 만드는 함수 마지막 부근에 다음과 같이 추가하는 방법이 있습니다.



    $str .= " ) ";
    
    
    /* 추가부분 */
   global $bo_table;
    if ($bo_table == "test") { // table ID
    	$str = " ( {$field[0]} = '{$s[0]}' and {$field[1]} = '{$s[1]}' ) ";
    }
    //echo $str;
    /* /추가부분 */
    	
    
    if ($not_comment)
        $str .= " and wr_is_comment = '0' ";                

    return $str;
}

php와 sql을 아신다면 진짜 쉽습니다 처리하는곳을 하나 나 그냥 따로 만드시면 더욱쉽게 만들수있을것같은데요

 

그누보드내에 검색시스템을 활용하기보다는 새로 해당 검색조건을 처리하는곳을 만들어

 

지금 해당 form을 처리하는곳으로 보낸후 거기서 쿼리문으로 해당 내용을 검색합니다 그리고 만약 일치하는 내용이 있다면 alert으로 알림메세지 하나를 뿌리고 다시 이전 페이지로 돌아가면 매우간단하겠죠?

https://sir.kr/g5_tip/3003

이런 방법이 있네요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 59,815
© SIRSOFT
현재 페이지 제일 처음으로