我一直试图解决一段时间以来没有运气的问题......
我有一个sql表($photos
)我需要制作一个html表来放置它们,但是这个表只能是4行宽,即
-----------------------------------------
| image 1 | image 2 | image 3 | image 4 |
-----------------------------------------
| image 5 | image 6 | image 7 | image 8 |
-----------------------------------------
等
我有sql结果集,列名如下$photo_id
- >主键$linkUri
- >基于页面的图像位置(即/images/image1.gif)
有人可以给我一些指示或如何做到这一点的例子吗?
会使用限制工作吗?
任何帮助都会有所帮助:)
答案 0 :(得分:-1)
您可以使用模数运算符根据结果数轻松设置表的断点。你基本上会检查你当前在划分的列宽是否等于0,然后结束当前表行并开始一个新的。
棘手的一点是管理在你有9个元素的情况下会发生什么,并且你在每一行显示4个 - 在这种情况下,最后一个表行需要用空数据填充,这样你的标记仍然是有效。在任何意义上,我都写了一小段有用的,但是意大利面条代码可以帮助你入门。只需将以下内容添加到视图中,并根据需要替换变量。
<?php $columnWidth = 4;?>
<table>
<tbody>
<tr>
<?php foreach ($images as $key => $image):?>
<?php if ($key % $columnWidth === 0 && $key !== 0):?>
</tr><tr>
<?php endif;?>
<td><?php echo img($image->linkUri);?></td>
<?php endforeach;?>
<?php
$elementsStillLeftToPad = $columnWidth - 1 - ($key % $columnWidth);
if ($elementsStillLeftToPad !== 0) {
for ($element = 0; $element < $elementsStillLeftToPad; $element++):?>
<td> </td>
<?php endfor;
}
?>
</tr>
</tbody>
</table>
您可以考虑将上面的代码移动到帮助程序中,因为这样,它更干净,更干燥。您也可以考虑使用模板引擎来缓解这项任务。