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