-1

我有这张桌子:

图片ID | img_path | 列表_关联_id|
--------------------------------------
   11 |img/img1.jpg | 12 |
   12 |img/img2.jpg | 12 |
   13 |img/img3.jpg | 12 |
   14 |img/img4.jpg | 12 |
   15 |img/img5.jpg | 12 |
   16 |img/img6.jpg | 12 |
   18 |img/img7.jpg | 12 |
   21 |img/img8.jpg | 12 |
   22 |img/img9.jpg | 12 |
   23 |img/img10.jpg| 12 |
   24 |img/img11.jpg| 12 |

我想将它显示到 html 中的表格中,例如每行最多 5 张图像。几个小时以来,我一直在摆弄不同的循环,结合上面的不同循环,但还没有找到像我需要的那样工作的循环。它们要么在整行中显示相同的图像,要么以其他方式混乱。显然需要使用 tr & td 元素来正确格式化表格。

我需要的:

     <tr>
     <td>img1</td> <td>img2</td> <td>img3</td> <td>img4</td> <td>img5</td>
     </tr>
     <tr>
     <td>img6</td> <td>img7</td> <td>img8</td> <td>img9</td> <td>img10</td>
     </tr>
     <tr>
     <td>img11</td>
     </tr>
一些不起作用的代码:

$query = "SELECT * FROM Listings_gallery WHERE listing_assoc_id = " 12 " ORDER BY img_id ASC";
    $image_set = mysqli_query($connection, $query);
    回声'<tr>';
        而($img = mysqli_fetch_assoc($image_set)){
            而($img['img_id'] < 5){
            回声“<td><img src='”。$img['img_path'] 。"'></td>";
            }
            回声'<tr>';
     }

4

2 回答 2

1

我实际上并不依赖图像 ID。您可以使用它% 5来执行此操作,但 ID 可能会乱序等。相反,您可以将所有内容提取到数组中并使用array_chunk

$img = array();
while ($img = mysqli_fetch_assoc($image_set)) {
    $imgs[] = $img;
}
foreach (array_chunk($imgs, 5) as $img_chunk) {
    echo "<tr>";
    foreach ($img_chunk as $img) {
        echo "<td>$img</td>";
    }
    echo "</tr>";
}

这可能很简单,但它的内存效率不如预期。您还可以维护自己的计数器并检查% 5它是否脱离了内部循环。

于 2013-11-13T01:31:56.013 回答
0
$images_rows = mysqli_query($connection, $query);
$images = array();
while ($image = mysqli_fetch_assoc($images_rows)) {
   $images[] = $image;
}
echo '<table><tr>';
$ct = 0;
$ctt = 0;
$size = sizeOf($images) - 1;
foreach($images as $image){
     if($ct == 5) {
       echo '<tr>';
       $ct = 0;
     }
     echo "<td><img src='" . $image['img_path'] . "'></td>"; 
     $ct++; 
     $ctt++;
     echo ($ct == 5 && $ctt != $size) ? '</tr>': '';
}
echo '</tr></table>'
于 2013-11-13T01:40:23.493 回答