Php Google从MySql数据库绘制柱形图
真正的问题是,当第一列使用日期时,如何从MySql查询中填充GoogleCharts数据表 我正在尝试使用GoogleCharts API创建柱状图。问题是数据是时间序列数据。有许多日期。创建数据表的方法是将第0列指定给日期,随后的每一列表示所测量的数据。该信息来源于文档。我就是搞不懂如何获取要分配给后续列的数据。我已经对这一问题进行了广泛的研究,有一些答案是很接近的,但我不能让它们为这个工作。以下是当前生成我的图表数据表的代码:Php Google从MySql数据库绘制柱形图,php,mysql,google-visualization,Php,Mysql,Google Visualization,真正的问题是,当第一列使用日期时,如何从MySql查询中填充GoogleCharts数据表 我正在尝试使用GoogleCharts API创建柱状图。问题是数据是时间序列数据。有许多日期。创建数据表的方法是将第0列指定给日期,随后的每一列表示所测量的数据。该信息来源于文档。我就是搞不懂如何获取要分配给后续列的数据。我已经对这一问题进行了广泛的研究,有一些答案是很接近的,但我不能让它们为这个工作。以下是当前生成我的图表数据表的代码: $invArr = array('cols' => arr
$invArr = array('cols' => array(
array('label' => 'date', 'type' => 'date'),
array('label' => 'SKU', 'type' => 'number')),
'rows' => array());
while($row = mysql_fetch_row($query)) {
$invArr['rows'][] = array('c' => array(array('v' => $row[0]), array('v' => $row[1])));
}
我从谷歌图表文档中了解到,第0列始终是连续数据的日期。每个后续列都是正在测量的数据,在本例中为SKU编号。我需要让每行中的第一个数组表示日期,后面的数组表示qtyoh数据。我不知道怎么做 我对此进行了几天的研究,最终通过拼凑许多不同问题的答案解决了这个问题 我首先查询不同的日期并将它们放入一个数组中。这样做的方式非常重要,因为当json编码时,日期是一个字符串。将其解析出来并以日期(年、月、日)格式准确传递是很重要的。稍后使用变量表示日期也很重要
$dateArray = array();
while($row = mysql_fetch_row($queryDates)) {
$dtArray = explode('-',$row[0]);
$day = (int) $dtArray[1];
$month = ((int) $dtArray[0])-1;
$year = (int) $dtArray[2];
$dateArray[] = "Date($year, $month, $day)";
}
然后,我通过循环查询SKU来设置表的列
$invArr = array(
'cols' => array(
array('label' => 'Date', 'type' => 'date')
)
);
while($row = mysql_fetch_row($querySkus)) {
$invArr['cols'][] = array('label' => $row[0], 'type' => 'number');
}
然后我查询数量并将它们放入一个数组中。然后循环遍历每个值并填充表数组($INVAR)
数量=数组();
while($row=mysql\u fetch\u row($queryQty)){
$quantities[]=(int)$row[0];
}
$qtyCounter=0;
对于($i=0;$i数组)(
数组('v'=>$dateArray[$i]),
数组('v'=>$Quantilities[$qtyCounter]),
数组('v'=>$Quantilities[$qtyCounter+1]),
数组('v'=>$Quantilities[$qtyCounter+2])
)
);
$qtyCounter=$qtyCounter+3;
}
然后,我可以只回显json编码的数组,该数组将返回数据表的数据
echo json_编码($INVAR)
我认为这有点笨重,但它是有效的。我100%不清楚你在问什么(考虑到缺乏评论/答案,我猜我不是唯一一个这样做的人)。你能解释一下问题是什么吗?您需要日期,但不显示任何日期,只显示一个单独的值数组…非常感谢您的响应。我在问怎么做。这就是为什么我没有一个例子。我5分钟前才知道。我感到惊讶的是,关于这一点,我能找到的例子太少了。我将很快发布答案。我对我的问题进行了一些编辑,以使实际问题更加清晰。我有一个答案,但它是笨重的,可能会大大简化。
$quantities = array();
while($row = mysql_fetch_row($queryQty)) {
$quantities[] = (int) $row[0];
}
$qtyCounter = 0;
for($i=0;$i<count($dateArray);$i++) {
$invArr['rows'][] = array(
'c' => array(
array('v' => $dateArray[$i]),
array('v' => $quantities[$qtyCounter]),
array('v' => $quantities[$qtyCounter+1]),
array('v' => $quantities[$qtyCounter+2])
)
);
$qtyCounter=$qtyCounter+3;
}