我有一個問題。我有一張支持票(wh_task)。每個任務都有一個date_completed(d/m/Y)和has_met_sla字段(0或-1)。我希望允許用戶通過date_completed搜索此表,並根據結果顯示圖表。PHP:幫助這個邏輯
的圖表數據必須是這樣的,所以我可以填充條形圖(融合圖表):
年份:2010 |月:11月| SLA會見:12 | SLA錯過:2
年代2010 |月:10月| SLA遇見:15 | SLA錯過了:1
該圖表中的數字會沿y軸向x軸和「Nov 2010」。沿着y的每個月都有2列,見面並沒有見面。
所以,我可以創建這種圖表沒有問題,但它生成的數據我遇到了麻煩。以下是我的查詢:
$tsql = "SELECT task_id, has_met_service_level_agreement, date_completed ".
"FROM wh_task ".
"WHERE (task_status_id = 5) AND (account_id =$atid)";
$stmt = sqlsrv_query($conn, $tsql);
if($stmt === false)
{
echo "Error in query preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
//SLA counters
$met = 0;
$missed = 0;
/* Retrieve each row as an associative array and display the results.*/
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
$date = $row['date_completed'];
$monthnumber = date_format($date, "n");
$year = date_format($date, "Y");
$hasmetsla = $row['has_met_service_level_agreement'];
}
}
你能幫我一下這裏的邏輯嗎?我猜我需要將數據存儲在包含月份,年份,會面總數和未滿足總數的數組中。然後爲每個任務檢查數組中是否已存在年份月份組合,如果是這樣,則基於$ hasmetsla的總數是否增加,如果沒有將它添加到數組中?
謝謝大家!
Jonesy
我也正在採取必要的SQL注入預處理.... – iamjonesy 2010-11-16 13:20:29
不,你不是。您不參數化您的查詢。在這種特殊情況下,您可以明確地將$ atid轉換爲整數,但參數化查詢是一個更好的解決方案 - 它們適用於任何數據類型,幾乎適用於所有情況。 – tdammers 2010-11-16 13:25:49
不,我只是沒有把它包含在我的代碼snippit中,但我首先檢查數據並將不需要的東西刪除。 – iamjonesy 2010-11-16 13:33:48