使用MySQL阈值表的PHP条件格式

时间:2013-09-11 07:43:31

标签: php mysql

我想要根据目标更改文本颜色。基本上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

1 个答案:

答案 0 :(得分:2)

  

我不知道如何根据部门代码设置它。

从我所看到的情况来看,您希望根据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_*库。我担心现在已弃用此版本,因此您应尝试切换为PDOmysqli_*。如果您选择PDOhere是来自MySQL的人员的教程,请使用他们的DBMS。