所以这个脚本就是这样的。它会将您选择的标记作为您的兴趣,并将其与其他用户标记进行比较。下面的这个脚本给出了我和另一个人共有多少标签的输出。
$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 />";
}
现在,我想首先,这个脚本还会在列表中显示我,所以我看到我和自己共有多少个标签,我想要删除自己。其次,我如何列出它,以便最高编号(大多数常用标签)的人显示在顶部并降序。
答案 0 :(得分: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函数已被正式弃用。
我也强烈建议您不要在一个数据库字段中放置多个标签。