我的脚本是从数据库中检索图像并在表格中显示图像。我想让表格在打破行并重新开始之前有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>";}
像魅力一样工作。
答案 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>";
?>