簡體   English   中英

根據變量值更改顏色

[英]Change color based on value of a variable

如果某個值是一個特定的單詞,我很難更改它的顏色,我正在使用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";
}

您可以在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>";

當您提出一個非常基本的問題時,我將給您一個復雜的答案,並提供一些額外的解釋:

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

我在這里做了幾件事:

  • 我逃脫了變量 您可以在突出顯示的顏色中看到此內容更容易閱讀。 並非總是需要這樣做,但IMO是一個好的做法。 使用高光色可能會更好地指示您何時習慣使用該錯誤。

  • 我添加了一個簡短的else ifstatement ? ifTrue : ifFalse )。 這是一個簡短的方法,它允許簡單的內聯檢查,而不是更大的if()else{} 如果願意,可以做更長的一個,但是您可能想以此來玩些玩具。

  • 我沒有添加樣式,而是添加了Highlight類。 樣式屬於樣式表,而不屬於代碼(代碼用於邏輯)。 現在,您可以在另一個表或元素中重用該樣式。 或者也可以添加粉紅色字體,一些填充和/或其他時髦樣式的東西,而無需更改邏輯

首先,您不應該在PHP中回顯太多HTML,只需在兩種語言之間切換即可。 我在下面的代碼中為您完成了此操作,它將允許HTML正確突出顯示其自身的語法,以便您可以更輕松地發現錯誤。 用PHP回顯所有HTML絕不是一個好主意,僅應在必要時這樣做,如果必須這樣做,則應使用Heredocs或類似文件。

接下來,您實際上想做的很簡單。 只需使用三元數檢查$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文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM