Codeigniter/JS:从数据库获取数据



我的codeigniter中有JavaScript,它可以创建实时图形。我从数据库中获取数据。 我需要实时图形,它将每x秒从数据库中获取数据,并将其绘制成图形。

我有这个:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script>
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawBasic);
function drawBasic() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'X');
data.addColumn('number', 'Dogs');
var options = {
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Popularity'
}
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
setInterval(function() {
grepData();
data.addRows([
[prvni, druha]
]);
chart.draw(data, options);
}, 6000);
function grepData(){
<?php
$vyber = $this->db->query('SELECT id, percent FROM cpu_stats ORDER BY id DESC LIMIT 1;');
foreach ($vyber->result_array() as $row)
{
?>
prvni = <?php echo $row->id;?>;
druha = <?php echo $row->percent;?>;<?php
}?>
}
}

</script>

问题是,查询只会获取一次数据。当我在函数中编写第二个查询时,它将获取两次数据。当我删除查询并只写入prvni++; druha++时,图形将起作用。

对不起我的英语。

Codeigniter是MVC(模型-视图-控制器(框架。在 View 中使用数据库查询是一种不好的做法。

为了动态绘制图形点,您需要每X秒运行一次AJAXAJAX将调用控制器中的方法,然后控制器将调用模型中的方法,然后模型将与数据库通信并将结果返回给控制器,然后控制器将再次将结果返回到视图。

哦,谢谢。现在我明白了

<script>
$(document).ready(function () {
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawBasic);
var prvni = 0;
var druha = 0;
function drawBasic() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'X');
data.addColumn('number', 'Y');
var options = {
vAxis: {
title: 'Vytíženost (%)'
}
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
function refreshData() {
data.addRows([ [prvni, druha] ]);
chart.draw(data, options);
prvni++;
//druha++;
}
function load_data(query) {
$.ajax({
url: "<?php echo base_url(); ?>main/selectStats",
method: "POST",
data: {query: query},
success: function (select) {
druha = select;
refreshData();
},
error: function () {
alert("BAD");
}
})
}
setInterval(function () {
load_data();
//refreshData();
}, 1000);
}
});
</script>

当我使用警报(德鲁哈(时;在成功部分,我可以看到它的价值。但是图形不起作用。当我使用druha++时;而不是druha = select;,图形工作。 一些维修技巧?

相关内容

  • 没有找到相关文章

最新更新