【问题标题】:Creating a dynamic table with PHP使用 PHP 创建动态表
【发布时间】:2011-12-14 17:05:50
【问题描述】:

我正在尝试使用 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;

此代码正在创建单行。我想不出我怎么能得到多行......!!

【问题讨论】:

  • 仅供参考 - 你被否决了,因为你没有发布任何代码。
  • 如果您可以编辑此问题以提供您尝试过的相关代码示例,请标记它以供版主注意以进行审核。要进行编辑,只需单击问题下方的“编辑”链接。要对其进行举报,请点击“举报”链接,选择“其他”并告知我们已准备好进行审核。
  • @Tim Post:我不太同意你的行为。我认为他的问题很清楚。我在这个板上看到过更糟糕的问题。
  • @Jules 我对此持怀疑态度(标志是准确的),我现在重新打开。
  • @Tim Post :好吧,好吧,我会这样做...我是新来的...不明白发布代码是绝对必要的。

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


【解决方案1】:
$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>";

【讨论】:

    【解决方案2】:
    $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 个&lt;td&gt;,就添加一个。达到 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>
    

    【讨论】:

    • 您已经在 for 之外定义了 i,所以只需使用它在结尾的 }echo "&lt;/tr&gt;"; 之间用 for(;$i &lt; 5 /* magic number! bad! */; ++$i){){ echo "&lt;td&gt;&lt;/td&gt;"; } 填充它。不需要划分什么的。
    • @RedX:是的,你是对的。这是一种更简单的方法。将相应地编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多