使用派生自 phpmyadmin(MySQL) 的 PHP 将图像显示为图库
Displaying image as image gallery using PHP derived from phpmyadmin(MySQL)
我正在使用 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 个不同的图像
排。不知道哪里做错了
The result turns out not what I expected since on 1 row it displays 3 same images.
那是因为 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
or pdo
instead. And this is why you shouldn't use mysql_*
functions。
我正在使用 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 个不同的图像 排。不知道哪里做错了
The result turns out not what I expected since on 1 row it displays 3 same images.
那是因为 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
or pdo
instead. And this is why you shouldn't use mysql_*
functions。