Javascript Chart.js不显示来自数据库的结果
我正在创建一个图表,显示数据库中每个传感器的数据。我成功地将其设置为仅1个传感器,但当我尝试在数据库中显示每个传感器的图表时,没有显示任何线条 我正在使用以下代码:Javascript Chart.js不显示来自数据库的结果,javascript,php,mysql,chart.js,Javascript,Php,Mysql,Chart.js,我正在创建一个图表,显示数据库中每个传感器的数据。我成功地将其设置为仅1个传感器,但当我尝试在数据库中显示每个传感器的图表时,没有显示任何线条 我正在使用以下代码: // select all sensors in db $sql = "SELECT * FROM sensoren"; $result = $link->query($sql); if ($result->num_rows > 0) { // data of each row while($ro
// select all sensors in db
$sql = "SELECT * FROM sensoren";
$result = $link->query($sql);
if ($result->num_rows > 0) {
// data of each row
while($row = $result->fetch_assoc()) {
$sensor = $row['sensor_id'];
echo "<div id='sensor-$sensor' class='sensoren'>";
echo "<div class='one-third'>";
echo "<center><h4>Sensor</h4></center>";
echo "<center><h4>$sensor</h4></center>";
echo "</div>";
echo "<div class='two-third'>";
/* Database settings for selecting of values that the sensor send to db */
$host = 'localhost';
$user = 'casbek1q_system';
$pass = 'JUITGhJ>NKIL^';
$db = 'casbek1q_system';
$mysqli = new mysqli($host,$user,$pass,$db) or die($mysqli->error);
$data1 = '';
$data2 = '';
// select data from each sensor in db
$sql2 = "SELECT * FROM `metingen` WHERE sensorid = '$sensor' ORDER BY id ASC LIMIT 10 ";
$result2 = mysqli_query($mysqli, $sql2);
// setting them in array
while ($row2 = mysqli_fetch_array($result2)) {
$data1 = $data1 . '"'. $row2['waarde'].'",';
$data2 = $data2 . '"'. $row2['timestamp'].'",';
}
// removing last comma
$data1 = trim($data1,",");
$data2 = trim($data2,",");
?>
<div class="container">
<h4>Laatste metingen van Sensor <?php echo $sensor ?></h4>
<canvas id="chart<?php echo $sensor;?>" style="width: 100%; height: 100%; background: #222; border: 1px solid #555652;"></canvas> <!-- giving each chart a unique ID -->
<!-- stuk script van chart.js om de grafiek te maken -->
<script>
var ctx = document.getElementById(chart<?php echo $sensor;?>).getContext('2d');
var myChart = new Chart(ctx), {
type: 'line',
data: {
labels: [<?php echo $data2; ?>], // times from measurement
datasets:
[{
label: 'Sensor <?php echo $sensor;?>', // give a name to line
data: [<?php echo $data1; ?>], // display measurements
backgroundColor: 'transparent',
borderColor:'rgba(255,99,132)',
borderWidth: 3
}]
},
options: {
scales: {scales:{yAxes: [{beginAtZero: false}], xAxes: [{autoskip: true, maxTicketsLimit: 20}]}},
tooltips:{mode: 'index'},
legend:{display: true, position: 'top', labels: {fontColor: 'rgb(255,255,255)', fontSize: 16}}
}
});
</script>
<?php
echo "</div>";
echo "</div>";
echo "</div>";
} // end while loop, go to next sensor
}
每个图中都应该有一条线,因为我的数据库中有2个传感器,每个传感器都有多个测量值
当我试图为每个传感器制作一个唯一的图表时,我遇到了这个问题,因为documentGetElementById需要为每个表提供一个唯一的id。什么是$link,为什么在调用$mysqli之后还要打开另一个连接?请阅读:@Dharman$link来自我的dbconf文件,另称为$conn.$mysqli来自我在互联网上找到的一段代码,我可以从数据库将值放入图形中。@Dharman我知道SQL注入和预处理语句,这不是公开的。仅供个人使用。您已通过在此处发布将其公开。如果你知道如何正确地做,为什么要选择错误的、有缺陷的方法呢?你是在射自己的腿,不管它是供你使用还是供全世界使用。