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

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

회원로그인

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