Моя конечная цель - получить график, который отображает несколько линейных диаграмм (в зависимости от количества лет) с указанием всех месяцев, отображаемых на оси X, с отображением количества на Y-ось. Это самое близкое, что я видел, что напоминает то, что я хочу добиться:Динамически заполняет диаграмму Google с данными из MYSQL
На рисунке выше показано, что я хочу достичь. Как указывалось ранее, месяцы на оси X с количеством на оси Y. то «ценности» были бы те годы, которые были возвращены из запроса то есть каждый год будет иметь свою собственную линию диаграммы
Это бит PHP, который возвращает JSON:
<?php
$results = array('cols' => array (array('label' => 'Date', 'type' => date'),
array('label' => 'Amount', 'type' => 'number')
),
'rows' => array()
);
$query = $db->prepare('SELECT * FROM Claims GROUP BY EXTRACT(MONTH FROM ClaimDate) , EXTRACT(YEAR FROM ClaimDate) ');
$query->execute();
$rows1 = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($rows1 as $row)
{
$ClaimDate = DateTime::createFromFormat('Y-m-d H:i:s', $row['ClaimDate'])->format('Y-m-d');
$dateArr = explode('-', $ClaimDate);
$year = (int) $dateArr[0];
$month = (int) $dateArr[1] - 1;
$day = (int) $dateArr[2];
$results['rows'][] = array('c' => array(array('v' => "Date($year, $month, $day)"), array('v' => $row['amount'])
));
}
$json = json_encode($results, JSON_NUMERIC_CHECK);
// print_r($json);exit;
?>
Это JSON вернулся:
{"cols":[{"label":"Date","type":"date"},{"label":"Amount","type":"number"}],"rows":[{"c":[{"v":"Date(2015, 5, 23)"},{"v":6000}]},{"c":[{"v":"Date(2016, 5, 23)"},{"v":16000}]},{"c":[{"v":"Date(2015, 6, 23)"},{"v":10000}]},{"c":[{"v":"Date(2016, 6, 23)"},{"v":10000}]},{"c":[{"v":"Date(2015, 7, 23)"},{"v":5000}]},{"c":[{"v":"Date(2016, 7, 23)"},{"v":60000}]}]}
И, наконец, это функция, которая делает диаграмму:
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart()
{
var data = new google.visualization.DataTable(<?php echo json_encode($json); ?>);
var chart = new google.visualization.LineChart(document.getElementById('line_chart'));
chart.draw(data, {width: 400, height: 240});
}
</script>
<div id="line_chart"></div>
Вывод из всего этого выглядит следующим образом:
Как было показано выше, я совершенно некоторое расстояние в достижении того, что я хочу. Я застрял на этом и любая помощь была бы оценена
EDIT
На основании ответа Ram Kannan Раджа, я добавил ORDER BY ClaimDate ASC на мой запрос и линейный график делает выглядит немного более презентабельно:
, но еще не мой желаемый выход. Каждый год должен иметь свой собственный линейный график, и ось Х будет все месяцы
надеюсь, что это помогает, [вот PHP скрипку] (http://phpfiddle.org/main/code/5kgj-4kr0) Я использовал для тестирования со статическими данными ... – WhiteHat