我有一个问题。我有一张支持票(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