Вставляйте tr после каждого третьего цикла
Я создаю форум на PHP. Мне нужно отобразить все категории форума в таблице, и для этого я использовал цикл while. Однако я хочу, чтобы в каждой строке таблицы было только 3 td. Для перебора категорий я использую цикл while с запросом, поэтому я не думаю, что смогу использовать модуль здесь.
7
Author: Brian Tompsett - 汤莱恩, 2012-01-25
3 answers
Почему вы не можете использовать модуль? Просто добавьте где-нибудь счетчик, и если он попадет в % 3 == 0
, сбросьте счетчик и делайте свое дело.
Возможно, вам придется сделать некоторые дополнительные "если" для первого и последнего и тому подобного, но нет причин не использовать по модулю с некоторое время.
$i=0;
while(guard()){
if($i % 3 == 0){
//ploing
}
$i++
}
13
Author: Nanne, 2012-01-25 19:00:19
Этот код закроет все дополнительные строки:
<table>
<?php
$i = 0;
while($row = mysql_fetch_array($result)){
$i++;
//if this is first value in row, create new row
if ($i % 3 == 1) {
echo "<tr>";
}
echo "<td>".$row[0]."</td>";
//if this is third value in row, end row
if ($i % 3 == 0) {
echo "</tr>";
}
}
//if the counter is not divisible by 3, we have an open row
$spacercells = 3 - ($i % 3);
if ($spacercells < 3) {
for ($j=1; $j<=$spacercells; $j++) {
echo "<td></td>";
}
echo "</tr>";
}
?>
</table>
12
Author: Nicholas Kouvatsos, 2012-01-25 19:18:39
Я не тестировал код, но логика должна работать:
<Table>
<?php
$i = 0;
while($row = mysql_fetch_array($result)){
if($i == 0){
echo"<TR>";
}
echo"<td>".$row[0]."<TD>";
$i++;
if($i == 3)
{
$i = 0;
echo"</tr>"
}
}
if($i ==1){
echo "<td></td><td></td></tr>";
}
if($i ==2)
{
echo "<td></td></tr>";
}
?>
<table>
2
Author: Brian Garson, 2012-01-25 19:07:26