php - 使用 PHP 将多个 MySQL 结果添加到 HTML 表中的一个单元格

标签 php html mysql image href

我目前正在使用以下代码来获取数据以在我的主页的内容部分中以我希望的方式显示:

$query = "SELECT distinct category FROM listings";
$result = mysql_query($query);
$catNo = 1;

echo "<table> <tr>";

while($row = mysql_fetch_array($result)){
    echo "<td>" . $row['category'] . "</td>";
    if ($catNo % 3 == 0) {
       echo "</tr><tr>"
    }
    $catNo++;
}

echo "</tr> </table>";

结果是:

| CAT1 | CAT2 | CAT3 |
| CAT4 | CAT5 | CAT6 |

我是否可以在数据库中存储一个链接,这意味着在单击单元格时我会被带到该 href?是否也可以在数据库中存储图像并将其显示在带有类别名称的单元格中?

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

因为您使用 distinct 来获取结果,所以对我来说,这意味着该表中具有相同类别的更多行。如果正确,那么您应该创建另一个表,称为“listings_links”,将每个链接和图像只存储一次,然后将此表连接到列表表。

CREATE TABLE listings_links(
id INT AUTO_INCREMENT NOT NULL,
category CHAR(10) NOT NULL, //Use here the exact type you used in the listings table
link VARCHAR(200) NOT NULL,
image_path VARCHAR(200) NOT NULL,
PRIMARY KEY(id),
KEY(category));

然后使用这个:

<?php
$sql  = "SELECT distinct listings.category, listings_links.link, listings_links.image_path FROM listings ";
$sql .= "LEFT JOIN listings_links on (listings.category=listings_links.category) "
$sql .= "ORDER BY 1;";
$result = mysql_query($sql) or die(mysql_error()."<br>".$sql);
$catNo = 1;

echo "<table> <tr>";

while($row = mysql_fetch_array($result)){
   echo '<td><a href="'.$row['link'].'"><img src="'.$row['image_path'].'" border="0" />'.$row['category'].'</a></td>';
    if ($catNo % 3 == 0) {
    echo "</tr><tr>";
    }
    $catNo++;
 }

echo "</tr> </table>";
?>

为了获得最佳性能(如果您有很多类别),还要在列表表中为“类别”创建一个索引。

更新: 我还建议将图像存储在文件系统中而不是数据库中。这样页面将加载得更快(浏览器可以并行下载更多图像)并且您不必将图像加载到数据库中(您应该总是在刷新类别图像时这样做)并且代码是也更复杂。但是可以做,但不推荐。

更新 2: 你没有要求它,但如果我是你,我不会在数据库中存储链接或图像路径。我建议创建一个可以通过其参数显示您想要的内容的 PHP(例如:show_cat.php?cat1)并在链接中使用它并以我可以通过类别名称直接链接到它们的方式存储所有图像(例如:/images/categories/cat1.jpg、/images/categories/cat2.jpg 等)。 这样您就不必更改数据库,只需将链接和图像路径添加到循环中即可。如果需要,您还可以检查图像文件是否存在,并改为显示“无可用图像”图片。

关于php - 使用 PHP 将多个 MySQL 结果添加到 HTML 表中的一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27965577/

相关文章:

php - 使用 CakePHP 更新数组中的字段

php - 是否可以使用 Bootstrap 的模态对话框、jQuery、AJAX 和 PHP 将图像上传到服务器?如果是如何?如果不是,原因是什么?

php - Smarty 调用静态类方法

jquery - 如何通过 jQuery 在针对特定 URL 的页面上添加类?

javascript - 使用 jquery 将外部 css 样式表应用于动态添加的 html 内容

php - 实时统计方程

mysql - 按列 y 分组并返回列 x 中具有最小值的列

mysql - 如何计算MySQL中的总数百分比

sql - 如何进一步优化这个查询?

html - Bootstrap 堆栈元素在移动设备上的顶部和底部,在桌面上的侧边栏