需要帮助,使用带数字范围的SQL查询值来更改PHP代码中的表格颜色

问题描述 投票:0回答:2

这是我脚本中的部分代码。我试图使背景根据值改变颜色,并且无法正确读取数组。在打印时将条件放置在while之外或while内将返回相同的结果。

如果值为100,则颜色应为红色如果该值大于49,则颜色为黄色如果值为0到49,则颜色为绿色

如果有人会发现SQL读取请求数据时BILLED_TO_DATE_PERCENTAGE会根据数字范围而变化,将不胜感激。

$counter = 1;

while($row = mysqli_fetch_array($result))
  {
    if($BILLED_TO_DATE_PERCENTAGE = 100)
        {
        $tdStyle='background-color:red;';
        } 
    else 
        {
        if($BILLED_TO_DATE_PERCENTAGE > 79)
            {
            $tdStyle='background-color:yellow;';
            }
        else
            {
            $tdStyle='background-color:green;';
            }
        }

    echo "<tr>"; 
    echo "<td bgcolor=#001F25>" . "<b>" . "<font color=WHITE>" . $counter . "</font>" . "</b>" . "</td>";
    echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['NUMBER'] . "</font>" . "</td>";
    echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['PROJECT'] . "</font>" . "</td>"; 
    echo "<td style=\"$tdStyle\">" . "<b>" . "<i>" . $row['BILLED_TO_DATE_PERCENTAGE'] . "</i>" . "</b>" . "</td>";
    echo "</tr>"; 
    $counter++; //increment counter by 1 on every pass
  }
echo "</table>";
php html sql sqlite
2个回答
0
投票

最好创建一个函数来使代码更有条理,并谨慎使用“ =”,在您的代码中,拳头条件只使用了一个“ =”,相比之下,您需要使用“ = =“:

function Changecolor($percentage){
    if ($percentage == 100) {
            return 'background-color:red;';
    } else {
       if ($percentage > 49) {
               return 'background-color:yellow;';
        } else {
           return 'background-color:green;';
       } 
     }
 }    

 echo "<table>";
 while($row = mysqli_fetch_array($result))
      {
        echo "<tr>"; 
        echo "<td bgcolor=#001F25>" . "<b>" . "<font color=WHITE>" . $counter . "</font>" . "</b>" . "</td>";
        echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['NUMBER'] . "</font>" . "</td>";
        echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['PROJECT'] . "</font>" . "</td>"; 
        echo "<td style=".Changecolor($row['BILLED_TO_DATE_PERCENTAGE']).">" . "<b>" . "<i>" . $row['BILLED_TO_DATE_PERCENTAGE'] . "</i>" . "</b>" . "</td>";
        echo "</tr>"; 
        $counter++; //increment counter by 1 on every pass
      }
 echo "</table>";

0
投票

很有可能数据库中的列不是全部大写。从数据库中检索该值后,您也不会从该行中检索该值。

$counter = 1;

while($row = mysqli_fetch_array($result)) {

    $percentage = $row['BILLED_TO_DATE_PERCENTAGE'];
    if($percentage == 100) {
        $tdStyle='background-color:red;';
    } elseif ($percentage > 49) {
        $tdStyle='background-color:yellow;';
   } else {
        $tdStyle='background-color:green;';
   }
   echo "<tr>"; 
   echo "<td bgcolor=#001F25>" . "<b>" . "<font color=WHITE>" . $counter . "</font>" . "</b>" . "</td>";
   echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['NUMBER'] . "</font>" . "</td>";
   echo "<td bgcolor=#00353F>" . "<b>" . "<font color=WHITE>" . $row['PROJECT'] . "</font>" . "</td>"; 
   echo "<td style=\"$tdStyle\">" . "<b>" . "<i>" . $row['BILLED_TO_DATE_PERCENTAGE'] . "</i>" . "</b>" . "</td>";
   echo "</tr>"; 
   $counter++; //increment counter by 1 on every pass
}
echo "</table>";
© www.soinside.com 2019 - 2024. All rights reserved.