0

堆栈上的第一个问题,对于 php 来说也是非常新的问题,您可能可以从我下面的代码中看出这一点。我试图做的是将数据库中的信息填充到页面上。它以表格形式出现,用户可以通过一个或多个过滤器搜索特定记录。id 喜欢做的是让“年龄”过滤器根据年龄显示具有不同颜色背景的记录。它适用于一个人,因为它将以橙色背景显示年龄小于 22 岁的所有用户。我喜欢它做什么(我认为这是我还不理解语法的部分)是显示所有年龄小于 19 岁的记录,红色背景和所有年龄小于 22 岁的记录,橙色背景。

我在下面的代码中想说的是,如果“年龄”的行记录小于 22,则给表格行的背景颜色为 ffab0a,如果小于 19,则给表格行的背景颜色为 ffff99,其他, 没有背景颜色。

谁能帮我指出正确的方向?下面是控制这个谢谢的部分!

if ($row["age"]<22)
   echo '<tr style="background-color:#ffab0a">';
else if ($row["age"]<19)
   echo '<tr style="background-color:#ffff99">';
else
   echo '<tr>'; ?> 

<td><?php echo $row["age"]; ?></td>
<td><?php echo $row["location"]; ?></td>
<td><?php echo $row["form"]; ?></td>

4

3 回答 3

1

您的问题是,您的工作顺序错误。您必须先检查该人是否未满 19 岁,然后检查他/她是否未满 22 岁。否则 18 岁的人也会被涂成橙色,因为当然 18 小于 22。

<?
if ($row["age"]<19)
   echo '<tr style="background-color:#ffff99">';
else if ($row["age"]<22)
   echo '<tr style="background-color:#ffab0a">';
else
   echo '<tr>'; 
?> 

<td><?php echo $row["age"]; ?></td>
<td><?php echo $row["location"]; ?></td>
<td><?php echo $row["form"]; ?></td>
于 2013-09-08T23:49:32.380 回答
0

创建一个将年龄转换为颜色的函数。

<?php
    function age_style($age) {
        if ($age < 19) return 'background-color:#ffff99';
        if ($age < 22) return 'background-color:#ffab0a';
        return '';
    }
?>

然后你的表格渲染可以更干净一点:

<tr style="<?=age_style($row['age'])?>">
    <td><?= $row["age"]; ?></td>
    <td><?= $row["location"]; ?></td>
    <td><?= $row["form"]; ?></td>
</tr>

这不是更好看吗?它为您提供了一个单一的位置,可以在您将来需要时轻松更新样式。

于 2013-09-08T23:51:35.910 回答
0

我会稍微不同地处理它......

<?php
if ($row['age'] < 22) { $style = 'background-color: #ffab0a'; }
if ($row['age'] < 19) { $style = 'background-color: #ffff99'; }
?>

<tr style="<?php echo $style; ?>">
<td><?php echo $row['age']; ?></td>
<td><?php echo $row['location']; ?></td>
<td><?php echo $row['form']; ?></td?
</tr>

这样,如果你以后发现需要对标记进行更改,或者你想添加不同的条件,你就不需要修改一堆<tr>标签了。

于 2013-09-08T23:54:24.920 回答