2014-12-04 48 views
0

我試圖根據csv(最初格式化的ping)的輸出生成顏色。PHP:根據結果設置表格單元格背景

我可以得到的值沒有問題,但if,ifelse,else似乎沒有工作。

if($min > 0.499 && $min <= 1) {$tcolor = $yellow;} elseif($min >= 1.0) {$tcolor = $red; } else { $tcolor = $white;} 
if($avg > 0.499 && $avg <= 1) {$tcolor = $yellow;} elseif($avg >= 1.0) {$tcolor = $red; } else { $tcolor = $white;} 
if($max > 0.499 && $max <= 1) {$tcolor = $yellow;} elseif($max >= 1.0) {$tcolor = $red; } else { $tcolor = $white;} 
if($mdev > 0.499 && $mdev <= 1) {$tcolor = $yellow;} elseif($mdev >= 1) {$tcolor = $red; } else { $tcolor = $white;} 

echo "<tr><td>$ip</td><td bgcolor=\"$tcolor\">$min<br>$tcolor</td><td bgcolor=\"$tcolor\">$avg<br>$tcolor</td><td bgcolor=\"$tcolor\">$max<br>$tcolor</td><td bgcolor=\"$tcolor\">$mdev</td></tr>"; 

編輯:正如許多詢問已經顏色代碼,我把它列爲

$yellow = "#FFFF66"; 
$red = "#FF0000"; 
$white = "#FFFFFF"; 

而且我看到了重疊號上面的代碼,但我也試圖與0.999與相同的結果。

+0

護理後輸出呢?我的意思是你不分享什麼,比如'$ yellow'是 – Machavity 2014-12-04 20:08:28

+0

你的條件重疊:'$ min <= 1'和'$ min> = 1.0' - 都允許'$ min == 1'。再加上你在所有四個條件中設置了SAME變量,所以基本上最後一個匹配條件是設置顏色的條件。 – 2014-12-04 20:09:02

+0

包含在$ yellow,$ read和$ white中的內容是什麼?顏色值應該以'#'開頭。此外,您應該使用CSS樣式而不是'bgcolor'屬性:'樣式=「background-color:#abcdef;」' – 2014-12-04 20:09:43

回答

2

這聽起來像你解決了,但你應該看看使用像這樣的函數,所以你不必重複,如果像你這樣的陳述。

<?php 

    function setCellColor($value){ 

     $color = '#FFFFFF'; 

     if($value >= 0.5 && $value <= 1){ 
      $color = '#FFFF00'; 
     } else if($value > 1) { 
      $color = '#FF0000'; 
     } 

     return ' style="background: ' . $color . '" '; 
    } 

    echo '<tr><td>' . $ip . '</td><td ' . setCellColor($min) . '>' . $min . '</td><td ' . setCellColor($avg) . '>' . $avg . '</td><td ' . setCellColor($max) . '>' . $max . '</td><td ' . setCellColor($mdev) . '>' . $mdev . '</td></tr>'; 

?> 
+2

我會考慮使用CSS類也...易於維護。 – 2014-12-04 20:23:31

+0

我堅決同意@DavidBélanger,並更新上面的代碼來支持這一點,這很容易做到 – cmorrissey 2014-12-04 20:25:39

+0

甜! var和第二種顏色的錯誤。刪除var並向FF000添加一個零可修復該錯誤。 – 2014-12-04 20:30:17

0

檢查了這一點:

function build_td_with_style($value) { 
    switch (true) { 
     case $value > 0.5 && $value <= 1 : 
      $class = 'yellow'; 
      break; 
     case $value > 1 : 
      $class = 'red'; 
      break; 
     default : 
      $class = 'white'; 
    } 

    return "<td class='{$class}'>{$value}</td>"; 
} 

$tds = implode('', array_map("build_td_with_style", [$min, $avg, $max, $mdev])); 

echo "<tr><td>{$ip}</td>{$tds}</tr>"; 

的style.css:

.yellow { 
     background-color: yellow; 
    } 
    .red { 
     background-color: red; 
    } 
    .white { 
     background-color: white; 
    } 
相關問題