2017-01-20 11 views
1

データベースからデータを取得した後に値を表示するPHPクエリがあります。表示される値は 'T'、 'F'また​​は 'R'のようになります。 echoコマンドは正常に動作しています。特定の値がWebページに表示されるときに、その値を変更したいたとえば、 'T'は緑色で、 'F'は赤色で、 'R'は黄色でなければなりません。どのように私はそれを達成することができますか?PHP出力の特定の文字の色を変更します。

ありがとう!

以下は私のコードの一部です。コードにスタイリング要素を挿入する場所はどこですか?これは、インライン型のスタイルで行うことができる

$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"; 
    } 
+1

​​ – xkcd149

答えて

2

しかし、これは悪い習慣です。最適なのは、クラスを出力に適用することです。

<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> Sを出力するループ:あるいは

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

:データベーステーブルのcol1これらの単一の値それぞれにTFRを有する場合

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

ここでは、$ row ["col1"]や$ row ["col2"]は3つの値(T、FまたはR)を指定します。 – dash

+0

次に、 'echo'する前に、出力が何であるかを確認するために条件を使う必要があります。 – Tiffany

+0

これは私が探しているものです!しかし、私はそれを行う方法を理解できません。私はPHPとCSSのものは初めてです。コードでその条件付きチェックをどこでどのように使用するかを示すことができれば幸いです。ありがとう!例えば、 – dash

0

次のコードを考慮してください:

<?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"; 
    } 

?> 

OR

<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ルールを追加する必要がないからです。

希望すると助かります!

+0

ありがとうございました!できます。 – dash

+0

あなたは大歓迎です!それを答えとして受け入れてください。 :) – Perumal

1

値をとり、適切なスタイルで<td>を出力する関数を自分で作成します。、

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 
    ); 
} 

、代わりに直接セルデータをエコーで、この関数の呼び出しでそれを包むように:私はここにインラインスタイルを使用してんだけど、あなたの代わりにCSSクラスを使用することができます

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

ロジックを関数に保存すると、呼び出し元に影響を与えずに後でロジックを変更できます。

関連する問題