상품검색 범위 질문드립니다. 채택완료
예를들어 '반바지'라는 상품을 검색해서 찾고자 하면
상품명으로 검색이 되어야하는데 본문까지 같이 되어서 본문에 반바지라고 쓰여있는 상품이 있다면 다 노출이 되어버립니다. 이런 경우 상품만 검색하고 싶은데 search.php에서 어디를 수정해야할까요.
내용은 좀 다르지만 검색관련 질문들은 찾아보았을때 sql 구문에서 수정해야한다고 하는 답들이 많았는데,
이 경우는 어떻게해야하는지 잘 모르겠습니다 ㅜㅜ
+ 겉보기엔 수정하고자하는건 뭔가 간단한 것 같은데 막상 열어보면 복잡하고, 잘 몰라서 막히는 경우가 많더군요...
영카트5 수정작업에 적합한 공부를 할 수 있는 도서가 있다면 추천 좀 해주세요...
--- 전문 ----
if (G5_IS_MOBILE) { include_once(G5_MSHOP_PATH.'/search.php'); return; }
$g5['title'] = "상품 검색 결과"; include_once('./_head.php');
// QUERY 문에 공통적으로 들어가는 내용 // 상품명에 검색어가 포한된것과 상품판매가능인것만 $sql_common = " from {$g5['g5_shop_item_table']} a, {$g5['g5_shop_category_table']} b ";
$where = array(); $where[] = " (a.ca_id = b.ca_id and a.it_use = 1 and b.ca_use = 1) ";
$search_all = true; // 상세검색 이라면 if (isset($_GET['qname']) || isset($_GET['qexplan']) || isset($_GET['qid'])) $search_all = false;
$q = utf8_strcut(get_search_string(trim($_GET['q'])), 30, ""); $qname = isset($_GET['qname']) ? trim($_GET['qname']) : ''; $qexplan = isset($_GET['qexplan']) ? trim($_GET['qexplan']) : ''; $qid = isset($_GET['qid']) ? trim($_GET['qid']) : ''; $qcaid = isset($_GET['qcaid']) ? trim($_GET['qcaid']) : ''; $qfrom = isset($_GET['qfrom']) ? preg_replace('/[^0-9]/', '', trim($_GET['qfrom'])) : ''; $qto = isset($_GET['qto']) ? preg_replace('/[^0-9]/', '', trim($_GET['qto'])) : ''; if (isset($_GET['qsort'])) { $qsort = trim($_GET['qsort']); $qsort = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $qsort); } else { $qsort = ''; } if (isset($_GET['qorder'])) { $qorder = preg_match("/^(asc|desc)$/i", $qorder) ? $qorder : ''; } else { $qorder = ''; } if(!($qname || $qexplan || $qid)) $search_all = true; // 검색범위 checkbox 처리 $qname_check = false; $qexplan_check = false; $qid_check = false;
if($search_all) { $qname_check = false; $qexplan_check = false; $qid_check = false; } else { if($qname) $qname_check = false; if($qexplan) $qexplan_check = false; if($qid) $qid_check = false; }
if ($q) {
$arr = explode(" ", $q);
$detail_where = array();
for ($i=0; $i $concat = array();
if ($search_all || $qname)
$concat[] = "a.it_name";
if ($search_all || $qexplan)
$concat[] = "a.it_explan2";
if ($search_all || $qid)
$concat[] = "a.it_id";
$concat_fields = "concat(".implode(",' ',",$concat).")"; $detail_where[] = $concat_fields." like '%$word%' "; // 인기검색어
insert_popular($concat, $word);
} $where[] = "(".implode(" and ", $detail_where).")";
} if ($qcaid)
$where[] = " a.ca_id like '$qcaid%' "; if ($qfrom && $qto)
$where[] = " a.it_price between '$qfrom' and '$qto' "; $sql_where = " where " . implode(" and ", $where); // 상품 출력순서가 있다면
$qsort = strtolower($qsort);
$qorder = strtolower($qorder);
$order_by = "";
// 아래의 $qsort 필드만 정렬이 가능하게 하여 다른 필드로 하여금 유추해 볼수 없게함
if (($qsort == "it_sum_qty" || $qsort == "it_price" || $qsort == "it_use_avg" || $qsort == "it_use_cnt" || $qsort == "it_update_time") &&
($qorder == "asc" || $qorder == "desc")) {
$order_by = ' order by ' . $qsort . ' ' . $qorder . ' , it_order, it_id desc';
} // 총몇개 = 한줄에 몇개 * 몇줄
$items = $default['de_search_list_mod'] * $default['de_search_list_row'];
// 페이지가 없으면 첫 페이지 (1 페이지)
if ($page < 1) $page = 1;
// 시작 레코드 구함
$from_record = ($page - 1) * $items; // 검색된 내용이 몇행인지를 얻는다
$sql = " select COUNT(*) as cnt $sql_common $sql_where ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$total_page = ceil($total_count / $items); // 전체 페이지 계산 if ($is_admin) {
echo '
-
{$row['ca_name']} (".$row['cnt'].")\n";
$total_cnt += $row['cnt'];
}
echo '
- 전체분류 ('.$total_cnt.') '.PHP_EOL; ?>
'.$list_file.' 파일을 찾을 수 없습니다. 관리자에게 알려주시면 감사하겠습니다.
'; }if ($i==0) { echo '
$query_string = 'qname='.$qname.'&qexplan='.$qexplan.'&qid='.$qid; if($qfrom && $qto) $query_string .= '&qfrom='.$qfrom.'&qto='.$qto; $query_string .= '&qcaid='.$qcaid.'&q='.urlencode($q); $query_string .='&qsort='.$qsort.'&qorder='.$qorder; echo get_paging($config['cf_write_pages'], $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$query_string.'&page='); ?>
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인