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

검색할때 검색어랑 브랜드랑 같이 검색되게 하고 싶습니다. 채택완료

밈시 4년 전 조회 6,123

검색 카테고리를 직접 만들었는데 검색창에 검색어를 입력하고 난 후 카테고리에 있는 브랜드 명을 누르면 검색이 안됩니다. sql 문을 살펴봤는데 검색어만 검색했을 때는 concat() 안에 있는 변수들(a.it_name, a.it_explan2, a.it_id, a.it_basic) 로 select 문이 돌아가는데 그 이후 브랜드 명을 누르면  concat() 안에 있는 변수들이 사라져서 select 됩니다. 

 

select b.ca_id, b.ca_name, count(*) as cnt from g5_shop_item a, g5_shop_category b where (a.ca_id = b.ca_id and a.it_use = 1 and b.ca_use = 1) and (concat() like '%노트북%' ) and a.it_brand like '삼성%' group by b.ca_id order by b.ca_id</p>

<p>// 이 코드가 검색어와 브랜드를 같이 검색했을 때 나오는 sql 문입니다. </p>

<p>// $q가 검색어입니다 </p>

<p>if ($q) {

    $arr = explode(" ", $q);

    $detail_where = array();

    for ($i=0; $i<count($arr); $i++) {

        $word = trim($arr[$i]);

        if (!$word) continue;</p>

<p>        $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";

        if ($search_all || $qbasic)

            $concat[] = "a.it_basic";</p>

<p>        $concat_fields = "concat(".implode(",' ',",$concat).")";</p>

<p>        $detail_where[] = $concat_fields." like '%$word%' ";

        // 인기검색어

        insert_popular($concat, $word);

    }</p>

<p>    $where[] = "(".implode(" or ", $detail_where).")";</p>

<p>

}</p>

<p>//브랜드 검색</p>

<p>if ($qbrand)

    $where[] = " a.it_brand like '$qbrand%' ";</p>

<p>

 

skin에서는

 

</p>

<p><a href="#n" onclick = "set_it_brand('삼성')">삼성</a></p>

<p> </p>

<p>function set_it_brand(qbrand) //브랜드

{

    var f = document.frmdetailsearch;

    f.qbrand.value = qbrand;

    f.submit();</p>

<p>}</p>

<p>

 

concat()안에 있는 변수들이 왜 사라질까요,.,????????????

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

답변 4개

채택된 답변
+20 포인트
        if ($search_all || $qbrand )
            $concat[] = "a.it_brand";

이렇게도 해 보세요.

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

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

밈시
4년 전

다들 감사합니다! if($search_all || $qname) 이부분이 제가 받아오는 변수랑 달랐어서 안되는거였어요 ㅠㅠ 

도움 주셔서 감사합니다!

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

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

M
4년 전

</p>

<pre>
<code>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";
        if ($search_all || $qbasic)
            $concat[] = "a.it_basic";
        $concat_fields = "concat(".implode(",' ',",$concat).")";
        $detail_where[] = $concat_fields." like '%$word%' ";
        // 인기검색어
        insert_popular($concat, $word);
    }
    //브랜드 검색
    if ($qbrand) $detail_where[] = " a.it_brand like '$qbrand%' ";
    $where[] = "(".implode(" or ", $detail_where).")";

}
</code></pre>

<p>

 

위 코드처럼 해보세요. 단, 검색어가 있을때 브랜드도 같이 추출하는 조건입니다.

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

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

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

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

로그인