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);