PHP IF语句改变表行的颜色?

时间:2011-09-23 18:28:40

标签: php mysql if-statement while-loop html-table

我在下面写了以下代码。使用此代码,我想从MySQL数据库中获取数据并在表行中打印(echo)结果,每行具有不同的颜色。使用此代码数据已成功从数据库中获取,但我更改颜色的条件不起作用。请检查我的代码,让我知道我错在哪里。

<table width="500" align="center" style="border:1px solid;">    
    <?php 
        $query = "SELECT * FROM main_cat";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        while($end = mysql_fetch_array($result)){
            echo "<tr>";
                if($count % 2 == 0){
                    echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                }else{
                    echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
                }
            echo "</tr>";
            }
    ?>
</table>

5 个答案:

答案 0 :(得分:3)

您没有将$count初始化为0,并且您没有在任何地方递增$count

答案 1 :(得分:2)

这应该有效:

<table width="500" align="center" style="border:1px solid;">    
    <?php 
        $query = "SELECT * FROM main_cat";
        $result = mysql_query($query);
        $i = 0;
        while($end = mysql_fetch_array($result)){
            echo "<tr>";
                if($i % 2 == 0){
                    echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                }else{
                    echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
                }
            echo "</tr>";
            $i++;
            }
    ?>
</table>

更好的是使用CSS,即奇数和偶数选择器:http://www.w3.org/Style/Examples/007/evenodd

答案 2 :(得分:1)

您需要在while循环中计数,而不是查询返回的总数。

不打算为你编写代码。

while while循环设置计数器为零。

在while循环检查条件下的计数器 然后将计数器值增加1

答案 3 :(得分:1)

如果您愿意,可以缩短此代码,从PHP代码中获取HTML。这将允许像Notepad ++或NetBeans这样的编辑器突出显示HTML代码。除此之外,您只获得了一行HTML,因此维护起来会更容易。

但是,最明智的做法是使用css来设置交替行的样式,或者至少使用一个类来设置各个行的样式。

我在我的代码中使用了内联样式,因为它很脏。但是bgcolor。真?它在HTML 4.1严格中甚至不再受支持。它很旧,很吵。

<table width="500" align="center" style="border:1px solid;">    
    <?php 
        $query = "SELECT * FROM main_cat";
        $result = mysql_query($query);
        $i = 0;
        while($end = mysql_fetch_array($result)){
            $color = ($i++ % 2 == 0 ? '#CCCCCC' : '#99CC66');
            $page = $end['page_name'];
?>
  <tr><td style="background-color: <?=$color?>"><?=$page?></td></tr>
<?php
        }
?>
</table>

归功于Jeroen。这是他的代码我基于这个例子。

答案 4 :(得分:0)

我认为您应该制作不同颜色的数组,然后使用更改索引更改每行的颜色。像这样

<table width="500" align="center" style="border:1px solid;">    
<?php 
    $query = "SELECT * FROM main_cat";
    $result = mysql_query($query);
    $clr=0;
    $colors = array('blue','green','purple','orange','red');
    while($end = mysql_fetch_array($result)){
        echo '<tr style="font-size:18px;background-color:'.$colors[$clr].'">';
                echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
        echo "</tr>";
      $clr++;
      if($clr==5)
          $clr=0;
        }
?>