영카트 카테고리를 json 으로 출력 문의 드립니다. 채택완료
영카트 카테고리(분류)를 다단계 형식의 json으로 뽀으려 합니다.
</span> </p><p><span style="white-space:pre"> </span>// 슬라이드 정보</p><p><span style="white-space:pre"> </span>$sql = "SELECT * FROM g5_shop_category ORDER BY ca_id ASC";</p><p><span style="white-space:pre"> </span>$res = sql_query($sql);</p><p><span style="white-space:pre"> </span>while( $row = sql_fetch_array($res) ) {</p><p><span style="white-space:pre"> </span>$category['name'] = $row['ca_name'];</p><p><span style="white-space:pre"> </span>$category['code'] = $row['ca_id'];</p><p><span style="white-space:pre"> </span>$cateAll[] = $category;</p><p><span style="white-space:pre"> </span>}</p><p>
</p><p><span style="white-space:pre"> </span>$retArr['category'] = $cateAll;</p><p>
</p><p><span style="white-space:pre"> </span>//echo "<pre>";</p><p><span style="white-space:pre"> </span>//print_r( $retArr );</p><p>
</p><p><span style="white-space:pre"> </span>$retArr = my_json_encode($retArr);</p><p>
</p><p><span style="white-space:pre"> </span>echo $retArr;</p><p>
</p><p><span style="white-space:pre"> </span>function my_json_encode($arr) {</p><p><span style="white-space:pre"> </span>array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });</p><p><span style="white-space:pre"> </span>return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');</p><p><span style="white-space:pre"> </span>}</p><p>
이처럼 뽑으니 다단계가 아니라 1단계로만 나와서 ㅠ.ㅠ
3단계 카테고리까지 뽑으려 합니다.
혹시 아시는분 있으시면 부탁좀 드립니다.
이틀동안 머리 뽀사질려 합니다.
답변 3개
</p><p><?php </p><p>$sql = "SELECT * FROM g5_shop_category ORDER BY ca_id ASC";</p><p>$res = sql_query($sql);</p><p>while( $row = sql_fetch_array($res) ) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$category['name'] = $row['ca_name'];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$category['code'] = $row['ca_id'];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$len = strlen($category['code']);</p><p>
</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if($len == 2){</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$cateAll[] = $category;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$code1 = substr($category['code'], 0, 2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$key = array_search( $code1, $cateAll);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span> </p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if(len==4){</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$cateAll[$key][] = $category;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$code2 = substr($category['code'], 0, 4);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$key2 = array_search( $code2, $cateAll[$key]);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$cateAll[$key][$key2][] = $category;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p>}</p><p>
</p><p>echo json_encode($cateAll);</p><p>?></p><p>
이게 원하시는게 맞는가요?
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
2단계까진 표현했는데 그이상은 힘드네요 ㅠ.ㅠ
</p><p><span style="white-space:pre"> </span>$sql = "SELECT * FROM g5_shop_category where length(ca_id) = '2' ORDER BY ca_id ASC";</p><p><span style="white-space:pre"> </span>$res = sql_query($sql);</p><p><span style="white-space:pre"> </span>while( $row = sql_fetch_array($res) ) {</p><p><span style="white-space:pre"> </span>$slide['name'] = $row['ca_name'];</p><p><span style="white-space:pre"> </span>$slide['code'] = $row['ca_id'];</p><p>
</p><p><span style="white-space:pre"> </span>//슬라이드별 cell 정보</p><p><span style="white-space:pre"> </span>$cell = array();</p><p><span style="white-space:pre"> </span>$sql = "SELECT * FROM g5_shop_category where length(ca_id) = '4' and ca_id like '%{$row['ca_id']}' ORDER BY ca_id ASC";</p><p><span style="white-space:pre"> </span>$res2 = sql_query($sql);</p><p><span style="white-space:pre"> </span>while( $row2 = sql_fetch_array($res2) ) {</p><p><span style="white-space:pre"> </span>$tmpArr['name'] = $row2['ca_name'];</p><p><span style="white-space:pre"> </span>$tmpArr['code'] = $row2['ca_id'];</p><p><span style="white-space:pre"> </span>$cell[] = $tmpArr;</p><p><span style="white-space:pre"> </span>}</p><p><span style="white-space:pre"> </span></p><p><span style="white-space:pre"> </span>$slide['sub'] = $cell;</p><p><span style="white-space:pre"> </span>$slideAll[] = $slide;</p><p><span style="white-space:pre"> </span>}</p><p><span style="white-space:pre"> </span>$retArr['category'] = $slideAll;</p><p>
</p><p><span style="white-space:pre"> </span>$retArr = my_json_encode($retArr);</p><p>
</p><p><span style="white-space:pre"> </span>echo $retArr;</p><p>
</p><p><span style="white-space:pre"> </span>function my_json_encode($arr) {</p><p><span style="white-space:pre"> </span>array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });</p><p><span style="white-space:pre"> </span>return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');</p><p><span style="white-space:pre"> </span>}</p><p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그렇게 적용하니 아래와같이 나오네요..
[code]
[
{
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"
}
]
[/code]