0

我希望文本颜色根据目标而变化。基本上 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
4

1 回答 1

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_*图书馆。恐怕现在已弃用,因此您应该尝试切换到PDOor mysqli_*。如果您选择PDO这里是来自人们的教程,MySQL它与他们的 DBMS 一起使用。

于 2013-09-11T08:09:21.610 回答