我有一个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";
}
答案 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
分别在每行上包含这些单个值T
,F
和R
,请考虑以下代码:
<?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规则。
希望它有所帮助!