0
我正在使用Google图表创建线图。然而在JavaScript部分,我试着通过我的PHP变量到数组但是我得到其内容的错误消息:给定Google图表不接受PHP变量
没有足够的列绘制图表要求。
我的代码:
<!-- Google Charts -->
<div id="chart_line_graph" style="width: 100%; height: 400px; margin: 0 auto;"></div>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<?
$titleArray = array(
'Week'
);
$count = 0;
//Get all headers
$query = 'SELECT `keyword` FROM `'.$tableName.'` ORDER BY `keyword`';
$results = mysqli_query($conn, $query);
while($row = mysqli_fetch_assoc($results)){
if($count < 5) //Get first 5 keywords
$titleArray[] = $row['keyword'];
$count++;
}
$data = array();
$data[] = json_encode($titleArray);
foreach($columns as $column){
$weekData = array();
$weekData[] = "'".$column."'";
$query = 'SELECT `'.$column.'` FROM `'.$tableName.'` ORDER BY `keyword`';
$results = mysqli_query($conn, $query);
$count = 0;
while($row = mysqli_fetch_assoc($results)){
if($count < 5)
$weekData[] = (Integer)$row[$column];
$count++;
}
$data[] = json_encode($weekData);
}
?>
<script>
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?php
foreach($data as $weekData){
echo $weekData.',';
}
?>
],false);
var options = {
title: '<?echo ucwords($_SESSION['clientName']);?> Keywords',
curveType: 'function',
legend: { position: 'right' }
};
var chart = new google.visualization.LineChart(document.getElementById('chart_line_graph'));
chart.draw(data, options);
}
</script>
我每次运行它,我得到了同样的错误消息。我试着输出结果并直接复制并粘贴到JavaScript中,并创建了图形。
任何想法为什么这不起作用?
编辑:
数据:
["Week","aker aberdeen","alma tavern","ancillary items","baby change sign","baby change units"],
["10_12_2015",36,11,37,30,48],
["17_12_2015",36,10,35,27,43],
["24_12_2015",26,11,35,26,44],
["31_12_2015",29,11,32,23,42],
你会告诉我们什么样的数据看起来像喂给'google.visualization.arrayToDataTable' – WhiteHat
我不能评论PHP方面,因为我在那方面不强,但要确保数据是浏览器正在接收的代码实际上出现了什么。你的数组结构看起来不错。虽然你得到的错误表明它没有得到你的数组。或阵列的格式不正确(像有它周围的东西或一些报价)。 – nbering
当我看到它缺少对数组号的信号,我不知道为什么它不捡起来 – MrHappySandwich