1

我一直在努力解决我有一段时间没有运气的问题......

我有一个 sql 表($photos),我需要创建一个 html 表来放置这些表,但是该表只能是 4 行宽,即

-----------------------------------------
| image 1 | image 2 | image 3 | image 4 |
-----------------------------------------
| image 5 | image 6 | image 7 | image 8 |
-----------------------------------------

ETC

我有sql结果集,列名如下$photo_id->主键$linkUri->基于页面的图像位置(即/images/image1.gif)

有人可以给我一些指示或如何做到这一点的例子吗?

会使用限制工作吗?

任何帮助都会更有帮助:)

4

1 回答 1

-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>&nbsp;</td>
                <?php endfor;
            }
        ?>

        </tr>
    </tbody>
</table>

您可以考虑将上面的代码移动到帮助程序中,因为这样,它更干净,更干燥。您也可以考虑使用模板引擎,这将大大简化此任务。

于 2013-10-21T01:15:05.113 回答