在Google图表API中,图表的数据由此行设置:
data.addRows([
['2004', 1000, 400],
['2005', 1170, 460],
['2006', 860, 580],
['2007', 1030, 540]
]);
我希望能够从我的数据库中的数据设置此数据。下面是我的数据库的图像:
我想获取salePrice
和unitPrice
的所有值,并在折线图上显示与其创建时间段相对应的值。
这是我的代码:
<?php
include("getteam.php");
$saleprice = mysql_query("
SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'salePrice'
")or die($saleprice."<br/><br/>".mysql_error());
// set ID's = to a variable and now get Outputs for each variable(teamID)
$salepriceNumR = mysql_num_rows($saleprice);
$sPrice = array();
$i="0";
while ($i<$salepriceNumR && $row = mysql_fetch_assoc($saleprice))
{
$sPrice[$i] = $row['outputValue'];
$i++;
}
$unitprice = mysql_query("
SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'unitPrice'
")or die($unitprice."<br/><br/>".mysql_error());
// set ID's = to a variable and now get Outputs for each variable(teamID)
$unitpriceNumR = mysql_num_rows($unitprice);
$uPrice = array();
$i="0";
while ($i<$unitpriceNumR && $row = mysql_fetch_assoc($unitprice))
{
$uPrice[$i] = $row['outputValue'];
$i++;
}
$chartrow = array();
for ($i = 0; $i < $unitpriceNumR; $i++ )
{
$chartrow[$i] = "['".$i."',".$sPrice[$i].", ".$uPrice[$i]."]";
}
switch ($currentStage) {
case "0":
case "1":
$value = $chartrow[0];
break;
case "2":
$value = $chartrow[0].",".$chartrow[1];
break;
case "3":
$value = $chartrow[0].",".$chartrow[1].",".$chartrow[2];
break;
default:
$value = $chartrow[0];
// You should have some default value, seriously!!!
}
?>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Year');
data.addColumn('number', 'Sales');
data.addColumn('number', 'Expenses');
data.addRows(JSON.parse( [<?php echo json_encode($value); ?>] ));
var options = {
width: 400, height: 240,
title: 'Company Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
<div id="chart_div"></div>
问题是我设置$value
的方式是字符串,因此数据输出不正确。有没有办法设置$value
以便我可以按预期使用它?
当回显$value
时($currentStage
为值3),输出:
['0',0,0],['1',65,35],['2',88,35]
然而,当我查看来源时,我得到了:
data.addRows(JSON.parse( ["['0',0, 0],['1',65, 35],['2',88, 35]"] ));
我需要摆脱“”。
答案 0 :(得分:2)
您必须解析您的JSON字符串:
data.addRows(JSON.parse( <?php echo json_encode($value); ?> ));
如果我没有弄错,应该解决你的问题。
修改事实上,我不确定为什么您要将$value
变量设置为字符串; json_encode
的重点是你可以直接编码对象或数组。
编辑2 :这是我的看法,但我的php不仅仅是生锈。
<?php
$chartrow = array();
for ($i = 0; $i < $unitpriceNumR; $i++ )
{
$chartrow[$i] = array( (string)$i, (int)$sPrice[$i], (int)$uPrice[$i] );
}
switch ($currentStage) {
case "0":
case "1":
$value = $chartrow[0];
break;
case "2":
$value = array($chartrow[0], $chartrow[1]);
break;
case "3":
$value = array($chartrow[0], $chartrow[1], $chartrow[2]);
break;
default:
$value = $chartrow[0];
}
编辑3 我编辑了js片段,我不知道为什么我在php标签周围留下括号。
编辑4 编辑php代码到工作版本。