I am trying to create a bar chart using JSON data and need to change the format into month series, but I am confused on how to do that. Please help on how I can fix this.
Current JSON data:
{ "data": [
{
"name": "January",
"facility": "Discussion Room",
"value": 22
},
{
"name": "January",
"facility": "Carrel Room",
"value": 102
},
{
"name": "January",
"facility": "Locker",
"value": 5
},
{
"name": "February",
"facility": "Discussion Room",
"value": 86
},
{
"name": "February",
"facility": "Carrel Room",
"value": 155
},
{
"name": "Mac",
"facility": "Carrel Room",
"value": 224
},
{
"name": "Mac",
"facility": "Locker",
"value": 3
},
]
}
Desired JSON data:
{ "data": [
{
"name": "January",
"series":[
{ "name":"Discussion Room","value": 22},
{ "name": "Carrel Room", "value": 102},
{ "name": "Locker", "value": 5},
]
"name": "February",
"series":[
{ "name":"Discussion Room","value": 86},
{ "name": "Carrel Room", "value": 155},
{ "name": "Locker", "value": 0},
]
"name": "March",
"series":[
{ "name":"Discussion Room","value": 0},
{ "name": "Carrel Room", "value": 224},
{ "name": "Locker", "value": 3},
]
]
}
My Code:
$db = mysqli_connect($host, $user, $pass, $database) or die("you did not connect");
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Credentials: true");
    header('Access-Control-Allow-Methods: GET');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Origin, Content-Type');
$facility =($_GET['year']);
$query = "select monthname(datetime) as 'name',
        case 
            when all_items.itype = '127' then 'Discussion Room'
            when all_items.itype = '126' then 'Carrel Room'
            when all_items.itype = '121' then 'Locker'
            else '0' 
        end as 'facility',
        count(*) AS 'value'
        from statistics 
        left join (
            select itemnumber, itype from deleteditems
            union
            select itemnumber, itype from items 
            ) as all_items USING (itemnumber)
        where all_items.itype in (127, 126, 121) and
        statistics.type = 'issue' and
        year(statistics.datetime) = '$facility' 
        group by month(datetime), all_items.itype desc";
$result = mysqli_query($db, $query)or die(mysqli_error());
$response = array();
$posts = array();
while($row=$result->fetch_assoc()) 
{ 
$month=$row['name'];
$facility=$row['facility'];
$value=$row['value'];
$posts[] = array('name'=> $month, 'facility'=> $facility, 'value'=> $value); 
}
$response['data'] = $posts;
header('Content-Type: application/json');
echo json_encode($response, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
 
     
    