我有一个包含3个字段区域(vachar),new_customers(int)和old_customers(int)的mysql数据库。
我正在尝试使用谷歌图表和PHP创建一个条形图,但它不起作用。我想我在回声上做错了。 这是我的代码:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart', 'bar']});
google.setOnLoadCallback(drawMaterial);
function drawMaterial() {
var data = google.visualization.arrayToDataTable([
['Region', 'New Customers', 'Old Customers'],
<?php
$query = "SELECT sum(new_customers) AS new, sum(old_customers) AS old, region FROM daily GROUP BY region";
$exec = mysqli_query($con,$query);
while($row = mysqli_fetch_array($exec)){
echo "['".$row['region']."',";
echo "['".$row['new']."',";
echo "['".$row['old']."',";
}
?>
]);
var options = {
title: 'Country wise new and returned visitors',
bars: 'horizontal'
};
var material = new google.charts.Bar(document.getElementById('barchart'));
material.draw(data, options);
}
</script>
答案 0 :(得分:0)
您遇到的问题是图表没有采用数据变量中的三个参数。
目前你可以这样:00:20:30
。
将其更改为: ['Region', 'New Customers', 'Old Customers'],
,。
在['Region', 'New Customers']
中,PHP无法识别名称为while loop
或$row['new']
的任何列。而是使用索引并将您的回声更改为:
$row['old']
&#34 ;;
我还建议你在函数外部进行sql查询,只进行sql结果的迭代(echo "['".$row[2]." [".$row[0]."]', ".$row[1]."],
和while loop
)。
此外,您没有正确加载图表。您忘了添加单词&#39; chart&#39;:
echo
这是最终解决方案:
google.charts.load('visualization', '1', {packages: ['corechart', 'bar']});
google.charts.setOnLoadCallback(drawMaterial);
如果您有任何问题,请与我们联系。