테스트 사이트 - 개발 중인 베타 버전입니다

search.php 에서 카테고리 질문 드려요 채택완료

rnjsal 9년 전 조회 5,841

</p><p><?php</p><p>include_once('./_common.php');</p><p> </p><p>$g5['title'] = $lang_common_330[$common_country_code];</p><p>include_once(G5_MSHOP_PATH.'/_head.php');</p><p> </p><p>// QUERY 문에 공통적으로 들어가는 내용</p><p>// 상품명에 검색어가 포한된것과 상품판매가능인것만</p><p>$sql_common = " from {$g5['g5_shop_item_table']} a, {$g5['g5_shop_category_table']} b ";</p><p> </p><p>$where = array();</p><p>$where[] = " (a.ca_id = b.ca_id and a.it_use = 1 and b.ca_use = 1) ";</p><p> </p><p>$search_all = true;</p><p>// 상세검색 이라면</p><p>if (isset($_GET['qname']) || isset($_GET['qexplan']) || isset($_GET['qid']))</p><p>    $search_all = false;</p><p> </p><p>$q       = utf8_strcut(get_search_string(trim($_GET['q'])), 30, "");</p><p>$qname   = isset($_GET['qname']) ? trim($_GET['qname']) : '';</p><p>$qexplan = isset($_GET['qexplan']) ? trim($_GET['qexplan']) : '';</p><p>$qid     = isset($_GET['qid']) ? trim($_GET['qid']) : '';</p><p>$qcaid   = isset($_GET['qcaid']) ? trim($_GET['qcaid']) : '';</p><p>$qfrom   = isset($_GET['qfrom']) ? preg_replace('/[^0-9]/', '', trim($_GET['qfrom'])) : '';</p><p>$qto     = isset($_GET['qto']) ? preg_replace('/[^0-9]/', '', trim($_GET['qto'])) : '';</p><p>if (isset($_GET['qsort']))  {</p><p>    $qsort = trim($_GET['qsort']);</p><p>    $qsort = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $qsort);</p><p>} else {</p><p>    $qsort = '';</p><p>}</p><p>if (isset($_GET['qorder']))  {</p><p>    $qorder = preg_match("/^(asc|desc)$/i", $qorder) ? $qorder : '';</p><p>} else {</p><p>    $qorder = '';</p><p>}</p><p> </p><p>if(!($qname || $qexplan || $qid))  </p><p>   $search_all = true;  </p><p> </p><p>// 검색범위 checkbox 처리</p><p>$qname_check = false;</p><p>$qexplan_check = false;</p><p>$qid_check = false;</p><p> </p><p>if($search_all) {</p><p>    $qname_check = true;</p><p>    $qexplan_check = true;</p><p>    $qid_check = true;</p><p>} else {</p><p>    if($qname)</p><p>        $qname_check = true;</p><p>    if($qexplan)</p><p>        $qexplan_check = true;</p><p>    if($qid)</p><p>        $qid_check = true;</p><p>}</p><p> </p><p>if ($q) {</p><p>    $arr = explode(" ", $q);</p><p>    $detail_where = array();</p><p>    for ($i=0; $i<count($arr); $i++) {</p><p>        $word = trim($arr[$i]);</p><p>        if (!$word) continue;</p><p> </p><p>        $concat = array();</p><p>        if ($search_all || $qname)</p><p>            $concat[] = "a.it_name";</p><p>        if ($search_all || $qexplan)</p><p>            $concat[] = "a.it_explan2";</p><p>        if ($search_all || $qid)</p><p>            $concat[] = "a.it_id";</p><p>        $concat_fields = "concat(".implode(",' ',",$concat).")";</p><p> </p><p>        $detail_where[] = $concat_fields." like '%$word%' ";</p><p> </p><p>        // 인기검색어</p><p>        insert_popular($concat, $word);</p><p>    }</p><p> </p><p>    $where[] = "(".implode(" and ", $detail_where).")";</p><p>}</p><p> </p><p>if ($qcaid)</p><p>    $where[] = " a.ca_id like '$qcaid%' ";</p><p> </p><p>if ($qfrom && $qto)</p><p>    $where[] = " a.it_price between '$qfrom' and '$qto' ";</p><p> </p><p>$sql_where = " where it_language='$common_country_code' and " . implode(" and ", $where);</p><p> </p><p>// 상품 출력순서가 있다면</p><p>$qsort  = strtolower($qsort);</p><p>$qorder = strtolower($qorder);</p><p>$order_by = "";</p><p>// 아래의 $qsort 필드만 정렬이 가능하게 하여 다른 필드로 하여금 유추해 볼수 없게함</p><p>if (($qsort == "it_sum_qty" || $qsort == "it_price" || $qsort == "it_use_avg" || $qsort == "it_use_cnt" || $qsort == "it_update_time") &&</p><p>    ($qorder == "asc" || $qorder == "desc")) {</p><p>    $order_by = ' order by ' . $qsort . ' ' . $qorder . ' , it_order, it_id desc';</p><p>}</p><p> </p><p>// 총몇개 = 한줄에 몇개 * 몇줄</p><p>$items = $default['de_mobile_search_list_mod'] * $default['de_mobile_search_list_row'];</p><p>// 페이지가 없으면 첫 페이지 (1 페이지)</p><p>if ($page < 1) $page = 1;</p><p>// 시작 레코드 구함</p><p>$from_record = ($page - 1) * $items;</p><p> </p><p>// 검색된 내용이 몇행인지를 얻는다</p><p>$sql = " select COUNT(*) as cnt $sql_common $sql_where ";</p><p>$row = sql_fetch($sql);</p><p>$total_count = $row['cnt'];</p><p>$total_page  = ceil($total_count / $items); // 전체 페이지 계산</p><p>?></p><p> </p><p> </p><p><!-- 검색 시작 { --></p><p><div id="ssch"></p><p> </p><p>    <!-- 상세검색 항목 시작 { --></p><p>    <div id="ssch_frm"></p><p>        <form name="frmdetailsearch"></p><p>        <input type="hidden" name="qsort" id="qsort" value="<?php echo $qsort ?>"></p><p>        <input type="hidden" name="qorder" id="qorder" value="<?php echo $qorder ?>"></p><p>        <input type="hidden" name="qcaid" id="qcaid" value="<?php echo $qcaid ?>"></p><p>        <!--div></p><p>            <strong><?php echo $lang_common_331[$common_country_code] ?></strong></p><p>            <input type="checkbox" name="qname" id="ssch_qname" <?php echo $qname_check?'checked="checked"':'';?>> <label for="ssch_qname"><?php echo $lang_common_72[$common_country_code] ?></label></p><p>            <input type="checkbox" name="qexplan" id="ssch_qexplan" <?php echo $qexplan_check?'checked="checked"':'';?>> <label for="ssch_qexplan"><span class="sound_only"><?php echo $lang_common_63[$common_country_code] ?></span><?php echo $lang_search_5_m[$common_country_code] ?></label></p><p>            <!--input type="checkbox" name="qid" id="ssch_qid" <?php echo $qid_check?'checked="checked"':'';?>> <label for="ssch_qid"><span class="sound_only"><?php echo $lang_common_63[$common_country_code] ?></span><?php echo $lang_search_6_m[$common_country_code] ?></label>
</p><p>        </div></p><p>        <div></p><p>            <strong><?php echo $lang_common_332[$common_country_code] ?></strong></p><p>            <label for="ssch_qfrom" class="sound_only"><?php echo $lang_common_333[$common_country_code] ?></label></p><p>            <input type="text" name="qfrom" value="<?php echo $qfrom; ?>" id="ssch_qfrom" class="frm_input"> ~</p><p>            <label for="ssch_qto" class="sound_only"><?php echo $lang_common_334[$common_country_code] ?></label></p><p>            <input type="text" name="qto" value="<?php echo $qto; ?>" id="ssch_qto" class="frm_input"><?php echo $lang_common_335[$common_country_code] ?>
</p><p>        </div--></p><p>        <div></p><p>            <label for="ssch_q" class="ssch_lbl"><?php echo $lang_common_148[$common_country_code] ?></label></p><p>            <input type="text" name="q" value="<?php echo $q; ?>" id="ssch_q" class="frm_input" maxlength="30"></p><p>            <input type="submit" value="검색" class="btn_submit" style="height:45px;"></p><p>        </div></p><p>        <!--p></p><p>            <?php echo $lang_common_336[$common_country_code] ?>
</p><p>            <?php echo $lang_common_337[$common_country_code] ?></p><p>        </p--></p><p>        </form></p><p> </p><p>        <ul id="ssch_sort"></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_sum_qty', 'desc'); return false;"><?php echo $lang_common_338[$common_country_code] ?></a></li></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_price', 'asc'); return false;"><?php echo $lang_common_339[$common_country_code] ?></a></li></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_price', 'desc'); return false;"><?php echo $lang_common_340[$common_country_code] ?></a></li></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_use_avg', 'desc'); return false;"><?php echo $lang_common_341[$common_country_code] ?></a></li></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_use_cnt', 'desc'); return false;"><?php echo $lang_common_342[$common_country_code] ?></a></li></p><p>            <li><a href="#" class="btn01" onclick="set_sort('it_update_time', 'desc'); return false;"><?php echo $lang_common_343[$common_country_code] ?></a></li></p><p>        </ul></p><p> </p><p>        <div id="ssch_ov"></p><p>            <?php echo $lang_common_344[$common_country_code] ?><b><?php echo $total_count; ?></b><?php echo $lang_common_86[$common_country_code] ?></p><p>        </div></p><p>    </div></p><p>    <!-- } 상세검색 항목 끝 --></p><p> </p><p>    <!-- 검색된 분류 시작 { --></p><p>    <div id="ssch_cate"></p><p>        <ul></p><p>        <?php</p><p>        $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 ";</p><p>        $result = sql_query($sql);</p><p>        $total_cnt = 0;</p><p>        for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p>            echo "<li><a href=\"#\" onclick=\"set_ca_id('{$row['ca_id']}'); return false;\">{$row['ca_name']} (".$row['cnt'].")</a></li>\n";</p><p>            $total_cnt += $row['cnt'];</p><p>        }</p><p>        echo '<li><a href="#" onclick="set_ca_id(\'\'); return false;">'.$lang_common_345[$common_country_code].' <span>('.$total_cnt.')</span></a></li>'.PHP_EOL;</p><p>        ?></p><p>        </ul></p><p>    </div></p><p>    <!-- } 검색된 분류 끝 --></p><p> </p><p>    <!-- 검색결과 시작 { --></p><p>    <div></p><p>        <?php</p><p>        // 리스트 유형별로 출력</p><p>        define('G5_SHOP_CSS_URL', G5_MSHOP_SKIN_URL);</p><p>        $list_file = G5_MSHOP_SKIN_PATH.'/'.$default['de_mobile_search_list_skin'];</p><p> </p><p> </p><p>        if (file_exists($list_file)) {</p><p> </p><p> </p><p>            $list = new item_list($list_file, $default['de_mobile_search_list_mod'], $default['de_mobile_search_list_row'], $default['de_mobile_search_img_width'], $default['de_mobile_search_img_height']); </p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$list->set_query(" select * $sql_common $sql_where {$order_by} ");</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$list->set_mobile(true);</p><p>            $list->set_type(1);</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$list->set_language($common_country_code);</p><p>            $list->set_view('it_id', false);</p><p>            $list->set_view('it_name', true);</p><p>            $list->set_view('it_cust_price', true);</p><p>            $list->set_view('it_price', true);</p><p>            $list->set_view('it_icon', true);</p><p>            $list->set_view('sns', true);</p><p>            echo $list->run();</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">			</span>/*</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$list = new item_list($list_file, $default['de_mobile_search_list_mod'], $default['de_mobile_search_list_row'], $default['de_mobile_search_img_width'], $default['de_mobile_search_img_height']);</p><p>            //$list->set_query(" select * $sql_common $sql_where {$order_by} limit $from_record, $items ");</p><p>            $list->set_is_page(true);</p><p>            $list->set_mobile(true);</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>//$list->set_language($common_country_code);</p><p>            $list->set_view('it_img', true);</p><p>            $list->set_view('it_id', false);</p><p>            $list->set_view('it_name', true);</p><p>            $list->set_view('it_basic', true);</p><p>            $list->set_view('it_cust_price', false);</p><p>            $list->set_view('it_price', true);</p><p>            $list->set_view('it_icon', true);</p><p>            $list->set_view('sns', true);</p><p>            echo $list->run();</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>*/</p><p>        }</p><p>        else</p><p>        {</p><p>            $i = 0;</p><p>            $error = '<p class="sct_nofile">'.$list_file.$lang_common_27[$common_country_code].'</p>';</p><p>        }</p><p> </p><p>        if ($i==0)</p><p>        {</p><p>            echo '<div>'.$error.'</div>';</p><p>        }</p><p> </p><p>        $query_string = 'qname='.$qname.'&amp;qexplan='.$qexplan.'&amp;qid='.$qid;</p><p>        if($qfrom && $qto) $query_string .= '&amp;qfrom='.$qfrom.'&amp;qto='.$qto;</p><p>        $query_string .= '&amp;qcaid='.$qcaid.'&amp;q='.urlencode($q);</p><p>        $query_string .='&amp;qsort='.$qsort.'&amp;qorder='.$qorder;</p><p>        echo get_paging($config['cf_mobile_pages'], $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$query_string.'&amp;page=');</p><p>        ?></p><p>    </div></p><p>    <!-- } 검색결과 끝 --></p><p> </p><p></div></p><p><!-- } 검색 끝 --></p><p> </p><p><script></p><p>function set_sort(qsort, qorder)</p><p>{</p><p>    var f = document.frmdetailsearch;</p><p>    f.qsort.value = qsort;</p><p>    f.qorder.value = qorder;</p><p>    f.submit();</p><p>}</p><p> </p><p>function set_ca_id(qcaid)</p><p>{</p><p>    var f = document.frmdetailsearch;</p><p>    f.qcaid.value = qcaid;</p><p>    f.submit();</p><p>}</p><p></script></p><p> </p><p><?php</p><p>include_once(G5_MSHOP_PATH.'/_tail.php');</p><p>?></p><div>
</div><p>

 

