【问题标题】:mysql database data into html table limiting columnmysql数据库数据成html表限制列
【发布时间】:2018-06-26 17:12:21
【问题描述】:

我的脚本正在从数据库中检索图像并在表格中显示图像。我想让表格在打破行并重新开始之前有 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>";}

工作就像一个魅力。

【问题讨论】:

    标签: php mysql html-table


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不敢相信我没有看到,变量名都是匹配的,我只是为网站清理它,但(愚蠢地)交换了一些。谢谢!
    【解决方案2】:

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

    【讨论】:

    • 我认为您的意思是 $row = mysql_fetch_assoc($pic) 而不是 $row = mysql_fetch_assoc($image)?变量名称 $pic$albumid 令人困惑。另请参阅 nicja 关于 SQL 注入攻击的说明
    • 是的,如果我的问题只是互换变量,我会觉得很傻。哈哈。我感谢输入,Ajay,感谢您提供更正的代码,但由于某种原因,即使表列和行是 while 循环中唯一的东西,它仍然在每次输入之后应用,而不是在 4 =/
    • 是的,现在我更正了。 @Matthew 请立即查看并验证更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    相关资源
    最近更新 更多