mysql数据库数据转换成html表限制列

时间:2011-06-14 07:33:53

标签: php mysql html-table

我的脚本是从数据库中检索图像并在表格中显示图像。我想让表格在打破行并重新开始之前有4列图像。我在这个论坛上找到了一些有用的答案,但是在重新组织并与代码混淆之后,它会在其自己的表中显示每个图像,而不是在每第四个图像后添加行间隔。我正在睡觉,但希望第二双眼睛可以帮助我发现问题。

<?php
include_once "connect.php";
$userid = $_SESSION['id'];
$albumid = $_GET['album'];
$pic = mysql_query("SELECT * FROM `pictures` WHERE userid='$userid' AND
albumid='$albumid'");
$i = 0;
echo "<center><table width='50%'><tr>";
while($row = mysql_fetch_assoc($pic)){
$id = $row["id"];
$thumbnail = $row["thumbnail"];
echo "<td><a href='viewphoto.php?photo=$id'><img src='$thumbnail'>  
</a></td>";
if ($i && $i%4 == 0) echo '</tr><tr>';
$i++;
echo "</tr><tr>";
}
echo "</table> </center>";
?>

摆弄一点点

while($row = mysql_fetch_assoc($pic)){
$id = $row["id"];
$thumbnail = $row["thumbnail"];
if ($i && $i%4 == 0) echo '</tr><tr>'; 
$i++;
echo "<td><a href='viewphoto.php?photo=$id' rel='facebox'><img src='$thumbnail'>
</a></td>";}

像魅力一样工作。

2 个答案:

答案 0 :(得分:2)

问题是你在while循环中声明了你的表。您应该在while循环的任一侧打开和关闭表标签,并且只在循环内部有tr和td。

这里似乎还有一些互换的变量名称会导致意外行为。在你的SQL查询中我认为你的意思是... albumid ='$ albumid'...而在while循环中我认为你想要的是($ row = mysql_fetch_assoc($ pic)){

此外,您应该注意此SQL查询对SQL injection attacks

开放

答案 1 :(得分:1)

$ i在循环内初始化。和表也带到外面。

请参阅下面的代码。

     <?php
        include_once "connect.php";
        $userid = $_SESSION['id'];
        $albumid = $_GET['album'];
        $pic = mysql_query("SELECT * FROM `pictures` WHERE userid='$userid' AND
        albumid='$pic'");
       $i = 0;
    echo "
    <center><table width='50%'><tr>";

        while($row = mysql_fetch_assoc($image)){
    $id = $row["id"];
    $thumb = $row["thumb"];
    $date = strftime("%b %d, %Y", strtotime($row['date']));
    echo "<td><img src='$thumbnail'></td>";

    if ($i && $i%4 == 0) echo '</tr><tr>';
      $i++;
    }
    echo "</table> </center>";
    ?>