我有一个表,其中包含CALL_ID,时间戳,日期,First_Name,Last_Name,Status等行。

我需要做的是根据数据绘制图形,并根据其日期进行过滤。
也就是说,对于从月到日的图表,我需要显示直到当前日期的每月的每一天与status = approved匹配的行数。

而且,对于“年初至今”图,我需要显示直到当前月份的每个月份中与Status = approved匹配的行数。

我的想法是这样的-

对于本月至今:

$temp = date("Y-m-");
while($i<=date("d"))
{
$query = "SELECT call_id FROM main WHERE status='approved' AND date='".$temp.$i."'";
$result = mysql_query($query, $link) or die("",mysql_error());
$count[i]= mysql_num_rows($result);
}


对于年初至今:

while ($i <= date("m"))
{
    $query = "SELECT call_id FROM main WHERE status='approved' AND date BETWEEN'".$today_y."-".$i."-01' AND '".$today_y."-".$i."-31";
    $result = mysql_query($query, $link) or die("",mysql_error());
    $count_y[i]= mysql_num_rows($result);
}


然后,我考虑通过“ while”循环将数组中存在的这些计数推入另一个临时表(一个用于MTD,一个用于YTD),然后使用PHP libchart从这些表中绘制图形。

有一个更好的方法吗?还是这是唯一的方法?

最佳答案

您只需使用mysql并摆脱许多php循环,就可以轻松完成此操作。本月至今的情况如下:

$query="SELECT COUNT(call_id) as 'num_records', date FROM main WHERE status='approved' AND CONCAT(YEAR(date),MONTH(date)) = CONCAT(YEAR(NOW()),MONTH(NOW())) GROUP BY date


该查询将提供一行,显示该月迄今每一天的日期和总记录。

10-01 03:48