根据sql结果动态创建表

时间:2013-10-21 00:36:42

标签: php image mysqli

我一直试图解决一段时间以来没有运气的问题......

我有一个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)

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

会使用限制工作吗?

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

1 个答案:

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

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

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