首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据流行度而不是随机性来显示标签?

如何根据流行度而不是随机性来显示标签?
EN

Stack Overflow用户
提问于 2011-06-09 23:17:37
回答 2查看 98关注 0票数 0

需要一点帮助。我一直在寻找,但我还没有找到答案。希望你们能帮上忙!

我在我的网站上对用户输入的标签进行排序。我使用下面的代码来调用标记...

代码语言:javascript
复制
        $query="SELECT gtags FROM posts WHERE category='".mysql_real_escape_string($CATID)."' order by rand() limit 20";
    $results=$conn->execute($query);
    $gtags = $results->getrows();
    for($i=0; $i<count($gtags);$i++)

如何根据流行度而不是随机性来过滤标签?我看到了rand()的顺序,但我不确定如何将其更改为某种流行度,例如标签在数据库中被使用了多少次。

谁能告诉我我哪里做错了。我相信这是很简单的事情,而我只是个菜鸟。:)谢谢大家。

EN

回答 2

Stack Overflow用户

发布于 2011-06-09 23:24:25

像这样更改您的查询:

代码语言:javascript
复制
$query="SELECT gtags FROM (
    SELECT gtags, (SELECT count(*) from posts tPost where tPost.gtags = posts.gtags) noOfApp 
    FROM posts WHERE category='".mysql_real_escape_string($CATID)."' 
  ) Pst 
  order by noOfApp limit 20";
票数 1
EN

Stack Overflow用户

发布于 2011-06-09 23:24:55

在我看来你没做错什么。你还什么都没做呢。:)

在我看来,您实际上是在从posts表中查询标签。很难指望这样一个字段,因为它可能包含一个单独的标签列表。如果您有一个包含所有标签的单独表,以及一个将标签链接到帖子的交叉表,则可以获得所有标签的列表,并计算每个标签链接的帖子数量。

在您当前的设置中,这是不可能的,您将不得不解析每个字段并保持计数。

计算起来很简单。创建一个数组,并在每次找到每个标记时为其添加1:

代码语言:javascript
复制
$tags = array();
// Loop trough all records:
  // Split the tags
  // For each tag:
    $tags[$tag] = (array_key_exists($tag, $tags)?$tags[$tag] + 1: 1);

在该循环之后,您将拥有一个包含所有标记及其使用次数的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6295174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档