从 SQL 数据库显示信息到谷歌图表
Posted
技术标签:
【中文标题】从 SQL 数据库显示信息到谷歌图表【英文标题】:Display information from SQL database to google chart 【发布时间】:2020-05-11 12:50:05 【问题描述】:我正在尝试将我的 SQL 数据库中的信息显示到谷歌图表。 该项目是一个健康仪表板,我需要在其中显示步数、千卡等。
我从数据库中获取了信息,但在循环访问它时遇到了问题(相同的信息显示多次)。我认为问题出在“data.addrows”代码的某个地方。
php
include('template.php');
$query = /** @lang text */ <<
SELECT * FROM project_healthinfo WHERE id = $_SESSION['userId'] ORDER BY date DESC
END;
$res = $mysqli->query($query);
$result = $res->fetch_object();
$content = <<<END
<!-- Google Chart script starts here -->
<!--Load the AJAX API-->
// Load the Visualization API and the corechart package.
google.charts.load('current', 'packages':['corechart']);
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart()
// Create the data table.
google.charts.load('current', 'packages':['line']);
google.charts.setOnLoadCallback(drawChart);
google.charts.load('current', 'packages':['line']);
google.charts.setOnLoadCallback(drawChart);
function drawChart()
var data = new google.visualization.DataTable();
data.addColumn('string', 'Date');
data.addColumn('number', 'Steps taken');
data.addRows([
['$result->date', $result->steps],
['$result->date', $result->steps],
['$result->date', $result->steps]
]);
var options =
chart:
title: ''
,
width: 550,
height: 300
;
var chart = new google.charts.Line(document.getElementById('steps_chart'));
chart.draw(data, google.charts.Line.convertOptions(options));
</script>
<!-- Google Chart script ends here -->
【问题讨论】:
欢迎来到 Stack Overflow!您发布的代码似乎比对您的问题合理的代码更多。请阅读How to Ask 以及如何制作minimal reproducible example;提供 MRE 可帮助用户回答您的问题,并帮助未来的用户与您的问题相关。 注意:google.charts.load
每页加载只需要调用一次...
您是否尝试过将 $content 分成前后部分并循环打印出 ['$result->date', $result->steps]?看起来您并没有调用下一个数据集。
【参考方案1】:
您需要将 $content 分成两部分。
$before_result_date = <<<EOS
...
EOS;
$after_result_data = <<<EOQ
...
EOS;
那么这之间的部分应该有一个类似这样的循环。
while($result = $mysqli->fetch_object())
printf("['%s', %s],\n",$result->date, $result->steps);
总之会是这样的:
include('template.php');
$query = /** @lang text */ <<
SELECT * FROM project_healthinfo WHERE id =
$_SESSION['userId'] ORDER BY date DESC
END;
$res = $mysqli->query($query);
print $before_result_date;
while($result = $mysqli->fetch_object())
printf("['%s', %s],\n",$result->date, $result->steps);
print $after_result_date;
应该可以的。
【讨论】:
以上是关于从 SQL 数据库显示信息到谷歌图表的主要内容,如果未能解决你的问题,请参考以下文章