Как исправить проблему с таблицей в HTML?

<?php
        include 'db.php';
        $z="SELECT * FROM news";
        $rz=mysqli_query($db, $z);
	$i=0;

echo "<table>";
       while($row=mysqli_fetch_object($rz)){
        $i=$i+1;
if($i%3==1){echo '<tr>';}
		echo '<td><div style="font-family:arial;text-align:center" class="news">'.$row->title;
	   echo '<img style="border-radius:3px 3px 3px 3px;width:200px;height:130px" src="/images/news/'.$row->img.'" /></div></td>';                

if($i%3==0){echo '</tr>';}

       }
echo "</table>";
        ?>

Вот код одной из страниц моего сайта. С помощью таблицы я сделал вывод новостей по 3 в ряд. Можно заметить, что tr закрывается только в случае, если количество новостей делится на 3. Вопрос - почему у меня сейчас всего 2 новости в последнем ряду, а tr неровно закрылся? Это правильно или ошибка?
  • Вопрос задан
  • 2464 просмотра
Решения вопроса 1
то этот код не выполнится просто и все.
<?php if($i%3!==0) {
    echo '</tr>';
}
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
с чего вы взяли, что tr закрылся?
Ответ написан
Вряд ли tr закрывается. Лучше написать код так. В коне есть if, который закрывает tr, если столбцов меньше трех.
<?php
  include 'db.php';
  $z="SELECT * FROM news";
  $rz=mysqli_query($db, $z);
  $i=1;
?>
<table>
  <?php while($row=mysqli_fetch_object($rz)): ?>
  <?php if($i%3===1): ?>
    <tr>
  <?php endif; ?>
    <td>
      <div>
       <?php echo $row->title; ?>
    	 <img src="/images/news/<?php echo $row->img; ?>" />
      </div>
    </td>                
  <?php if($i%3===0): ?>
    </tr>
  <?php endif; ?>
  <?php i++; endwhile; ?>
  <?php if($i%3!==0): ?>
    </tr>
  <?php endif; ?>
</table>
Ответ написан
@d_coder Автор вопроса
А если он и так закрыл tr? То есть у меня если новостей не 17, а 18, и тогда получается, что tr и так закрылся. Что тогда делать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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