如何使用PHP为交替表行提供不同的背景颜色

时间:2010-06-14 00:44:16

标签: php

我有一个基于存储在mysql数据库中的内容动态生成的数据表。

这是我的代码的外观:

<table border="1">
    <tr>
        <th>Name</th>
        <th>Description</th>
        <th>URL</th>
    </tr>
    <?php
        $query = mysql_query("SELECT * FROM categories");
        while ($row = mysql_fetch_assoc($query)) {
            $catName = $row['name'];
            $catDes = $row['description'];
            $catUrl = $row['url'];

            echo "<tr class=''>";
            echo "<td>$catName</td>";
            echo "<td>$catDes</td>";
            echo "<td>$catUrl</td>";
            echo "</tr>";
        }
    ?>
</table>

现在如果表是静态的,那么我只是按重复顺序为每个交替表行分配2种样式中的一种:

.whiteBackground { background-color: #fff; }
.grayBackground { background-color: #ccc; }

那将是结束。但是,由于表行是动态生成的,我该如何实现呢?

6 个答案:

答案 0 :(得分:23)

或者你可以使用CSS:

table tr:nth-child(odd) { background-color: #ccc; }

答案 1 :(得分:12)

<?php 

$x++; 

$class = ($x%2 == 0)? 'whiteBackground': 'graybackground';

echo "<tr class='$class'>";

?>

它基本上检查$ x是否可被2均分。如果是,则为偶数。

P.S。如果你没有看到if else查询的那种风格,它就被称为三元运算符。

答案 2 :(得分:2)

将变量设置为true / false或数字,然后在每次迭代期间再次返回。或者在while循环中使用模数运算符,例如$ i%2 == 0,其中$ i是一个数字,并在三元语句中使用此条件或设置<tr>的类值

Easiest way to alternate row colors in PHP/HTML?

$i = 0;
while ( $row = mysql_fetch_assoc($result) ) {
 echo '<tr class="' . ( ( $i %2 == 0 ) ? 'oneValue' : 'anotherValue' ) . '"><td>' . $row['something'] . '</td></tr>';
$i++;
}

答案 3 :(得分:2)

<?
$color="1";
while ($line = mysql_fetch_array($result)) {
  if($color==1){
    echo '<tr bgcolor="">';
    $color="2";
  } else { 
    echo '<tr bgcolor="#dcdcdc">';
    $color="1";
  }
  ?><td align="left" width="40"><a href=""></a><?= $line[name] ?></td>

<?
}
?>

这是我的工作代码!

答案 4 :(得分:2)

这是我的工作部分! `

 $i=1;
 while($row = mysqli_fetch_array($result)) {
 if($i%2==0)
 {
     echo '<tr bgcolor="#FFFF00">';
 }
 else
 {
     echo '<tr bgcolor="#99FFCC">';
 }
     $i++;
     echo "<td>" . $row['blah'] . "</td>";
     echo "<td>" . $row['blah_blah'] . "</td>";
     echo "</tr>";

 }
 echo "</table>";

`

答案 5 :(得分:0)

这就是我做的。我用我想要的所有样式声明了一个名为“even”的css类。然后循环遍历场景。希望它有所帮助!

<?php
    include 'connect.php';
    echo "<table id='hor-zebra'>";
    $i = 0;
    while($row = mysql_fetch_array($result))
    {
       if($i%2 == 0)
       {
          echo "<tr class='even'>";
          echo "<td>" . $row['something'] ." ". $row['something'] . "</td>";
          echo "</tr>";
       }

       else
       {
          echo "<tr>";
          echo "<td>" . $row['something'] ." ". $row['something'] . "</td>";
          echo "</tr>";
       }
       $i++;
    }
    echo "</table>";

    mysql_close($con);

  ?>