2011-06-14 102 views
0

我的脚本正在从数据库中检索图像并在表格中显示图像。我想让表格有4列图像,然后再打开行并重新开始。我在这个论坛上发现了一些有用的答案,但是在重新组织和操纵代码后,它会在其自己的表中显示每个图像,而不是在每个第四个图像之后添加行分隔符。我正在睡觉,但希望第二双眼睛可以帮助我发现问题。将mysql数据库数据导入html表限制列

<?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>";} 

工作就像一个魅力,谢谢!

回答

1

$我在循环内初始化。和桌子也带到外面。

请参阅下面的代码。

 <?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>"; 
    ?> 
+0

我想这不会解决完整的问题和需要 – 2011-06-14 07:47:34

+0

我想你的意思是$ row = mysql_fetch_assoc(** $ pic **)而不是$ row = mysql_fetch_assoc(** $ image **)? 变量名称** $ pic **和** $ albumid **令人困惑。另请参阅nicja关于SQL注入攻击的注意事项 – increddibelly 2011-06-14 08:10:56

+0

是的,如果我的问题只是互换变量,我会觉得非常愚蠢......大声笑。我非常感谢Ajay,感谢您输入了正确的代码,但由于某些原因,即使表格列和行是while循环中的唯一内容,仍然在每次输入后应用,而不是在4 =/ – dystopia 2011-06-14 08:20:52

2

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

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

另外,请注意,此SQL查询是开放的SQL injection attacks

+0

我不敢相信我没有看到,并且变量名称都匹配,我只是为网站清理它,但(愚蠢地)互换了一些。谢谢! – dystopia 2011-06-14 08:17:54