2013-09-11 4 views
0

Я хочу, чтобы цвета текста изменялись в зависимости от цели. В основном все между 0 и 100 были бы зелеными, а между 100 и 125 были бы желтыми, а все, что было выше 125, было бы красным. Но это только для одного конкретного отдела. Предположим, у меня есть кто-то в другом отделе, у которого нет такого же порога, тогда ничего ниже 150 будет зеленым и т. Д.Условное форматирование PHP с пороговыми значениями MySQL

Это код, который я использую.

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

Вам не нужен столбец «Красный» в stats_threshold, поскольку он всегда> «Желтый». Но я не понимаю вашего точного вопроса. У вас есть все, что вам нужно.Вам просто нужно заменить фиксированное значение внутри вашего сравнения в первом фрагменте кода с данными из stats_threshold. –

+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_* библиотеку. Я боюсь, что это теперь устарело, поэтому вы должны попытаться переключиться на PDO или mysqli_*. Если вы выберете PDO, here Это учебник от людей по адресу MySQL по его использованию с их СУБД.

Смежные вопросы