boxcategory.skin.php 에 해당 1차 2차 분류만 표시하고 싶습니다.
관련링크
본문
boxcategory.skin.php 에 현재 분류에 속하는 1차분류와 그 2차분류를 표시하게 하고 싶습니다.
인덱스에는 인클루드 시키지 않을거고요.
원래는 모든 1차분류와 마우스오버하면 2차분류까지 나오는데
이것저것 하다보니 해당 1차분류만 나오게 하는 건 했습니다.
문제는 그 1차분류의 2차분류를 나오게 해야 하는데 그걸 모르겠어요.
사실 PHP를 전혀 몰라서...
검색을 이래저래해봤는데 제가 맞는 상황이 거의 없었는지 못찾았습니다.
혹시 아시는 분 있다면 조언 부탁드립니다.
아래는 현재 제가 수정한 코드입니다.
<!-- 쇼핑몰 카테고리 시작 -->
<nav class="subshopmn">
<!--h2>쇼핑몰 카테고리</h2-->
<ul id="gnb_1dul">
<?php
$hsql = " select ca_id, ca_name from {$g5['g5_shop_category_table']} where length(ca_id) = '2' and ca_use = '1' order by ca_order, ca_id ";
$hresult = sql_query($hsql);
?>
<li class="on"><a href="<?php echo G5_SHOP_URL.'/list.php?ca_id='.$row['ca_id']; ?>"><?php echo $row['ca_name']; ?></a></li>
</ul>
</nav>
<!-- 쇼핑몰 카테고리 끝 -->
!-->
답변 1
질문에 보탬이 좀 될지모르겠지만
개념적으로 설명을 드립니다.
1줄짜리 카테고리는 필요하신 부분을 조절하시면 될거 같구요
쇼핑몰의 카테고리는
두개의 숫자로 커지게 되어있습니다.
예를들어
3단계 카테고리인경우
가전 > 영상 > TV
의 네이게이션을 가진다고 가정하고
[가전] 의값은
ca_id : 10
ca_name : 가전
[영상] 의 값은
ca_id : 1010
ca_name : 영상
[TV]의 값은
ca_id : 101010
ca_name : TV
를 가지고 있게됩니다.
물론
1개의 값들만 존재하는것으로 표현한거죠
복잡한 설명은 여기에 다 적을수 없기때문에
쿼리로 설명할경우
2레벨의 값을 다 표현하려면
위에 작성하신 방식은
단일 카테고리만 존재한다고 봐야 합니다.
1레벨은
ca_id 가 두개의 숫자만 가진것으로 판단한것이구요
그래서
쿼리상에서
length(ca_id) = 2 라고 보는겁니다.
ca_id 가 2자리로 구성된것들은 1레벨
4자리로 된것들은 2레벨
6자리로 된것들은 3레벨
그러면
위에서 표기하고자 하는대로 다 표현할수는 없겠죠
<!-- 쇼핑몰 카테고리 시작 -->
<nav class="subshopmn">
<!--h2>쇼핑몰 카테고리</h2-->
<ul id="gnb_1dul">
<?php
$hsql = " select ca_id, ca_name from {$g5['g5_shop_category_table']} where length(ca_id) = '2' and ca_use = '1' order by ca_order, ca_id ";
$hresult = sql_query($hsql);
// 이부분이 순환되어야 1레벨들이 표기되겠죠
while( $row=sql_fetch($hresult)) {
//1레벨의 카테고리 표기
?>
<li class="on">
<a href="<?php echo G5_SHOP_URL.'/list.php?ca_id='.$row['ca_id']; ?>"><?php echo $row['ca_name']; ?></a>
</li>
<?php
// 여기서 각각 1레벨의 연관 2레벨값들을 찾아봐야 합니다.
$hsql2 = "select ca_id, ca_name from {$g5['g5_shop_category_table']} where length(ca_id) = '4' and ca_use = '1' ";
//여기까지는 위의 카네고리와 유사하고 길이만 2레벨로 합니다만
// 1레벨의 연관을 찾기위해서 1레벨의 카테고리와의 연관성을 이어줍니다.
$hsql2 .="and ca_id like '".$row['ca_id']."$' ";
// 그리고 나서 정렬등을 처리하게 쿼리를 만듭니다.
$hsql2 .= "order by ca_order, ca_id ";
$hresult2 = sql_query($hsql2);
$hcnt = 0;
// 2레벨의 카테고리들이 존재하면 2차순환합니다.
while ($row2 = sql_fetch($hresult2)) {
if ($hcnt == 0) {
//2레벨이 처음이면 태그열기?>
<ul id="gnb_2dul">
<?php }?>
<li ><a href="<?php echo G5_SHOP_URL.'/list.php?ca_id='.$row2['ca_id']; ?>"><?php echo $row2['ca_name']; ?></a></li>
<?php
$hcnt++;
}
// 2차순환종료
// 2레벨이 작동했으면 태그닫기
if ($hcnt > 0) {?>
</ul>
<?}?>
<?php
}
// 1레벨의 카테고리 순환종료?>
</ul>
</nav>
<!-- 쇼핑몰 카테고리 끝 -->