list.skin.php 검색 폼을 만들고 있습니다.
본문
하단의 검색 부분을 참고해서 만들고 있습니다.
필드 "type_of_sale" 에서 각자 value 값에 맞는 데이터를 검색을 하려고 하는데 어떻게 해야할지 모르겠네요 ..
select 코드를 아래와 같이 추가해서 get 으로 type_of_sale 에 각 value 값을 가져옵니다.
<tr>
<th>
<label class="control-label" for="">매물종류</label>
</th>
<td>
<select class="form-control" name="type_of_sale" id="type_of_sale">
<option value="" id="placeholderOption" selected disabled hidden>선택</option>
<option value="상가건물"<?php echo get_selected($type_of_sale, '상가건물'); ?>>상가건물</option>
<option value="상가주택" <?php echo get_selected($type_of_sale, '상가주택'); ?>>상가주택</option>
<option value="빌딩" <?php echo get_selected($type_of_sale, '빌딩'); ?>>빌딩</option>
<option value="구분상가" <?php echo get_selected($type_of_sale, '구분상가'); ?>>구분상가</option>
<option value="단독/다가구" <?php echo get_selected($type_of_sale, '단독/다가구'); ?>>단독/다가구</option>
<option value="숙박" <?php echo get_selected($type_of_sale, '숙박'); ?>>숙박</option>
<option value="공장/창고" <?php echo get_selected($type_of_sale, '공장/창고'); ?>>공장/창고</option>
<option value="토지/임야" <?php echo get_selected($type_of_sale, '토지/임야'); ?>>토지/임야</option>
<option value="아파트" <?php echo get_selected($type_of_sale, '아파트'); ?>>아파트</option>
<option value="오피스텔" <?php echo get_selected($type_of_sale, '오피스텔'); ?>>오피스텔</option>
<option value="빌라/연립" <?php echo get_selected($type_of_sale, '빌라/연립'); ?>>빌라/연립</option>
<option value="분양권" <?php echo get_selected($type_of_sale, '분양권'); ?>>분양권</option>
<option value="재개발/재건축" <?php echo get_selected($type_of_sale, '재개발/재건축'); ?>>재개발/재건축</option>
<option value="기타" <?php echo get_selected($type_of_sale, '기타'); ?>>기타</option>
</select>
</td>
</tr>
그리고 bbs/list.php 코드를 아래와 같이 수정해 주었습니다.
$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
$sop = 'and';
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
//검색인지 아닌지 구분하는 변수 초기화
$is_search_bbs = false;
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
$sql_search = get_sql_search($sca, $sfl, $stx, $sop, $type_of_sale);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
if($sql_apms_where) $sql_search .= $sql_apms_where;
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
/*
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
*/
} else {
$sql_search = "";
$total_count = $board['bo_count_write'];
}
생각을 해보니까 이 경우에는 필드 type_of_sale 에서 value 값이 "상가건물" 을 찾아야 하기 때문에 값을 두 번 전달?? 해주어야 하는군요.
이렇게 검색을 할 수 있나요?
답변 1
common.lib.php 의 get_sql_search 함수를 먼저 살펴보시는 게 좋을 것 같습니다.
get_sql_search($search_ca_name,$search_field,$search_field,$search_operator='and')
첫번째 인자는 카테고리이고,
두번째 인자는 검색할 필드,
세번째 인자는 검색어,
마지막 인자는 and 검색인지 or 검색인지를 결정합니다.
때문에 본문의 내용처럼 사용한다면 에러가 발생됩니다.
$type_of_field 라는 변수를 게시판 테이블의 wr_1 에 저장한다고 가정하면,
셀렉트박스의 name이 type_of_field 변수가 아닌 wr_1이 되어야 합니다.
수정 전에 해당 코드에 사용된 함수가 어떻게 작동하는지를 먼저 살펴본 후
수정을 하시는 게 좋을 듯 합니다.