2013-05-19 6 views
0

이 질문은 프로그래밍 관련 질문이 아닙니다. 표시된 그림의 JSON 출력을 생성해야한다는 요구 사항이 있습니다. 내가 json_encode()의 사용법을 알고 있지만, 문제는 논리적으로 내가 어떻게 이러한 세부 사항들을 보여 줄지 알지 못한다.PHP에서 테이블의 JSON 출력

내가 가진 출력은 다음과 같습니다

{"name":"ZXY","success":1,"subjects":["DIGITAL COMMUNICATION TECHNIQUE(2012-13)","DIGITAL SIGNAL PROCESSING(2012-13)","ANTENNAS AND WAVE PROPAGATION(2012-13)","DIGITAL SWITCHING THEORY AND NETWORKS(2012-13)","ACCOUNTING FOR MANAGERS(2012-13)","DIGITAL COMMUNICATION TECHNIQUE LAB(2012-13)","DIGITAL SIGNAL PROCESSING LAB(2012-13)"]} 

Pic showing the details.

내가 가지고있는 세부 사항의 유효한 JSON 출력,

편집 할 수 있는지 알려주십시오 : 나는 MySQL의 데이터에서 JSON 출력을 얻을 수 있습니다. 이미지에서 제공 한 학생의 샘플 데이터. 내가 본 JSON은 PHP 페이지의 결과입니다. JSON 출력에 만족하지 않습니다. 효과적인 방식으로 JSON 형식으로 데이터를 표현하는 더 나은 방법을 묻습니다.

이것은 JSON 출력을 가져 오기 위해 작성한 PHP 코드입니다.

<?php 

$regno = $_GET['regno']; 

$host = 'localhost'; 
$user = 'root'; 
$password = ''; 
$database = 'android_app_details'; 
$dbc = mysqli_connect($host,$user,$password,$database) 
    or die('Error in connecting the database'); 


$query = 

    "SELECT SD.REGNO, STD.FNAME, STD.MNAME, STD.LNAME, SD.SUBJECT_NAME, AD.PRESENT_COUNT, AD.TOTAL_COUNT ". 
    "FROM ATTENDANCE_DETAILS AS AD, SUBJECT_DETAILS AS SD, STUDENT_DETAILS STD ". 
    "WHERE AD.ENROLLMENT_ID = SD.ENROLLMENT_ID ". 
    "AND SD.REGNO = '".$regno."' ". 
    "AND AD.BATCH_SUBJECT_ID = SD.BATCH_SUBJECT_ID ". 
    "AND SD.STUDENT_ID = STD.STUDENT_ID "; 

$result = mysqli_query($dbc, $query) 
    or die('Error in query'); 

$subject = Array(); 
$att = Array(); 
$total = Array(); 
$i = 0; 
$success = 0; 


while($row = mysqli_fetch_array($result)){ 
    if($row['MNAME']) 
     $name = $row['FNAME'].' '.$row['MNAME'].' '.$row['LNAME']; 
    else 
     $name = $row['FNAME'].' '.$row['LNAME']; 
    $subject[$i] = $row['SUBJECT_NAME']; 
    $i++; 
    $success = 1; 
} 

if($success) 
    $response = array(
     "name" => $name, 
     "success" => $success, 
     "subjects" => $subject 
    ); 
else 
    $response = array(
     "success" => $success 
    ); 
echo json_encode($response); 
?> 
+0

몇 가지 코드를 게시하십시오. – Yogus

+0

현재 JSON 출력이 정확히 잘못 되었습니까? – Onheiron

+0

글쎄, 먼저 모든 과목에는 '태그 이름'이 없으므로 접근하기가 어려울 것입니다. – NewUser

답변

1

하면 출력 pefectly 웰 (json_encode 함수로부터 예상) JSON 형성된다.

귀하의 의견에 따르면 귀하가 2 번째로 유효하지 않은 배열 인 subjects:[...] 어레이가 무엇인지 알 수 있습니다.

무엇 JSON뿐만 아니라 XML 및 기타 구조화 된 데이터 형식 모든 약의 정의 구조와 당신이 그렇다면 데이터 모두 보유하고 구조화 된 데이터 :

{object: 
    {subobject:{subobjectName:"Penny"} 
} 

구조체은 모두 object->subobject->subobjectName입니다. 일부 데이터"Penny"입니다.

이제 우리는 다음과 같은 예를 들어, 동일한 태그 이름와 기관의 집합으로 JSON 배열을 볼 수

{object:{ 
    subobjects:[ 
     {subobjectName:"Penny",subobjectLasName:"Rose"}, 
     {subobjectName:"Lewis",subobjectLasName:"Armstrong"}, 
     ... 
    ] 
}} 

{}s 당신이 찾고있는 것이다,하지만 경우 구조/데이터에서이 마지막 배열은 구조 (객체) 배열 배열이므로 해당 요소는 JSON 객체입니다.

은 당신이 당신의 게시 된 JSON 출력에있는 것은 구조적 요소하지 않으며 subjecs보다 다른 특정 태그 이름이없는 데이터 (문자열)의 배열입니다.

당신이 XML에 익숙하다면이 쉽게 이해할 수 있어야한다 :

<student> 

    <name>Penny</name> 
    <last_name>Rose</last_name> 
    <subjects>Subject1</subjects> 
    <subjects>Subject2</subjects> 
    <subjects>Subject3</subjects> 

</student> 

을 위의이 유효한 XML이고, 당신은 당신의 출력에있는 종류의 일부 JSON으로 변환, 이것이 그 Subject1, Subject2, Subject3 텍스트 때문에 엔티티에는 부모 태그가 없지만 일반 텍스트가 들어있는 같은 이름의 태그 배열 인 subjects이 있습니다.

나는 이것이 당신의 질문에 대답하지 않는다는 것을 안다. 그러나 나는 당신이 얻은 결과에 대해 당신의 더빙을 깨끗이 해주기를 바란다.