使用PHP创建动态表格

6
我正在尝试使用PHP制作一个动态表格。我有一个页面可以显示数据库中的所有图片。
我需要这个表格仅有5列。如果返回了超过5张图片,它应该创建新行并继续显示其余的图片。
请问有人可以帮忙吗?
以下是代码: 主页代码:
    <table>
    <?php
        $all_pics_rs=get_all_pics();
        while($pic_info=mysql_fetch_array($all_pics_rs)){
        echo "<td><img src='".$pic_info['picture']."' height='300px' width='400px' /></td>";
            } 
?>
</table>

get_all_pics()函数:

$all_pics_q="SELECT * FROM pics";
        $all_pics_rs=mysql_query($all_pics_q,$connection1);
        if(!$all_pics_rs){
            die("Database query failed: ".mysql_error());
        }
        return $all_pics_rs;

这段代码创建了一行。我无法想象如何获得多行...!!


2
只是提供信息 - 你被点踩了,因为你没有发布任何代码。 - Drew
@Tim Post:我不太同意你的做法。我认为他的问题非常清晰明了。在这个论坛上,我见过更糟糕的问题。 - Jules
@Jules 我对此有些犹豫(标志是准确的),我现在会重新打开。 - Tim Post
@Tim Post:好的,我会这样做...我是新来的... 我不明白必须发布代码是绝对必要的。 - maxxon15
@maxxon15 这不是绝对必要的,但它确实有助于我们确定你卡在哪里。它还有助于区分你的问题和那些基本上想让别人替他们完成工作的问题。读了你的问题几遍后,我意识到你的问题 不是 其中一个例子,但确实需要多读几遍 :) - Tim Post
显示剩余2条评论
2个回答

13
$maxcols = 5;
$i = 0;

//Open the table and its first row
echo "<table>";
echo "<tr>";
while ($image = mysql_fetch_assoc($images_rs)) {

    if ($i == $maxcols) {
        $i = 0;
        echo "</tr><tr>";
    }

    echo "<td><img src=\"" . $image['src'] . "\" /></td>";

    $i++;

}

//Add empty <td>'s to even up the amount of cells in a row:
while ($i <= $maxcols) {
    echo "<td>&nbsp;</td>";
    $i++;
}

//Close the table row and the table
echo "</tr>";
echo "</table>";

我还没有测试过,但我的猜测是这样的。只需循环遍历您的图像数据集,只要您还没有创建5个<td>,就添加一个。一旦达到5个,关闭该行并创建新行。

此脚本应该为您提供以下内容。显然,这取决于您有多少图像,并且我假设5(在$maxcols中定义)是您想要在一行中显示的最大图像数。

<table>
    <tr>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
    </tr>
    <tr>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;<td>
    </tr>
</table>

1
你已经在for语句之外定义了i,因此只需要使用它来填充for(;$i < 5 /* magic number! bad! */; ++$i){ echo "<td></td>"; },在最后一个}echo "</tr>";之间。不需要进行除法或其他操作。 - RedX
@RedX:是的,你说得对。那是一个更简单的方法。我会相应地编辑我的答案。 - Jules

3
$max_per_row = 5;
$item_count = 0;

echo "<table>";
echo "<tr>";
foreach ($images as $image)
{
    if ($item_count == $max_per_row)
    {
        echo "</tr><tr>";
        $item_count = 0;
    }
    echo "<td><img src='" . $image . "' /></td>";
    $item_count++;
}
echo "</tr>";
echo "</table>";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接