这是我的餐桌点菜:
+-------+-------+
| month | count |
+-------+-------+
| 6 | 11 |
| 11 | 27 |
| 12 | 9 |
+-------+-------+
我想用fusioncharts创建一个图形。假设今年是2017年。如何将缺少的月份放入我正在使用的fusioncharts数组中?我被困在这个条件下。
这是我的密码:
$strQuery2 = "SELECT DATE_FORMAT(order_date, '%c') as month, COUNT(*) AS cnt FROM orders where YEAR(order_date)='2017' GROUP BY month ORDER BY `month` DESC";
$result2 = $dbhandle->query($strQuery2);
// Push the data into the array
while($row2 = $result2->fetch_assoc()) {
$q = $row2["month"];
$w = $row2["cnt"];
$e = 0;
$x = 1;
if ($x != $q){
echo "true";
array_push($arrData2["data"],
array(
"label" => $row2[$x],
"value" => $row2[$e]
)
);
}
else{
echo "false";
array_push($arrData2["data"],
array(
"label" => $row2["month"],
"value" => $row2["cnt"]
)
);
}
$x++;
echo $row2["month"] . "<br />";
echo $row2["cnt"] . "<br />";
}
2条答案
按热度按时间rnmwe5a21#
基本上有两种方法。一个用于填补php方面缺少的月份,另一个用于sql方面。我会给你的
SQL
版本:它基本上生成从1到12的所有月份的列表,如果您的查询中存在这样的月份,那么它将填充实际值。否则是零。
vktxenjb2#
你永远不会从数据库里得到一个月的时间。如果将数据推入空数组:
您仍然会得到一个只包含从数据库返回的月份的数组。
您可以先创建一个包含所有12个月的数组:
现在有了一个数组,它包含12个从1到12的元素(月),所有元素的值都是
false
. (如果需要,可以使用任何值(数组或false)。现在,在resultloop中,只需替换具有以下值的数组元素:$arrdata2现在看起来像:
现在你可以替换所有的
false
具有值的数组的值0
所以你的整个代码可以被设定为: