Php Google从MySql数据库绘制柱形图

Php Google从MySql数据库绘制柱形图,php,mysql,google-visualization,Php,Mysql,Google Visualization,真正的问题是,当第一列使用日期时,如何从MySql查询中填充GoogleCharts数据表 我正在尝试使用GoogleCharts API创建柱状图。问题是数据是时间序列数据。有许多日期。创建数据表的方法是将第0列指定给日期,随后的每一列表示所测量的数据。该信息来源于文档。我就是搞不懂如何获取要分配给后续列的数据。我已经对这一问题进行了广泛的研究,有一些答案是很接近的,但我不能让它们为这个工作。以下是当前生成我的图表数据表的代码: $invArr = array('cols' => arr

真正的问题是,当第一列使用日期时,如何从MySql查询中填充GoogleCharts数据表

我正在尝试使用GoogleCharts API创建柱状图。问题是数据是时间序列数据。有许多日期。创建数据表的方法是将第0列指定给日期,随后的每一列表示所测量的数据。该信息来源于文档。我就是搞不懂如何获取要分配给后续列的数据。我已经对这一问题进行了广泛的研究,有一些答案是很接近的,但我不能让它们为这个工作。以下是当前生成我的图表数据表的代码:

$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;

}