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_*ライブラリを使用しています。残念ながら、これは非推奨になっているため、 または のいずれかに切り替えてみてPDOくださいmysqli_*。を選択PDOMySQL場合は、DBMS での使用に関するのチュートリアルがあります。

于 2013-09-11T08:09:21.610 に答える