我有一个问题:
SELECT MONTH(tgl) AS month, SUM(jumlahA) AS A, SUM(jumlahB) AS B
FROM tabel where YEAR(tgl)='2002' GROUP BY MONTH(tgl) order by 1;
结果是:
month A B
----------------------
1 85 0
2 38 0
9 34 23
问题是如何在 PHP 中完整地显示一年(12 个月)的数据,其中月份没有数据将 0 放入 A 和 B。实际上我想创建带有月份轴(jan,feb,.. ., des)
更新
这是我的一些 PHP 代码:
echo "<categories>\n";
echo "<category name='Jan' />\n";
echo "<category name='Feb' />\n";
echo "<category name='Mar' />\n";
echo "<category name='Apr' />\n";
echo "<category name='Mei' />\n";
echo "<category name='Jun' />\n";
echo "<category name='Jul' />\n";
echo "<category name='Agu' />\n";
echo "<category name='Sept' />\n";
echo "<category name='Okt' />\n";
echo "<category name='Nop' />\n";
echo "<category name='Des' />\n";
echo "</categories>\n";
echo "<dataset seriesname='Hulu' color='AFD8F8'>";
$strQuery="SELECT MONTH(tgl) AS month, SUM(jumlahA) AS A, SUM(jumlahB) AS B FROM tabel where YEAR(tgl)='2002' GROUP BY MONTH(tgl) order by 1";
$hasil=mysql_query($strQuery);
while ($data = mysql_fetch_array($hasil)) {
echo "<set value='".$data[1]."' />";
}
echo "</dataset>";
最佳答案
创建一个数组
,其值与将从MONTH(tgl) AS month
返回的值相同。假设这些值与类别相同(如果不是,您可以更改它),请执行以下操作:
$months = array('Jan'=>null, 'Feb'=>null, 'Mar'=>null, 'Apr'=>null, 'Mei'=>null,
'Jun'=>null, 'Jul'=>null, 'Agu'=>null, 'Sept'=>null, 'Okt'=>null, 'Nop'=>null, 'Des'=>null);
不错。现在将您的 while
更改为:
while ($data = mysql_fetch_array($hasil)) {
$months[$data[0]] = "<set value='".$data[1]."' />";
}
现在,在数组中你得到了所有的月份,每个月份都有各自的值。没有值的月份是 NULL
。现在很容易:
foreach ($months as $month) {
if ($month) {
echo $month;
}
else {
echo "<set value='0' />";
}
}
这是我的想法,我没有测试它,我希望它能起作用并有所帮助!
关于php - 在 PHP 中显示 12 个月的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897781/