根据变量的值更改颜色

时间:2018-05-17 18:02:30

标签: php sql

如果值是某个单词,我无法更改值的颜色,我正在使用PDO从数据库中获取数据,将粘贴下面的代码。

我想要的是..如果变量“estado”是“Em analise”那么颜色应该是红色的..

$stmt = $conn->prepare("SELECT * FROM orcamento");
if ($stmt->execute()) {
    echo "<div class='panel-body'>";
    echo "<div class='table-responsive'>";
    echo "<table class='table table-striped table-bordered table-hover'>";
    echo "<thead>";
    echo "<center>";
    echo "<tr>";
    echo "
    <th>#&nbsp;</th>    
    <th>Estado</th>";
    echo "</tr>";
    echo"</thead>";
    echo "<br>";
    while ($rs = $stmt->fetch(PDO::FETCH_OBJ)) {
        echo "<tr>";
        echo "
        <td>$rs->CodOrc &nbsp; </td> 
        <td>$rs->estado &nbsp; </td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "Error";
}

3 个答案:

答案 0 :(得分:0)

您可以在CSS中添加一个类:

.red { color: #f00; }

并添加<td>标记的class属性:

$match = $rs->estado == 'Em analise' ;
echo "<tr>";
echo "<td>$rs->CodOrc &nbsp; </td> 
      <td".($match?' class="red"':'').">$rs->estado &nbsp; </td>";
echo "</tr>";

答案 1 :(得分:0)

当你提出一个非常基本的问题时,我会给你一些复杂的答案,并附上一些额外的解释:

const strings = [
  "x...x",
  "xx...x",
  "xx...",
  "xx..xx",
  "xxx...xxx",
  "xxxx...xxxx",
];
let pattern = /^(x*)(x[^x]+x)(\1)$/;

strings.forEach((s) => {
  let res = s.match(pattern);
  if (res) {
    console.log(s + " --> " + s.match(pattern)[2]);
  } else {
    console.log(s + " --> no match.");
  }
});

我在这里做了一些事情:

  • I escaped the variable。你可以在颜色突出显示这个读取更容易。这并不总是需要,但IMO是一个很好的做法。使用颜色highligher可能会为您提供更好的指示,指出当您更多地习惯它时可能出现的错误。

  • 我已添加a short else ifecho "<td class='".($rs->estado=='Em analise'?'highlight':'')."'>".$rs->estado." &nbsp; </td>"; )。这是一种简短的方法,允许简单的内联检查而不是更大的statement ? ifTrue : ifFalse。如果你愿意的话,你可以做更长的时间,但你可能想要玩这个玩具。

  • 我没有添加样式,而是添加了一个高亮类。样式属于样式表,而不是代码(代码用于逻辑)。您现在可以在另一个表或元素中重用stlye。或者添加粉红色字体,一些填充和/或其他时髦的样式内容,而无需更改逻辑

答案 2 :(得分:0)

首先,你不应该用PHP回显这么多HTML,只需在两种语言之间切换即可。我在下面的代码中为您做到了这一点,它将允许HTML正确突出显示自己的语法,这样您就可以更轻松地嗅出错误。用PHP回显所有HTML并不是一个好主意,你应该只在必要时这样做,如果你必须这样做,你应该使用Heredocs或类似的。

接下来,您尝试做的事实上非常简单。只需使用ternary检查$rs->estado是否等于您想要的值,并为单元格提供类或样式。

<?
$stmt = $conn->prepare("SELECT * FROM orcamento");
if ($stmt->execute()) {
    ?>
    <div class='panel-body'>
        <div class='table-responsive'>

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

        <table class='table table-striped table-bordered table-hover'>
            <thead>
                <center>
                    <tr>
                        <th>#&nbsp;</th>    
                        <th>Estado</th>";
                    </tr>
            </thead>
            <tbody>
                <?php
                 while ($rs = $stmt->fetch(PDO::FETCH_OBJ)) {
                    echo "<tr>";
                        echo "<td>{$rs->CodOrc} &nbsp; </td>";
                        echo "<td class='".($rs->estado == 'Em analise' ? "red" : "")."'>{$rs->estado} &nbsp; </td>";
                    echo "</tr>";
                }
                ?>
            </tbody>   
        </table>
<?php
} else {
    echo "Error";
}

此解决方案的主要部分是三元组".($rs->estado == 'Em analise' ? 'red' : '').",它基本上告诉PHP如果$rs->estado等于Em analise,它应该回显单词red,并且如果不是,则回显一个空字符串

注意:我的答案中的样式标签可能实际上应该添加到.css文件中。

相关问题