Как дать переменным строкам таблицы различные цвета фона с помощью 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; }

и это было бы концом этого. Однако, так как строки таблицы динамично сгенерированы, как я могу достигнуть этого?

7
задан Sam 14 June 2010 в 00:44
поделиться

3 ответа

<?php 

$x++; 

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

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

?>

В основном проверяется, делится ли $x на 2. Если да, то это четное число.

P.S. Если вы не видели такой стиль запроса if else, он называется тернарным оператором.

12
ответ дан 6 December 2019 в 05:01
поделиться

Или вы можете просто использовать CSS:

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

23
ответ дан 6 December 2019 в 05:01
поделиться

Установите переменную в 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++;
}
2
ответ дан 6 December 2019 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: