1 回答

TA貢獻1834條經(jīng)驗 獲得超8個贊
首先,我們分別查詢兩個表。
然后合并響應數(shù)據(jù),Table1Table2
<?php
$servername = "localhost";
$database = "test";
$username = "test";
$password = "12345";
$connect = mysqli_connect($servername, $username, $password, $database);
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
$data = array(
'Table1' => array(),
'Table2' => array()
);
$query = ("SELECT * FROM Table1");
$result = mysqli_query($connect, $query);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
array_push($data['Table1'], [$row['time'], floatval($row['temp'])]);
}
}
$query = ("SELECT * FROM Table2");
$result = mysqli_query($connect, $query);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
array_push($data['Table2'], [$row['time'], floatval($row['temp'])]);
}
}
echo json_encode($data);
mysqli_close($connect);
?>
繪制圖表時,我們只能有一個x軸。
所以我們需要在時間列上連接兩個表。
但首先,谷歌圖表只需要加載一次。
不是每次我們繪制圖表時。
所以我們首先加載谷歌圖表,然后再進行其他操作。
而且我們并不確切知道需要多長時間才能獲取數(shù)據(jù)并繪制圖表。
使用,而不是使用 。setIntervalsetTimeout
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var options = {
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Sensors Scale'
},
colors: ['#a52714', '#097138']
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart, 'ready', function () {
setTimeout(drawLineColors, 5000);
});
drawLineColors();
function drawLineColors() {
var data1 = new google.visualization.DataTable();
data1.addColumn('string', 'Date');
data1.addColumn('number', 'Temperature');
var data2 = new google.visualization.DataTable();
data2.addColumn('string', 'Date');
data2.addColumn('number', 'Temperature');
$.ajax({
url: 'data.php',
dataType: 'json',
}).done(function (jsonData) {
data1.addRows(jsonData.Table1);
data2.addRows(jsonData.Table2);
var joinData = google.visualization.data.join(data1, data2, 'full', [[0, 0]], [1], [1]);
var rowIndex = data1.getNumberOfRows() - 1;
var lastTime = data1.getValue(rowIndex, 0);
var lastTemp = data1.getValue(rowIndex, 1);
var rowIndex2 = data2.getNumberOfRows() - 1;
var lastTime2 = data2.getValue(rowIndex2, 0);
var lastTemp2 = data2.getValue(rowIndex2, 1);
$(".TempStatus").html(lastTemp + " °C");
$(".Temp2Status").html(lastTemp2 + " °C");
chart.draw(joinData, options);
});
}
});
其他注意事項...
async: false
在 ajax 已被棄用的情況下,請改用回調(diào)。done
也一樣,不需要轉(zhuǎn)換經(jīng)典圖表的選項,'line'
google.visualization.LineChart
google.charts.Line
google.charts.Line.convertOptions
- 1 回答
- 0 關注
- 101 瀏覽
添加回答
舉報