我目前正在使用以下代码来获取数据以在我的主页的内容部分中以我希望的方式显示:
$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/