0

我有一个输入框,用户可以在其中输入标签,当他们提出问题时。它们用逗号分隔,如下所示:

test1, test2, test3, test4

我的questions表结构是:

在此处输入图像描述

为了显示我刚刚使用的问题的标签,explode(",", $qinfo['tags'])然后是一个foreach循环。

但是,我不知道如何在单独的“流行标签”页面上显示从最流行到最不流行的标签。

谢谢你的帮助!

4

2 回答 2

4

您应该将标签单独放入其他表中(不以逗号分隔)。

于 2012-05-26T17:07:35.553 回答
2

您应该创建tagsquestions_tags表。

tags
----
id
name

questions_tags
-------------
id
question_id
tag_id

并获取按受欢迎程度排序的标签:

SELECT t.id, t.name, COUNT(qt.id) AS total
FROM tags t
LEFT JOIN questions_tags qt ON t.id=qt.tag_id
GROUP BY t.id, t.name
ORDER BY total DESC

但我建议您将该tags字段保留在questions表格中。将其用于缓存。例如:如果您显示单个问题,则无需查询tagsandquestions_tags表。

于 2012-05-26T17:20:09.113 回答