안녕하세요 search.php 인데요, 제가 궁금한게 있는데요,

상품의 카테고리 부분에서요

</p><p> <!-- 검색된 분류 시작 { --></p><p>    <div id="ssch_cate"></p><p>        <ul></p><p>        <?php</p><p>        $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 ";</p><p>        $result = sql_query($sql);</p><p>        $total_cnt = 0;</p><p>        for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p>            echo "<li><a href=\"#\" onclick=\"set_ca_id('{$row['ca_id']}'); return false;\">{$row['ca_name']} (".$row['cnt'].")</a></li>\n";</p><p>            $total_cnt += $row['cnt'];</p><p>        }</p><p>        echo '<li><a href="#" onclick="set_ca_id(\'\'); return false;">'.$lang_common_345[$common_country_code].' <span>('.$total_cnt.')</span></a></li>'.PHP_EOL;</p><p>        ?></p><p>        </ul></p><p>    </div></p><p>    <!-- } 검색된 분류 끝 --></p><p>

이 부분에서요 특정 카테고리를 클릭하면 for문에서 출력되는 카테고리가 클릭한 카테고리 빼고 다 사라지더라구요. 전체클릭하면 다시 모든 카테고리가 나오는데, 특정 카테고리를 선택하면 그 카테고리빼고 나머지 카테고리가 빠집니다.

해당 부분은 db에서 손을 봐야 할거 같은데, 이부분을 어떻게 손을 대야할지 도저히 모르겠네요.

그누보드 고수님들 어찌할지 좀 알려주세요

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

특정 카테고리를 선택하면,

선택한 카테고리만 나오는게 맞지 않아요 ?

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

r
rnjsal
9년 전
카테고리 상품을 말하는게 아니라 카테고리 목록을 말하는겁니다ㅜㅜ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인