我写了一个简单的while循环:
while($fetch = $stm->fetchAll()) {
echo '<tr class=""'>;
echo '<td>' . $fetch['name'] . '</td>';
echo '</tr>';
}
我怎样才能使class =“”每次都交替,以便每隔一行是白色而其他每一行都是灰色的?我已经有了CSS类“greyRow”,但不知道如何在逻辑上使用它来使它们在PHP中交替使用。
我认为我需要一个for循环,但是如何将它用于我想要做的事情呢?
感谢。
答案 0 :(得分:2)
一种简单的方法是将变量实现为“count”
$odd_row = 1;
while($fetch = $stm->fetchAll()) {
if ($odd_row == 0)
echo '<tr>';
else
echo '<tr class="greyRow">';
echo '<td>' . $fetch['name'] . '</td>';
echo '</tr>';
$odd_row = !$odd_row;
}
但是有更好的方法,严格使用CSS。
答案 1 :(得分:2)
如果您在偶数行上$counter % 2 == 0
(或!($counter % 2)
),则可以使用计数器变量。否则很奇怪。
$counter = 1;
while($fetch = $stm->fetchAll()) {
echo '<tr class="', (!($counter % 2) ? 'even' : 'odd'), '">';
echo '<td>' . $fetch['name'] . '</td>';
echo '</tr>';
$counter++;
}
您也可以尝试使用nth-child
CSS选择器,并避免在PHP中执行此操作。但是,它不是跨浏览器。如果你需要支持IE&lt; 8,你需要做到以上几点。
示例:
#your-table tr:nth-child(odd) {
// style odd rows differently
}
答案 2 :(得分:1)
这是我的方法:
while($fetch = $stm->fetchAll()) {
if( !isset( $row_num ) ) $row_num = 1; // at first $row_num does not exist so create it and make uneven (start with 1)
$row_class = (++$row_num % 2) ? 'even' : 'odd'; // then check whether $row_num is odd or even and assign it the corresponding class name
echo '<tr class="'.$row_class.'">';
echo '<td>' . $fetch['name'] . '</td>';
echo '</tr>';
}