영카트 카테고리를 json 으로 출력 문의 드립니다.
본문
영카트 카테고리(분류)를 다단계 형식의 json으로 뽀으려 합니다.
// 슬라이드 정보
$sql = "SELECT * FROM g5_shop_category ORDER BY ca_id ASC";
$res = sql_query($sql);
while( $row = sql_fetch_array($res) ) {
$category['name'] = $row['ca_name'];
$category['code'] = $row['ca_id'];
$cateAll[] = $category;
}
$retArr['category'] = $cateAll;
//echo "<pre>";
//print_r( $retArr );
$retArr = my_json_encode($retArr);
echo $retArr;
function my_json_encode($arr) {
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
이처럼 뽑으니 다단계가 아니라 1단계로만 나와서 ㅠ.ㅠ
3단계 카테고리까지 뽑으려 합니다.
혹시 아시는분 있으시면 부탁좀 드립니다.
이틀동안 머리 뽀사질려 합니다.
답변 3
<?php
$sql = "SELECT * FROM g5_shop_category ORDER BY ca_id ASC";
$res = sql_query($sql);
while( $row = sql_fetch_array($res) ) {
$category['name'] = $row['ca_name'];
$category['code'] = $row['ca_id'];
$len = strlen($category['code']);
if($len == 2){
$cateAll[] = $category;
}else{
$code1 = substr($category['code'], 0, 2);
$key = array_search( $code1, $cateAll);
if(len==4){
$cateAll[$key][] = $category;
}else{
$code2 = substr($category['code'], 0, 4);
$key2 = array_search( $code2, $cateAll[$key]);
$cateAll[$key][$key2][] = $category;
}
}
}
echo json_encode($cateAll);
?>
이게 원하시는게 맞는가요?
!-->영카트의 분류(카테고리)를
메뉴리스트업 되듯이 나오길르 원하시는건가요?
Json으로 처리를 하던
카테고리를 메뉴화 하던 동일한 로직과 쿼리가 적용될것으로 보여집니다.
영카트 기본스킨의
listcategory.skin.php
파일을 참고하세요
ca_id값을 다루는게 관건일것으로보여집니다.
여기에서 로직을 다 만들어드릴수는 없고,
참고할 영역만 알려드립니다.
2단계까진 표현했는데 그이상은 힘드네요 ㅠ.ㅠ
$sql = "SELECT * FROM g5_shop_category where length(ca_id) = '2' ORDER BY ca_id ASC";
$res = sql_query($sql);
while( $row = sql_fetch_array($res) ) {
$slide['name'] = $row['ca_name'];
$slide['code'] = $row['ca_id'];
//슬라이드별 cell 정보
$cell = array();
$sql = "SELECT * FROM g5_shop_category where length(ca_id) = '4' and ca_id like '%{$row['ca_id']}' ORDER BY ca_id ASC";
$res2 = sql_query($sql);
while( $row2 = sql_fetch_array($res2) ) {
$tmpArr['name'] = $row2['ca_name'];
$tmpArr['code'] = $row2['ca_id'];
$cell[] = $tmpArr;
}
$slide['sub'] = $cell;
$slideAll[] = $slide;
}
$retArr['category'] = $slideAll;
$retArr = my_json_encode($retArr);
echo $retArr;
function my_json_encode($arr) {
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
답변을 작성하시기 전에 로그인 해주세요.