У меня есть таблица данных, которые сгенерированы динамично на основе содержания, сохраненного в 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; }
и это было бы концом этого. Однако, так как строки таблицы динамично сгенерированы, как я могу достигнуть этого?
<?php
$x++;
$class = ($x%2 == 0)? 'whiteBackground': 'graybackground';
echo "<tr class='$class'>";
?>
В основном проверяется, делится ли $x на 2. Если да, то это четное число.
P.S. Если вы не видели такой стиль запроса if else, он называется тернарным оператором.
Или вы можете просто использовать CSS:
table tr:nth-child(odd) {
background-color: #ccc;
}
Установите переменную в true/false или число, а затем обратно во время каждой итерации. Или используйте оператор модуляции, например, $i%2==0 в цикле while, где $i - число, и используйте это условие в тернарном операторе или чем-то, что устанавливает значение класса Самый простой способ чередовать цвета строк в PHP/HTML?
$i = 0;
while ( $row = mysql_fetch_assoc($result) ) {
echo '<tr class="' . ( ( $i %2 == 0 ) ? 'oneValue' : 'anotherValue' ) . '"><td>' . $row['something'] . '</td></tr>';
$i++;
}
Похожие вопросы: