검색결과 검색된 분류 부분에서 전체를 맨앞에 위치시킬때 카운팅

검색결과 검색된 분류 부분에서 전체를 맨앞에 위치시킬때 카운팅

QA

검색결과 검색된 분류 부분에서 전체를 맨앞에 위치시킬때 카운팅

본문

skin/shop/basic/search.skin.php 에서 검색된 분류 부분


<!-- 검색된 분류 시작 { -->
<div id="ssch_cate">
    <ul class="flex clearfix">
    <?php
    $total_cnt = 0;
    foreach( $categorys as $row ){
        echo "<li class=\"flex\"><a href=\"#\" onclick=\"set_ca_id('{$row['ca_id']}'); return false;\" class=\"flex\">{$row['ca_name']} <span>".$row['cnt']."</span></a></li>\n";
        $total_cnt += $row['cnt'];
    }
    echo '<li class="flex"><a href="#" onclick="set_ca_id(\'\'); return false;" class="flex">전체분류 <span>'.$total_count.'</span></a></li>'.PHP_EOL;
    ?>
    </ul>
</div>
<!-- } 검색된 분류 끝 -->

 

기본은 위 소스처럼 되어있는데

 

전체분류가 항상 맨 뒤에 오는 것을 맨 앞으로 당겨오고싶어서 옮기니깐 total_cnt 가 0으로 고정되더라구요... $total_cnt 값을 계산하기 전에 불러오니... 0으로 뜨는거까진 이해를 했는데요;;

 

보다보니 상단에 총 몇건인지 출력하는 부분에서 $total_count 를 발견하고, 전체분류에 $total_cnt 대신 $total_count 를 넣어주고 맨 앞으로 가져오니 총 수량은 카운팅이 잘 됩니다....

 

그런데!! 이슈가 또 생깁니다;;

 

전체분류 9 / a카테고리 4 / b카테고리 5 라고 가정했을때,

a카테고리를 눌러서 들어가면 전체분류값이 4로 바뀝니다... qcaid 에 값이 있어서 해당 분류의 수량이 전체 수량으로 되어버리는 거 같은데요...;;

 

전체분류는 항상 9를 고정으로 가져가게 하고싶은... 검색결과내에서 전체를 제외한 카테고리를 들어가더라도

 

a카테고리 접속시

전체분류 9 / a카테고리 4

 

b카테고리 접속시

전체분류 9 / b카테고리 5

이렇게 뜨도록이요... 그러려면 어떤 식으로 접근해봐야 하나요??ㅠㅠㅠㅠ

 

일단 제가 생각했던건 foreach를 돌려서 $total_cnt 를 구하고,

전체 분류를 echo 로 출력시키고

다시 foreach 를 돌려서 각 카테고리들을 출력시키면 되지 않을까해서 해봤는데

 

이렇게 해도 증상은 똑같이 a카테고리 접속시 전체4 / a카테고리4 로 뜨는건 마찬가지더라구요;;ㅠㅠㅠ

 

방법이 없을까해서 문의드려봅니다ㅠㅠ

이 질문에 댓글 쓰기 :

답변 1

자바 스크립트 (Jquery) 로 처리하는 방법도 있기는 합니다. li 위치 변경

</div> 아래에 추가

 

<script>
  $("#ssch_cate ul li:eq(0)").before($("#ssch_cate ul li:last-child"));
</script>

빠른 답변 감사드립니다!!

전체분류의 카운팅이 바뀌는 부분은 기본 틀에서 조차 이슈가 생기는 부분이어서...

말씀해주신 스크립트로는 앞으로는 당겨올 수 있겠지만.. $total_cnt 의 값은 고정으로 되진 않네요;;

두번째 질문은 복잡해서.. 이해를 못하고 첫번째 질문과 관련있을 것으로 생각했습니다.

두번째 질문을 다시 찬찬히 살펴보고 검토해보니..
1시간 정도 살펴본 바로는..
관련있는 부분은 /bbs/search.php 의
if ($qcaid)
    $where[] = " a.ca_id like '$qcaid%' ";
입니다.


스킨 파일에서 새로 쿼리를 해서 구하는 방식의 코드를 생각해 봤는데..
다음과 같습니다.

foreach ($where as $k => $v) {
  if (strpos($v, 'ca_id like') === false)
    $where2[] = $v;
}

$sql_where = " where " . implode(" and ", $where2);
$sql = " select COUNT(*) as cnt $sql_common $sql_where ";
$row = sql_fetch($sql);
$t_cnt = $row['cnt'];
echo $t_cnt;

또는

하위분류로 들어간 경우에는.. ($qcaid 변수 값이 있는 경우)
전체 분류 링크만 표시하고, () 검색건수 표기는 빼는 방법을 생각해 볼 수도 있을 것 같습니다.

헐... 이거때문에 1시간이나....... 죄송합니다ㅠㅠㅠ 괜한 질문을 한거 같네요;;

이렇게까지 시간을 뺏으리라고는 생각못했습니다;;

제가 개발자가 아니어서 접근을 1차원적으로밖에 못해서 개발자분들은 저거를 구현한다면 어떤식으로 접근해서 할지 궁금해서....

조언을 구하고자 했던 의도였었는데 이거때문에 시간도 뺏고 소스까지 주시니.....;;; 땀이 다 나네요...;;

저도 안그래도 search.php 부분에서 qcaid 부분 걸러내는걸 주석처리 해봤었는데

주석처리하니 카테고리 클릭시 선택된 카테고리의 제품들로만 sorting이 되질 않아서... 그냥 다시 원복시키고 질문드려봤습니다ㅠㅠㅠ

저 소스대로 라면 search.skin.php 에서는 $t_cnt 로 불러오면 되겠네요!

일단 당장 확인은 어려울거 같습니다ㅠㅠㅠ

시간내서 도와주셨는데 바로 확인 못해서 죄송할 따름이고...ㅠㅠㅠㅠ
시간내서 도와주셔서 감사드립니다!!ㅠㅠ

내일 바로 확인해보겠습니다! 오늘 하루도 고생하셨습니다~!

알려주신 방법에서 맨 아래줄은 못봤었는데 지금 확인해보니 살짝 소름이 돋았네요;;

안그래도 저게 해결이 안되고 있어서...


echo '<li class="flex"><a href="#" onclick="set_ca_id(\'\'); return false;" class="flex">전체분류'.( !$qcaid ? ' <span>'.$total_count.'</span>' : '').'</a></li>'.PHP_EOL;


이렇게 그냥 카테고리로 접속했을때, $qcaid 값이 없을 경우에만 카운팅표시되게 해놓은 상태였는데... 맨아래에 이런식으로 하는 것도 조언주셨었네요!!

일단 알려주신 쿼리 적용해보고나서 계속 고정으로 띄울지 카테고리 접속시 숨길지는 그때 생각해보고 결정하면 될 것 같습니다!! 감사드립니다~!!

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

회원로그인

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