여분필드 검색방법 정보
여분필드 검색방법본문
여분필드를 wr_1 wr_2 wr_3 3개에 조건에 맞게 검색하는 방법이 어렵네요
wr_1이 남성이고 wr_2가 30대이고 wr_3이 직장인인 것만 검색할려면 어떻게 해야 할까요?
----------------------------------------------------------------------------------
wr_1
----------
남성
여성
wr_2
----------
10대
20대
30대
40대
50대
60세이상
wr_3
----------
무직
직장인
가사일
군복무
----------------------------------------------------------------------------------
* 다시 설명 드리면 위와 같은 경우
남성(wr_1)이고 30대(wr_2)이고 직장인(wr_3)인 경우만 검색
여성(wr_1)이고 40대(wr_2)이고 가사일(wr_3)인 경우만 검색
이렇게 가능할까요
----------------------------------------------------------------------------------
* 질답란과 활용팁 다 뒤져봤는데
wr_1 wr_2 wr_3에 한번에 검색하거나 wr_1 wr_2 wr_3 중에 검색하는 내용은 있지만 위 질문과 같이 조건으로 검색하는 내용은 없네요
**** 제가 포인트가 없어 있는거 거의 대부분 올립니다. ******
wr_1이 남성이고 wr_2가 30대이고 wr_3이 직장인인 것만 검색할려면 어떻게 해야 할까요?
----------------------------------------------------------------------------------
wr_1
----------
남성
여성
wr_2
----------
10대
20대
30대
40대
50대
60세이상
wr_3
----------
무직
직장인
가사일
군복무
----------------------------------------------------------------------------------
* 다시 설명 드리면 위와 같은 경우
남성(wr_1)이고 30대(wr_2)이고 직장인(wr_3)인 경우만 검색
여성(wr_1)이고 40대(wr_2)이고 가사일(wr_3)인 경우만 검색
이렇게 가능할까요
----------------------------------------------------------------------------------
* 질답란과 활용팁 다 뒤져봤는데
wr_1 wr_2 wr_3에 한번에 검색하거나 wr_1 wr_2 wr_3 중에 검색하는 내용은 있지만 위 질문과 같이 조건으로 검색하는 내용은 없네요
**** 제가 포인트가 없어 있는거 거의 대부분 올립니다. ******
댓글 전체
select * from 테이블명
where wr1='남성'
and wr2='30대'
and wr3='직장인';
실제로 남성 이런식으로 입려되어 있는지는 모르겠지만....
조건을 상세히 줘서 조회해볼수 있습니다.
where wr1='남성'
and wr2='30대'
and wr3='직장인';
실제로 남성 이런식으로 입려되어 있는지는 모르겠지만....
조건을 상세히 줘서 조회해볼수 있습니다.
여러가지 방법이 있겠는데요..
좀 복잡하게 설명할게요 님께서 직접 더 간결한 방법을 찾아보시길....
우선 select 에서 wr_1, wr_2, wr_3 의 조건이 들어올테니
list.php 상단에
if(wr_1 또는 wr_2또는 wr_3 값이 있다면) {
$sfl = "";
$stx = "";
if($wr_1){
if($sfl)
$sfl .= "wr_1";
if($stx)
$stx .= $wr_1;
}
if($wr_2){
if($sfl)
$sfl .= "||";
$sfl .= "wr_2";
if($stx)
$stx .= " ";
$stx .= $wr_2;
}
if($wr_3){
if($sfl)
$sfl .= "||";
$sfl .= "wr_3";
if($stx)
$stx .= " ";
$stx .= $wr_3;
}
}
이렇게 $stx 와 $sfl 값을 가공해 줍니다.
bbs/list.php 에 보면 get_sql_search($sca, $sfl, $stx, $sop) 가 있는데요..
common.lib.php에
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
의 기능입니다.
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
에서 가공된 || 구분 갯수만큼 검색해 줍니다.
// 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;
여기서 검색 해 주죠..
이건 좀 간단한 처리 방법인데요 단점은 count($field); 에서 알 수 있듯이 검색어 띄어쓰기 한 걸 돌리기 때문에 wr_1의 검색어가 wr_2에도 있을 때도 나옵니다. (아마 그럴겁니다. )
더 정확한 방법을 원하시면
extend 폴더에 파일 하나 만드시고 get_sql_search2$sca, $sfl, $stx, $sop, $wr_1, $wr_2, $wr_3) 을 추가해 $wr_1, 2, 3 에 해당하는 검색내용을 추가해 주세요.
if($wr_1) {
if ($str)
$str .= " and ";
$str .= " wr_1='$wr_1' ;
}
if($wr_2) {
if ($str)
$str .= " and ";
$str .= " wr_2='$wr_2' ;
}
if($wr_3) {
if ($str)
$str .= " and ";
$str .= " wr_3='$wr_3' ;
}
좀 복잡하게 설명할게요 님께서 직접 더 간결한 방법을 찾아보시길....
우선 select 에서 wr_1, wr_2, wr_3 의 조건이 들어올테니
list.php 상단에
if(wr_1 또는 wr_2또는 wr_3 값이 있다면) {
$sfl = "";
$stx = "";
if($wr_1){
if($sfl)
$sfl .= "wr_1";
if($stx)
$stx .= $wr_1;
}
if($wr_2){
if($sfl)
$sfl .= "||";
$sfl .= "wr_2";
if($stx)
$stx .= " ";
$stx .= $wr_2;
}
if($wr_3){
if($sfl)
$sfl .= "||";
$sfl .= "wr_3";
if($stx)
$stx .= " ";
$stx .= $wr_3;
}
}
이렇게 $stx 와 $sfl 값을 가공해 줍니다.
bbs/list.php 에 보면 get_sql_search($sca, $sfl, $stx, $sop) 가 있는데요..
common.lib.php에
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
의 기능입니다.
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
에서 가공된 || 구분 갯수만큼 검색해 줍니다.
// 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;
여기서 검색 해 주죠..
이건 좀 간단한 처리 방법인데요 단점은 count($field); 에서 알 수 있듯이 검색어 띄어쓰기 한 걸 돌리기 때문에 wr_1의 검색어가 wr_2에도 있을 때도 나옵니다. (아마 그럴겁니다. )
더 정확한 방법을 원하시면
extend 폴더에 파일 하나 만드시고 get_sql_search2$sca, $sfl, $stx, $sop, $wr_1, $wr_2, $wr_3) 을 추가해 $wr_1, 2, 3 에 해당하는 검색내용을 추가해 주세요.
if($wr_1) {
if ($str)
$str .= " and ";
$str .= " wr_1='$wr_1' ;
}
if($wr_2) {
if ($str)
$str .= " and ";
$str .= " wr_2='$wr_2' ;
}
if($wr_3) {
if ($str)
$str .= " and ";
$str .= " wr_3='$wr_3' ;
}