【问题标题】:Displaying image as image gallery using PHP derived from phpmyadmin(MySQL)使用派生自 phpmyadmin(MySQL) 的 PHP 将图像显示为图像库
【发布时间】:2019-04-16 02:32:38
【问题描述】:

我正在使用 PHP、HTML 和 MySQL 构建网站。

所以,我的目标是为我的网页制作一个图片库,每行只显示 3 张图片。

但我的代码似乎有误,我不知道应该在哪里进行更正。

-) 这是我的代码:

    $query = mysql_query("SELECT DISTINCT * FROM products WHERE catID = 11 ORDER BY typeID ASC"); 

echo "<table>";

while ($row = mysql_fetch_assoc($query)) 
{

echo "<tr>";

    for ($c = 0; $c < 3; $c += 1){

      echo "<td>";

        echo    '<img src="data:image/jpg;base64,'.base64_encode($row['productImg'] ).'" width="300" height="200" alt=""
             />';

        echo    "<br>";

            echo "<b>";
        echo    $row['productName'];
            echo "</b>";

        echo    "<br>";

        // More detail button set up
        ?><a href="show.php?productID=<?php echo $row["productID"]; ?>">More Detail <i class="fa fa-arrow-circle-o-right"></i></a> <?php



      echo "</td>";
    }

 echo "</tr>";

}

 echo "</table>";

-) 结果如下: wrong result image

结果不是我所期望的,因为它在 1 行显示 3 个相同的图像。我想要的是在每个上显示 3 个不同的图像 排。我不知道我哪里做错了。

【问题讨论】:

    标签: php html mysql image display


    【解决方案1】:

    结果不是我所期望的,因为它在 1 行显示 3 个相同的图像。

    这是因为for 循环,您在同一个图像中循环了三遍。而是使用计数器变量$counter 来跟踪迭代次数并每行显示三个不同的图像。

    <?php
        $query = mysql_query("SELECT DISTINCT * FROM products WHERE catID = 11 ORDER BY typeID ASC"); 
    
        if(mysql_num_rows($query)){
            $counter = 0;
            echo "<table><tr>";
            while ($row = mysql_fetch_assoc($query)) {
                if($counter != 0 && $counter % 3 == 0){
                    echo "</tr><tr>";
                }
                echo "<td>";
                    echo '<img src="data:image/jpg;base64,'.base64_encode($row['productImg'] ).'" width="300" height="200" alt=""/>';
                    echo "<br>";
                    echo "<b>";
                    echo $row['productName'];
                    echo "</b>";
                    echo "<br>";
                    // More detail button set up
                    ?>
                    <a href="show.php?productID=<?php echo $row["productID"]; ?>">More Detail <i class="fa fa-arrow-circle-o-right"></i></a> 
                    <?php
                echo "</td>";
                ++$counter;
            }
            echo "</tr></table>";
        }
    ?>
    

    旁注:不要使用mysql_* 函数,它们在 PHP 5.5 中已被弃用,并在 PHP 7.0 中被完全删除。请改用mysqli 或pdo。 And this is why you shouldn't use mysql_* functions。

    【讨论】:

    • 谢谢!由于大学的目的,我坚持使用 PHP v5.5。您的代码工作正常,但我发现 $counter 最好分配 0 值,否则排列会很奇怪(第一行显示 3 张图像,但下一行显示 4 张图像)。但不用担心,代码工作正常!再次感谢...
    • @Json,感谢您提出这个问题,我已将$counter 初始化为0 并相应地更改了if 条件,现在它应该可以正常工作了。
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2019-07-05
    • 2011-10-16
    • 2018-04-29
    • 2016-11-10
    相关资源
    最近更新 更多