我正在将google图表(在php网页上)与来自sql DB的数据一起使用。我遇到的问题是它没有正确显示字段名称和值,它只是显示第一个字段“ expense”的值。它应该显示两个字段“ expense”和“ income”,以及数据库中的值。有什么想法我做错了吗?
我的下面的代码:
<?php
$dbhandle = new mysqli('localhost','root','','useraccounts');
echo $dbhandle->connect_error;
$query = "SELECT * FROM ctincome";
$res = $dbhandle->query($query);
?>
<html>
<head>
<script type="text/javascript"
src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['expense','income'],
<?php
while($row=$res->fetch_assoc())
{
echo "['".$row['expense']."','".$row['income']."'],";
}
?>
]);
var options = {
title: 'Expenses to Income',
pieHole: 0.4,
};
var chart = new
google.visualization.PieChart(document.getElementById
('donutchart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="donutchart" style="width: 900px; height: 500px;"></div>
</body>
</html>
答案 0 :(得分:0)
收入列的值应该是数字,而不是字符串。
从第二栏中删除单引号。
来自...
echo "['".$row['expense']."','".$row['income']."'],";
到...
echo "['".$row['expense']."',".$row['income']."],";
答案 1 :(得分:0)
根据我在跨浏览器或解决的JavaScript错误方面的经验,我有3条建议。
第一点:您只是呼应,您需要使用串联。
<?php
$data = '';
while($row=$res->fetch_assoc())
{
$data .= "['".$row['expense']."','".$row['income']."'],";
}
?>
var data = google.visualization.arrayToDataTable([
['expense','income'],
<?php echo $data; ?>
]);
第二点:在javascript中,最后一个逗号可能起作用,也可能不起作用,如果最后一行则最好不要添加逗号。
var data = google.visualization.arrayToDataTable([
['expense','income'],
<?php
while($row=$res->fetch_assoc())
{
if(last row )
$data .= "['".$row['expense']."','".$row['income']."']";
else $data .= "['".$row['expense']."','".$row['income']."'],";
}
?>
]);
第三条建议:在串联前后检查var数据的数据类型