使用PHP创建动态表

时间:2011-10-25 07:18:15

标签: php dynamic html-table dynamic-data dynamic-tables

我正在尝试用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 个答案:

答案 0 :(得分:12)

$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 :(得分:2)

$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>";