2011-09-02 23 views
0

我有一個像CALL_ID,時間戳,日期,First_Name,Last_Name,狀態等行的表..如何提取MySQL數據每月和每日填充表使用PHP libchart繪製圖形?

我需要做的是繪製基於數據的圖形,根據日期進行過濾。 這是針對Month-to-date圖表,我需要顯示匹配狀態=已批准的月份當前日期的每一天的行數。

而對於Year-to-date圖表,我需要顯示匹配Status =批准的當前月份當月的每個月的行數。

我做這件事的想法是這樣的 -

單月至今:

$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從這些表中繪製圖形。

有沒有更好的方法來做到這一點?或者這是唯一的方法?

+0

PHP不是JavaScript。變量名稱前有美元符號($) – genesis

+0

變量名稱前有$符號。 –

+0

' while(i' ..... it again – genesis

回答

4

只需使用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 

該查詢會給顯示的日期和當天的總記錄行,每天月份至今。

+0

如果你不介意,你能解釋一下查詢的執行情況嗎?如果你不介意告訴我如何執行一個類似的查詢今年迄今以及我只是一個初學者,並希望學習。謝謝:) –

+2

當然,我可以嘗試解釋它。 'COUNT()'部分將選擇返回符合WHERE條件的記錄數。如果您注意到查詢「GROUP BY date」的最後一個結尾,它會告訴mysql將每一行分組在一起,只要它們具有相同的日期。因此,例如,如果您有5個條目的日期均爲「2011-05-02」,那麼您將得到一行返回,而計數爲5。然後'CONCAT()'函數就像PHP中的'.'一樣用於添加字符串。 [本教程](http://www.tizag.com/mysqlTutorial/mysqlgroupby.php)可能會有所幫助。 –

+0

非常感謝,非常清楚的解釋:)因此,我也執行類似的查詢日期以及。這是正確的嗎?:SELECT COUNT(call_id)爲'num_month_records'WHERE date BETWEEN CONCAT(YEAR(now),1))and CONCAT(YEAR(now),MONTH(now))GROUP BY date' –

相關問題