php 如何根据单元格值更改php中的单元格表格颜色?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25739322/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 17:58:33  来源:igfitidea点击:

How change cell table color in php based on cell value?

phphtmlcss

提问by rpirez

I just started programming in php.

我刚开始用 php 编程。

I made a table that returns values ??from the database. I'm trying to do the following: Change the color of the third column by the value it has.

我做了一个从数据库返回值的表。我正在尝试执行以下操作:根据第三列的值更改它的颜色。

I was thinking this way, but the values ??are repeated and the color is not the right way.

我是这样想的,但是值重复了,颜色也不是正确的方式。

Can anyone help me please?

有人可以帮我吗?

Did you understand my question?

你明白我的问题了吗?

Thank you all. I apologize for the inconvenience.

谢谢你们。我带来的不便表示歉意。

Code:

代码:

<table style="width:324px;" border="3" cellspacing="1" cellpadding="1">
    <tr>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">Task</font></b>
        </td>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">deadline</font></b>
        </td>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">Status</font></b>
        </td>
    </tr>
<?php
$i=0;
while ($i < $num)
{
    $f1=mysql_result($result,$i,"Task");
    $f2=mysql_result($result,$i,"deadline");
    $f3=mysql_result($result,$i,"status");

    ?>
    <tr style="background-color:#A4A4A4;">
        <td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
        <td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
        <td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
        <? 
        if($f3==2)
        { 
            // Display RED 
            ?> 
            <td style="background-color:#FF0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
            <? 
        }
        elseif($f3==1)
        { 
            // Display YELLOW 
            ?> 
            <td style="background-color:#0F0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
            <?     
        }
        else
        { 
            ?> 
            <td  style="background-color:#F00;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
            <? 
        } 
        ?> 
    </tr> 
    <?php
    $i++;
}
?>
</table>

Result from code:

代码结果:

enter image description here

在此处输入图片说明

SOLVED

解决了

Thanks everyone for your help. Status is a predefined value recorded in the database. Only ranges between 1 and 4 so that the resolution has served @Daniel Andre correctly. All responses were valid for me to try to understand a little more php, but it was so simple. Again thank you all for your time and for your help.

感谢大家的帮助。状态是数据库中记录的预定义值。范围仅在 1 到 4 之间,以便分辨率正确地服务于 @Daniel Andre。所有的回答对我来说都是有效的,试图了解更多的 php,但它是如此简单。再次感谢大家的时间和帮助。

The final result was:

最终结果是:

<table style="width:324px;" border="3" cellspacing="1" cellpadding="1">
<tr>

<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">Tarefa</font></b>
</td>
<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">Prazo</font></b>
</td>
<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">Status</font></b>
</td>
</tr>

<?php
$i=0;while ($i < $num) {
$f1=mysql_result($result,$i,"idTarefa");
$f2=mysql_result($result,$i,"PrazoExecucao");
$f3=mysql_result($result,$i,"status");

?>
<tr style="background-color:#A4A4A4;">
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<!--<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>-->

<?php
  $status_colors = array(1 => '#0000FF', 2 => '#00FF00', 3 => '#FFFF00', 4 => '#FF0000');
?>
<td style="background-color: <?php echo $status_colors[$f3]; ?>;">
</tr> 


<?php
$i++;
}
?>
</table>

enter image description here

在此处输入图片说明

采纳答案by Daniel Andre

If the statuses are static (meaning, they don't change, but are a fixed set of statuses), you can make a php array mapping the statuses to colors:

如果状态是静态的(也就是说,它们不会改变,而是一组固定的状态),您可以创建一个将状态映射到颜色的 php 数组:

<?php
  $status_colors = array(1 => '#FF0', 2 => '#F0F', 3 => '#0FF', 4 => '#0F0');

Then, in your td's, use the correct status color:

然后,在您的 td 中,使用正确的状态颜色:

<td style="background-color: <?php echo $status_colors[$f3]; ?>;">

回答by lpg

If I got it right, you are displaying 3 columns (yellow, green, red), and only one should be displayed. So, you could try changing these lines:

如果我猜对了,您将显示 3 列(黄色、绿色、红色),并且应该只显示一列。因此,您可以尝试更改这些行:

<? 
if($f3==2) { 
    // Display RED 
?> 
<td style="background-color:#FF0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? 
} elseif($f3==1) { 
    // Display YELLOW 
?> 
<td style="background-color:#0F0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<?     
} else { 
?> 
<td  style="background-color:#F00;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? 
} 
?> 

for these:

对于这些:

<? 
switch($f3) {
    case 2: $color="#F00"; break; // Display RED 
    case 1: $color="#FF0"; break; // Display YELLOW 
    default:  $color="#0F0"; break; // Display GREEN 
}
echo '<td style="background-color:'.$color.';"><font face="Arial, Helvetica, sans-serif">'.$f3.'</font></td>';
?>

Additional remarks:

补充说明:

  • try to switch to PDO / mysqli (you are using deprecated functions).
  • note that red id #F00, green #0F0, yellow #FF0. These values were not matching the comments in the provided code.
  • 尝试切换到 PDO / mysqli(您正在使用不推荐使用的函数)。
  • 请注意,红色 ID #F00、绿色 #0F0、黄色 #FF0。这些值与提供的代码中的注释不匹配。

回答by Ritesh d joshi

<table style="width:324px;" border="3" cellspacing="1" cellpadding="1">
<tr>

<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">Task</font></b>
</td>
<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">deadline</font></b>
</td>
<td style="background-color:#A4A4A4;">
<b><font face="Arial, Helvetica, sans-serif">Status</font></b>
</td>
</tr>

<?php
$i=0;while ($i < $num) {
$f1=mysql_result($result,$i,"Task");
$f2=mysql_result($result,$i,"deadline");
$f3=mysql_result($result,$i,"status");

?>
<tr style="background-color:#A4A4A4;">
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>


<? 
if($f3==2) { 
    // Display RED 
?> 
<td style="background-color:#FF0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? 
} elseif($f3==1) { 
    // Display YELLOW 
?> 
<td style="background-color:#0F0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<?     
} ?> 

<?php if($f3==2){?>
<td  style="background-color:#F00;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? }else { ?>
    <td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<?php } ?> 
</tr> 


<?php
$i++;
}
?>
</table>

回答by Zeusarm

There is a mistake in the columns count if you see. Try this way:

如果您看到,列数有误。试试这个方法:

<table style="width:324px;" border="3" cellspacing="1" cellpadding="1">
    <tr>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">Task</font></b>
        </td>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">deadline</font></b>
        </td>
        <td style="background-color:#A4A4A4;">
            <b><font face="Arial, Helvetica, sans-serif">Status</font></b>
        </td>
    </tr>
<?php
$i=0;
while ($i < $num) {
    $f1=mysql_result($result,$i,"Task");
    $f2=mysql_result($result,$i,"deadline");
    $f3=mysql_result($result,$i,"status");
?>
    <tr style="background-color:#A4A4A4;">
        <td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
        <td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<? 
    if($f3==2) { 
        // Display RED 
?> 
        <td style="background-color:#FF0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? 
    } elseif($f3==1) { 
        // Display YELLOW 
?> 
        <td style="background-color:#0F0;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<?     
    } else { 
?> 
        <td  style="background-color:#F00;"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
<? 
    } 
?> 
    </tr> 
<?php
    $i++;
}
?>
</table>