검색 기능추가 질문드립니다

검색 기능추가 질문드립니다

QA

검색 기능추가 질문드립니다

본문

안녕하세요.

기존 메인 페이지에 있는 검색기능에다가 관리자 주문내역(orderlist.php)의 체크박스 기능을 보면서 메인 페이지의 검색기능에 체크박스 성별 기능을 추가했는데 검색이 안되 이렇게 질문드립니다...

 

0 ㅡ 각 게시물의 여분필드1(it_1)'여자' 또는 '남자'를 입력해 두었습니다.

1 ㅡ 검색어 : 없음

2 ㅡ 체크박스가 '전체', '여자', '남자' 기능으로 세가지가 있는데,

3 ㅡ 기본인 '전체'에서는 정상적으로 모든 게시물이 출력이 됩니다.

4 ㅡ '여자' 또는 '남자' 클릭후 검색하면, 체크는 그대로 있는데, 검색물이 전혀 출력되지 않습니다...

5ㅡ <?php echo $it_gender; ?></p> 이 문구로 확인해보니 '전체', '여자', '남자'는 정상 출력됩니다..

 

개인적인 생각으로는... 각 게시물의 여분필드의 값을 찾지 못하는 것 같은데,

어떻게 해야지 정상적으로 검색이 될까요 ㅠㅠ

 

search.php

