0

所以这个脚本是这样工作的。它将您选择的标签作为您的兴趣,并将其与其他用户标签进行比较。下面的这个脚本为我提供了我和其他人共有多少标签的输出。

$get_userinfo = mysql_query("SELECT * FROM users") or die(mysql_error());
        while($userinfo = mysql_fetch_array($get_userinfo)) {
            $usertags = $userinfo['tags'];
            $tagsdata = explode(" ", $usertags);
            $interestsdata = explode(" ", $interests);
            $result = array_intersect($interestsdata, $tagsdata);
            echo "Count under this belongs to ".$userinfo['name']."";
            echo count($result);
            echo "<br />";
            }

现在,我首先想要的是,这个脚本也会在列表中显示我,这样我就可以看到我自己有多少标签,我想删除自己。其次,我如何列出它,以便数字最高的人(最常见的标签)显示在顶部并降序显示。

4

1 回答 1

0

添加一个条件以将您自己排除在您自己的查询之外:

SELECT * FROM users WHERE user_id != [your user id]

要按标签数量排序,您需要在 SQL 语句中发出聚合函数以按标签和用户对结果进行分组。在没有看到您的表结构的情况下,我只能提供一个非常笼统的陈述

SELECT username, tag, count(tag) FROM users JOIN tags ON x = y WHERE user_id != [your user id] GROUP BY user_id, tag_id ORDER BY count(tag) DESC

另一种选择是收集您的数据,并在您已经知道每个用户共有多少个标签之后使用 PHP 对其进行排序。有关排序数组的信息,请参阅http://php.net/manual/en/function.sort.php

您还应该开始使用 PDO 或 mysqli,因为 mysql 函数已被正式弃用。

我还强烈建议您不要在一个数据库字段中放置多个标签。

于 2013-05-17T22:43:37.830 回答