2

我有一个显示图像的网站,每页最多 30 个。

用户可以对图像发表评论,如果有评论,这些评论或至少前几个评论会出现在图像下方。

我有一个链接到我服务器上的文件夹的图像参考表。

例如

image_id // image id
user_id // user who added
image_url // ref to image

然后是所有评论的单独表格

comment_id
image_id // link to images table
comm_poster_id // id of user who posted comment

现在,问题是将这些信息一起调用的最佳方式是什么?理想情况下在一个选择

我真的不能在每个图像下进行 ajax 调用,因为这将是每页 30 db 调用,这会杀死它,那么替代/最佳方法是什么?

澄清一下select,只有一张图片,但一张图片当然可以有多个评论

希望我已经提供了足够的信息

编辑为了澄清,问题是将所有这些信息整理在一起以进行显示的最佳方法是什么 - 我是否可以运行一个查询,将页面上的所有图像都拉入页面上,如果图像存在,也可以以某种方式拉入图像的评论。

至于我希望数据看起来如何......我不知道。这是我第一次做这样的事情,所以如果可能的话需要指导。

4

2 回答 2

1

好的,我不是 php 专家,但我让你开始了解 sql 方面的内容。我可以帮助你使用 php,但这里还有其他人比我更精通它。

我为你启动了这个 sqlFiddle,去看看,你可以修改查询来得到你想要的。

http://sqlfiddle.com/#!2/79ecf/1/0

从 php 方面来看,在您知道要如何显示数据之前,很难说出您的查询需要是什么样子。我暂时选择了这个:

select *
from images i
inner join comments c on i.image_id=c.image_id;

这是一个非常简单的查询,您可能最终需要添加它。

我假设您使用 mysql,因为大多数使用 php 的人选择 mysql。据我了解,有两种连接方式,mysqli 和 pdo。PDO 似乎正在成为首选方法,但我对此一无所知。以下是两者的参考。只是不要使用 mysql_query(),它已被弃用,所以不要费心学习它的任何部分。

PDO: http://dev.mysql.com/doc/refman/5.6/en/apis-php-pdo-mysql.html
MYSQLI: http://php.net/manual/en/mysqli.query.php

其中任何一个都应该提供足够的教程来向您展示如何查询数据库,然后遍历结果以获取数据。然后由您决定如何在页面上显示它。

希望这足以为您指明正确的方向。

祝你好运!

于 2013-03-17T13:50:21.230 回答
0

您最简单的方法是将两个表连接在一起,首先按图像排序,然后按评论子排序。

SELECT i.*, c.comment_id, c.comm_poster_id 
FROM images i LEFT JOIN comments c ON i.image_id=c.image_id
WHERE {whatever where clause selects your set of 30 images}
ORDER BY i.image_id, c.comm_poster_id

使用 LEFT JOIN 或没有评论的图像将不会显示。

于 2013-03-17T14:04:57.757 回答