추가된 부분은 91 92 139 145~150 237 뿐 입니다.

 

 
<?php
include_once('./_common.php');
 
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']) ? preg_replace('#[^a-z0-9]#i', '', 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 = true;
    $qexplan_check = true;
    $qid_check = true;
} else {
    if($qname)
        $qname_check = true;
    if($qexplan)
        $qexplan_check = true;
    if($qid)
        $qid_check = true;
}
 
 
if ($q) {
    $arr = explode(" ", $q);
    $detail_where = array();
    for ($i=0; $i<count($arr); $i++) {
        $word = trim($arr[$i]);
        if (!$word) continue;
 
        $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 ($it_gender) 
    $where[] = " it_gender = '$it_1' ";
 
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 '<div class="sit_admin"><a href="'.G5_ADMIN_URL.'/shop_admin/configform.php#anc_scf_etc'.'" class="btn_admin">검색 설정</a></div>';
}
?>
 
<!-- 검색 시작 { -->
<div id="ssch">
 
    <!-- 상세검색 항목 시작 { -->
    <div id="ssch_frm">
        <form name="frmdetailsearch">
        <input type="hidden" name="qsort" id="qsort" value="<?php echo $qsort ?>">
        <input type="hidden" name="qorder" id="qorder" value="<?php echo $qorder ?>">
        <input type="hidden" name="qcaid" id="qcaid" value="<?php echo $qcaid ?>">
		<input type="hidden" name="it_gender" id="it_gender" value="<?php echo $it_gender ?>">
        <div>
            <strong>검색범위</strong>
            <input type="checkbox" name="qname" id="ssch_qname" value="1" <?php echo $qname_check?'checked="checked"':'';?>> <label for="ssch_qname">상품명</label>
            <input type="checkbox" name="qexplan" id="ssch_qexplan" value="1" <?php echo $qexplan_check?'checked="checked"':'';?>> <label for="ssch_qexplan">상품설명</label>
            <input type="checkbox" name="qid" id="ssch_qid" value="1" <?php echo $qid_check?'checked="checked"':'';?>> <label for="ssch_qid">상품코드</label>
			<input type="radio" name="it_gender" value="" id="it_gender0" <?php echo get_checked($it_gender, ''); ?>>
			<label for="it_gender0">전체</label>
			<input type="radio" name="it_gender" value="남자" id="it_gender1" <?php echo get_checked($it_gender, '남자'); ?>>
			<label for="it_gender1">남자</label>
			<input type="radio" name="it_gender" value="여자" id="it_gender2" <?php echo get_checked($it_gender, '여자');  ?>>
			<label for="it_gender2">여자</label><p> <!-- 테스트 <?php echo $it_gender; ?></p> -->
        </div>
        <div>
            <strong>상품가격 (원)</strong>
            <label for="ssch_qfrom" class="sound_only">최소 가격</label>
            <input type="text" name="qfrom" value="<?php echo $qfrom; ?>" id="ssch_qfrom" class="frm_input" size="10"> ~
            <label for="ssch_qto" class="sound_only">최대 가격</label>
            <input type="text" name="qto" value="<?php echo $qto; ?>" id="ssch_qto" class="frm_input" size="10"> 까지
        </div>
        <div>
            <label for="ssch_q" class="ssch_lbl">검색어</label>
            <input type="text" name="q" value="<?php echo get_search_string($q); ?>" id="ssch_q" class="frm_input" size="40" maxlength="30">
            <input type="submit" value="검색" class="btn_submit">
 
        </div>
        <p>
            상세검색을 선택하지 않거나, 상품가격을 입력하지 않으면 전체에서 검색합니다.<br>
            검색어는 최대 30글자까지, 여러개의 검색어를 공백으로 구분하여 입력 할수 있습니다.
        </p>
        </form>
 
        <ul id="ssch_sort">
            <li><a href="#" class="btn01" onclick="set_sort('it_sum_qty', 'desc'); return false;">판매많은순</a></li>
            <li><a href="#" class="btn01" onclick="set_sort('it_price', 'asc'); return false;">낮은가격순</a></li>
            <li><a href="#" class="btn01" onclick="set_sort('it_price', 'desc'); return false;">높은가격순</a></li>
            <li><a href="#" class="btn01" onclick="set_sort('it_use_avg', 'desc'); return false;">평점높은순</a></li>
            <li><a href="#" class="btn01" onclick="set_sort('it_use_cnt', 'desc'); return false;">후기많은순</a></li>
            <li><a href="#" class="btn01" onclick="set_sort('it_update_time', 'desc'); return false;">최근등록순</a></li>
        </ul>
		
		
 
        <div id="ssch_ov">
            검색 결과 <b><?php echo $total_count; ?></b>건
        </div>
    </div>
    <!-- } 상세검색 항목 끝 -->
 
    <!-- 검색된 분류 시작 { -->
    <div id="ssch_cate">
        <ul>
        <?php
        $sql = " select b.ca_id, b.ca_name, count(*) as cnt $sql_common $sql_where group by b.ca_id order by b.ca_id ";
        $result = sql_query($sql);
        $total_cnt = 0;
        for ($i=0; $row=sql_fetch_array($result); $i++) {
            echo "<li><a href=\"#\" onclick=\"set_ca_id('{$row['ca_id']}'); return false;\">{$row['ca_name']} (".$row['cnt'].")</a></li>\n";
            $total_cnt += $row['cnt'];
        }
        echo '<li><a href="#" onclick="set_ca_id(\'\'); return false;">전체분류 <span>('.$total_cnt.')</span></a></li>'.PHP_EOL;
        ?>
        </ul>
    </div>
    <!-- } 검색된 분류 끝 -->
 
    <!-- 검색결과 시작 { -->
    <div>
        <?php
        // 리스트 유형별로 출력
        $list_file = G5_SHOP_SKIN_PATH.'/'.$default['de_search_list_skin'];
        if (file_exists($list_file)) {
            define('G5_SHOP_CSS_URL', G5_SHOP_SKIN_URL);
            $list = new item_list($list_file, $default['de_search_list_mod'], $default['de_search_list_row'], $default['de_search_img_width'], $default['de_search_img_height']);
            $list->set_query(" select * $sql_common $sql_where {$order_by} limit $from_record, $items ");
            $list->set_is_page(true);
            $list->set_view('it_img', true);
            $list->set_view('it_id', true);
            $list->set_view('it_name', true);
            $list->set_view('it_basic', true);
            $list->set_view('it_cust_price', false);
            $list->set_view('it_price', true);
            $list->set_view('it_icon', true);
            $list->set_view('sns', true);
            echo $list->run();
        }
        else
        {
            $i = 0;
            $error = '<p class="sct_nofile">'.$list_file.' 파일을 찾을 수 없습니다.<br>관리자에게 알려주시면 감사하겠습니다.</p>';
        }
 
        if ($i==0)
        {
            echo '<div>'.$error.'</div>';
        }
		
		
        $query_string = 'qname='.$qname.'&qexplan='.$qexplan.'&qid='.$qid.'&amp';'it_gender='.$it_1.'&amp';'it_gender='.urlencode($it_1).'&amp';
        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=');
        ?>
    </div>
    <!-- } 검색결과 끝 -->
 
</div>
<!-- } 검색 끝 -->
 
<script>
function set_sort(qsort, qorder)
{
    var f = document.frmdetailsearch;
    f.qsort.value = qsort;
    f.qorder.value = qorder;
    f.submit();
}
 
function set_ca_id(qcaid)
{
    var f = document.frmdetailsearch;
    f.qcaid.value = qcaid;
    f.submit();
}
</script>
 
<?php
include_once('./_tail.php');
?>

이 질문에 댓글 쓰기 :

답변 2

필드가 it_1 라고하셔지요?

그누보드 여분 필드는 wr_1 이러식으로 시작하느데요

 

그리고

게시판병 여분 필드가 it_1 가있으면 it_1=변수 이런식인데

지금   $where[] = " it_gender = '$it_1' ";  식이자나요

그러니당연이 안되죠

  $where[] = " it_gender = '$it_1' ";  는 it_gender필드에 잇는 값을 구하는건데요 

와 ㅠㅠㅠㅠㅠㅠㅠㅠ 대박입니다........ 한번해 해결됬습니다 ㅠㅠ
정말 it_gender를 it_1으로 바꿔주니깐 잘되네요 ㅠㅠ
처음에 gender로 만들기전에 왜 똑같이 사용한건지 쫌 고민했었는데 ㅠㅠ
같은게 답이였군요 ㅠㅠ
감사합니다 ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 226
QA 내용 검색

회원로그인

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