[英]PHP Conditional Formatting with MySQL thresholds table
我希望文本颜色根据目标而改变。 基本上0到100之间的任何东西都是绿色,100到125之间的东西是黄色,超过125的任何东西都是红色。 但这只适用于1个特定部门。 假设我在另一个部门中有人没有相同的门槛,那么低于150的任何人都会是绿色等等......
这是我正在使用的代码。
while ($row = mysql_fetch_array($query)) {
echo "<tr>";
echo "<td>".$row['Department']."</td>";
if (($row['Hold'] >= 0) && ($row['Handle_Time'] <= 100)) {
echo "<td style=\"color:#005e20; font-weight: bold;\">".$row['Handle_Time']."</td>"; //green
} elseif (($row['Handle_Time'] >= 100.01) && ($row['Handle_Time'] <= 124.99)) {
echo "<td style=\"color:#e77904; font-weight: bold;\">".$row['Handle_Time']."</td>"; // yellow
} elseif ($row['Handle_Time'] >= 125) {
echo "<td style=\"color:#FF0000; font-weight: bold;\">".$row['Handle_Time']."</td>"; // red
} else {
echo "<td>".$row['Hold']."</td>"; // no color
}
echo "</tr>";
}
我想到的是一个具有每个部门门槛的MySQL表。 每个人都有一个部门代码,我希望部门匹配目标并相应地改变颜色。
这是名为stats_threshold
的目标表
Department Metric Target Yellow Red
------------------------------------------------------
WR Handle_Time 100.00 124.99 125.00
CA Handle_Time 100.00 124.99 125.00
RET Handle_Time 120.00 169.99 170.00
CET Handle_Time 200.00 249.99 250.00
如何查询部门代码以匹配表中的部门,然后echo
显目标和阈值。 预期结果(颜色列不存在,它只显示文本颜色应该是什么)
Department Handle_Time Colors
------------------------------------------------------
CA 66 GREEN
CA 118 YELLOW
CA 137 RED
WR 96 GREEN
WR 102 YELLOW
WR 143 RED
RET 119 GREEN
RET 163 YELLOW
RET 240 RED
CET 199 GREEN
CET 201 YELLOW
CET 251 RED
我不知道如何根据部门代码进行设置。
根据我所看到的,您希望根据Handle_Time
的值设置每列中的值。 你试图定义一个特定部门应该达到的标准, Green
是最好的, Red
是最差的。 虽然我不确定这是我实现它的方式,但我会这样看:
第1步
获取事务的数据。 所以我们假设你已经做到了,而且你有:
Department Handle_Time
CA 118
第2步
从包含标准的表中获取数据。
$department = $row['Department'];
// Make sure database request using the department. Something like:
$statement = $pdoOj.prepare("SELECT * FROM stats_threshold WHERE Department = :dep");
$statement.bindParam(':dep', $department);
// Remember to use prepared statements!
$statement->execute();
$targets_row = $statement->fetchAll();
第3步
您只需将处理时间的值与每列中的值进行比较。 所以:
$handle_time = $row['Handle_Time'];
if($handle_time <= $targets_row['Target'])
{
// Output Green.
}
else if($handle_time <= $targets_row['Yellow'])
{
// Output Yellow.
}
else
{
// If it's not less than the target, and not less than yellow, it's red.
}
只是旁注
你正在使用mysql_*
库。 我担心现在已经弃用了,所以你应该尝试切换到PDO
或mysqli_*
。 如果您选择PDO
, 这里是来自MySQL
人员的教程,它与DBMS一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.