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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
검색결과 검색된 분류 부분에서 전체를 맨앞에 위치시킬때 카운팅

QA

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

답변 1

본문

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 값이 없을 경우에만 카운팅표시되게 해놓은 상태였는데... 맨아래에 이런식으로 하는 것도 조언주셨었네요!!

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로