Php 如何按人气而不是随机显示标签?

Php 如何按人气而不是随机显示标签?,php,tags,keyword,Php,Tags,Keyword,我需要一点帮助。我一直在寻找,但还没有找到答案。希望你们能帮忙 我正在对网站上用户输入的标签进行排序。我正在使用以下代码调用标记 $query="SELECT gtags FROM posts WHERE category='".mysql_real_escape_string($CATID)."' order by rand() limit 20"; $results=$conn->execute($query); $gtags = $results-&g

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

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

        $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++)
$query=“从category=”的帖子中选择gtags。”.mysql\u real\u escape\u string($CATID)。“'order by rand()limit 20”;
$results=$conn->execute($query);
$gtags=$results->getrows();

对于($i=0;$i请按以下方式更改查询:

$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";

在我看来,你没有做错任何事。你还没有做任何事。:)

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

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

那算起来很容易。创建一个数组,每次找到每个标记时为其添加1:

$tags = array();
// Loop trough all records:
  // Split the tags
  // For each tag:
    $tags[$tag] = (array_key_exists($tag, $tags)?$tags[$tag] + 1: 1);

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

共享数据库结构,我们不是魔术师。