谷歌从MySql数据库中绘制柱状图


Google charts column graph from MySql database

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

我正在尝试使用谷歌图表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编码时日期是一个字符串。解析它并以Date(年、月、日)格式准确地传递它是很重要的。同样重要的是,以后使用一个变量来表示日期。

$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');
}

然后我查询这些数量,并将它们放入一个数组中。然后循环遍历每个值并填充表数组($inVarr)。

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

然后,我可以直接回显json编码的数组,该数组将返回数据表的数据。

echo json_encode($invArr);

我相信这有点笨拙,但它确实有效。