Я работаю над интерфейсом, который отображает данные, полученные из моей базы данных, благодаря линейной диаграмме Google. Однако новые данные сохраняются в моей базе данных каждые 10 секунд, и я не могу автоматически обновлять диаграмму.
Мне нужно что-то действительно простое, и я уже посмотрел в Интернете. Я читал что-то о Javascript/AJAX/JQuery... но мне удобнее работать с оборудованием :D
Вот мои файлы РЕДАКТИРОВАТЬ: Chart_get и основной файл были изменены в соответствии с ответом @Michel.
fetch.php — получение данных и эхо
<?php // Connection and Request stuff
$host = blablabla
(...)
$req = $bdd->query('SELECT id, battery FROM Station');
while ($data = $req->fetch()){
$id = addslashes($data['id']);
$charge_batt = intval($data['charge_batt']);
$result .= "['".$id."' , ".$charge_batt."],";
}
$result = substr($result, 0, -1); // Erase the last ","
echo $result;
?>
Выход :
['1' , 90],['2' , 89],['3' , 80],['4' , 100],['5' , 90],['6' , 50],['7' , 67]
chart_get.php — инициализирует диаграмму и рисует ее с данными «echo $result»
<script type="text/javascript" src="//www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?php
echo ("['Date', 'Battery'],");
include('fetch.php');
?>
]);
var options = {
title: 'Battery health',
animation:{
duration: 1000,
easing: 'out',
},
curveType: 'function'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
Чтобы обновить "chart_div", я пробовал:
main.html — скрипт jQuery с функцией загрузки
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Project - Chart</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// first load it once, so it display's the chart
$('#tableHolder').load('chart_get.php');
// then execute the interval
setInterval(function(){$('#tableHolder').load('chart_get.php');}, 5000);
});
</script>
</head>
<body>
<p>Hello</p>
<div id="tableHolder"> </div>
</body>
</html>
Но график вообще не отображается. Я совершенно не понимаю, что я делаю неправильно. Я быстро читаю несколько руководств по javascript, но если вы знаете, как решить мою проблему, было бы здорово помочь мне :) Спасибо!