Create nested json object using php mysql

后端 未结 2 1178
没有蜡笔的小新
没有蜡笔的小新 2020-12-10 05:19

I have two tables, table 1 has 2 fields (question_pk, question_name) and table 2 has 4 fields(ans_pk, options, question_fk and right_answer). I want to create json l

相关标签:
2条回答
  • 2020-12-10 06:00

    I think this code is easier to figure out and by the way it uses mysqli ...

    This is based on my own data structure, I am in the middle of something and I have no time a.t.m. to adapt it to the question but should easy to figure out how to adapt it to other structures :

    $usersList_array =array();
    $user_array = array();
    $note_array = array();
    
    $fetch_users = mysqli_query($mysqli, "SELECT 
            ID, 
            Surname, 
            Name 
        FROM tb_Users 
        WHERE Name LIKE 'G%' 
        ORDER BY ID") or die(mysqli_error($mysqli));
    while ($row_users = mysqli_fetch_assoc($fetch_users)) {
        $user_array['id'] = $row_users['ID'];
        $user_array['surnameName'] = $row_users['Surname'].' '.$row_users['Name'];
        $user_array['notes'] = array();
    
        $fetch_notes = mysqli_query($mysqli, "SELECT 
            id, 
            dateIns, 
            type, 
            content 
         FROM tb_Notes 
         WHERE fk_RefTable = 'tb_Users' AND 
             fk_RefID = ".$row_users['ID'].""
       ) or die(mysqli_error($mysqli));
        while ($row_notes = mysqli_fetch_assoc($fetch_notes)) {
            $note_array['id']=$row_notes['id'];
            $note_array['dateIns']=$row_notes['dateIns'];
            $note_array['type']=$row_notes['type'];
            $note_array['content']=$row_notes['content'];
            array_push($user_array['notes'],$note_array);
        }
    
        array_push($usersList_array,$user_array);
    }
    
    $jsonData = json_encode($usersList_array, JSON_PRETTY_PRINT);
    
    
    echo $jsonData; 
    

    Resulting JSON :

    [
    {
        "id": "1",
        "surnameName": "Xyz Giorgio",
        "notes": [
            {
                "id": "1",
                "dateIns": "2016-05-01 03:10:45",
                "type": "warning",
                "content": "warning test"
            },
            {
                "id": "2",
                "dateIns": "2016-05-18 20:51:32",
                "type": "error",
                "content": "error test"
            },
            {
                "id": "3",
                "dateIns": "2016-05-18 20:53:00",
                "type": "info",
                "content": "info test"
            }
        ]
    },
    {
        "id": "2",
        "cognomeNome": "Xyz Georg",
        "notes": [
            {
                "id": "4",
                "dateIns": "2016-05-20 14:38:20",
                "type": "warning",
                "content": "georg warning"
            },
            {
                "id": "5",
                "dateIns": "2016-05-20 14:38:20",
                "type": "info",
                "content": "georg info"
            }
        ]
    }
    ]
    
    0 讨论(0)
  • 2020-12-10 06:12

    Hi try this,

    <?php
    include '../config/config.php';
    if(isset($_GET['sub_cat_id']))
    {
        $sub_cat_id = $_GET['sub_cat_id']; 
        $result = mysql_query("SELECT * FROM $questions WHERE sub_cat='$sub_cat_id' ORDER BY level_fk ASC"); 
        $json_response = array(); //Create an array
        while ($row = mysql_fetch_array($result))
        {
            $row_array = array();
            $row_array['qus_pk'] = $row['qus_pk'];        
            $row_array['question'] = $row['question'];
            $row_array['answers'] = array();
            $qus_pk = $row['qus_pk'];  
    
            $option_qry = mysql_query("SELECT * FROM $qus_ans WHERE qus_pk=$qus_pk");
            while ($opt_fet = mysql_fetch_array($option_qry))
            {
                $row_array['answers'][] = array(
                    'options' => $opt_fet['options'],
                    'right_ans' => $opt_fet['right_ans'],
                );
    
            }
            array_push($json_response, $row_array); //push the values in the array
        }
        echo json_encode($json_response);
    }
    ?>    
    
    0 讨论(0)
提交回复
热议问题