更改PHP输出的特定字符的颜色

时间:2017-01-20 22:46:36

标签: php html css mysql

我有一个php查询,它在从数据库中获取数据后显示值。显示的值类似于' T' F' F'或者' R'。 echo命令工作正常。我希望在网页中显示特定值时更改它们的颜色。例如 - ' T'应该是绿色的,' F'应该是红色的' R'黄色我该如何实现这一目标?

谢谢!

以下是我的代码的一部分。我应该在代码中插入样式元素?

$sql = "select * from <database table> where attribute1 = '$val1' and attribute2 = '$val2'";        
$fetch = $conn->query($sql);

if ($fetch->num_rows > 0) 
    {
         // output data of each row
     while($row = $fetch->fetch_assoc()) 
        {
           echo
              "<tr>
                  <td>".$row["col1"]."</td>
                  <td>".$row["col2"]."</td>
                  <td>".$row["col3"]."</td>
                  <td>".$row["col4"]."</td>
                  <td>".$row["col5"]."</td>
               </tr>";
        }
     echo "</table>";
  } 
else  {
    echo "0 results";
  }

3 个答案:

答案 0 :(得分:2)

这可以使用内联样式完成,然而这是不好的做法。最理想的是,您希望将类应用于输出。

e.g。

<td class="green"></td>
<td class="red"></td>
<td class="yellow"></td>

然后在CSS文件中,您将拥有相应的CSS类。

.green{
  color: #0f0;
}

Read more on the CSS property color on MDN.

编辑:根据OP的评论,将我的部分评论添加到答案中。

if($row['col1'] === 'T')
{
  $class = "green";
}

然后在输出<td></td>时,循环:

echo "<td class='$class'></td>";

可替换地:

echo '<td class="' . $class . '"></td>;

答案 1 :(得分:1)

创建一个带有值的函数,并使用适当的样式输出<td>。我在这里使用内联样式,但您可以使用CSS类:

function color($value) {
    static $map = [ 'T' => 'green', 'F' => 'red', 'R' => 'yellow' ];
    return sprintf(
        '<td style="color:%s">%s</td>',
        array_key_exists($value, $map) ? $map[$value] : 'black',
        $value
    );
}

现在,不是直接回显单元格数据,而是将其包装在对此函数的调用中,如:

 while($row = $fetch->fetch_assoc()) 
    {
       echo
          "<tr>".
              color($row["col1"]).
              color($row["col2"]).
              color($row["col3"]).
              color($row["col4"]).
              color($row["col5"]).
           </tr>";
    }

将逻辑保留在函数中可让您稍后更改逻辑而不会影响调用者。

答案 2 :(得分:0)

如果数据库表中的col1分别在每行上包含这些单个值TFR,请考虑以下代码:

<?php

    $color_codes = array(
        'T' => 'green',
        'F' => 'red',
        'R' => 'yellow'
    );

    $sql = "select * from <database table> where attribute1 = '$val1' and attribute2 = '$val2'";        
    $fetch = $conn->query($sql);

    if ($fetch->num_rows > 0) {
        // output data of each row
        while($row = $fetch->fetch_assoc()) {
            echo "<tr>
                    <td style='color: " . $color_codes[$row['col1']] . "'>" . $row["col1"] . "</td>
                    <td>" . $row["col2"] . "</td>
                    <td>" . $row["col3"] . "</td>
                    <td>" . $row["col4"] . "</td>
                    <td>" . $row["col5"] . "</td>
                </tr>";
        }
        echo "</table>";
    }
    else {
        echo "0 results";
    }

?>

<style>
    .red {
        color: red;
    }

    .green {
        color: green;
    }

    .yellow {
        color: yellow;
    }
</style>

<?php

    $color_codes = array(
        'T' => 'green',
        'F' => 'red',
        'R' => 'yellow'
    );

    $sql = "select * from <database table> where attribute1 = '$val1' and attribute2 = '$val2'";        
    $fetch = $conn->query($sql);

    if ($fetch->num_rows > 0) {
        // output data of each row
        while($row = $fetch->fetch_assoc()) {
            echo "<tr>
                    <td class='" . $color_codes[$row['col1']] . "'>" . $row["col1"] . "</td>
                    <td>" . $row["col2"] . "</td>
                    <td>" . $row["col3"] . "</td>
                    <td>" . $row["col4"] . "</td>
                    <td>" . $row["col5"] . "</td>
                </tr>";
        }
        echo "</table>";
    }
    else {
        echo "0 results";
    }

?>

第二个代码的唯一区别是添加了class属性,并删除了style属性,以便为样式表中的每种颜色定义CSS规则。这两个代码都有效。

您可以坚持使用您熟悉的代码。但第一个是灵活的,因为您不需要在样式表中为每种颜色添加CSS规则。

希望它有所帮助!