영카트 카테고리를 json 으로 출력 문의 드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
영카트 카테고리를 json 으로 출력 문의 드립니다.

QA

영카트 카테고리를 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);
?>


이게 원하시는게 맞는가요?

답변해주셔서 감사합니다.

그렇게 적용하니 아래와같이 나오네요..


[
{
0: [
{
name: "분류1-1",
code: "1010"
},
{
name: "분류1-1-1",
code: "101010"
},
{
name: "분류1-2",
code: "1020"
},
{
name: "분류1-2-1",
code: "102010"
},
{
name: "분류1-3",
code: "1030"
},
{
name: "분류2-1",
code: "2010"
}
],
name: "분류1",
code: "10"
},
{
name: "분류2",
code: "20"
}
]

영카트의 분류(카테고리)를 

메뉴리스트업 되듯이 나오길르 원하시는건가요? 


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');
	}
답변을 작성하시기 전에 로그인 해주세요.
전체 49
QA 내용 검색

회원로그인

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