我的代码现在看起来像这样
<?php
$get_userinfo = mysql_query("SELECT * FROM users WHERE id != '$id'") or die(mysql_error());
for ($i = 1; $i <= 6; $i++) {
$userinfo = mysql_fetch_assoc($get_userinfo);
$usertags = $userinfo['tags'];
$tagsdata = explode(" ", $usertags);
$interestsdata = explode(" ", $interests);
$result = array_intersect($interestsdata, $tagsdata);
echo '<li><img src="images/users/'.$userinfo['avatar'].'" /><a href="'.$userinfo['username'].'">'.$userinfo['name'].'</a><div class="add whotofollow'.$i.'" title="Not following/friends"></div></li>';
}
?>
Run Code Online (Sandbox Code Playgroud)
因此,这会选择所有不属于您自己的用户,然后根据您对人的兴趣进行匹配,以便只显示您实际需要更新的人.然后它使得所有这些人中只有6人变得可见,并且它不会像在大多数情况下在大多数事物中首先检查的那样.
有一些我自己不知道怎么编码的东西.
我首先需要确保只显示我没有添加为朋友的人.朋友存储在名为"friends"的表中,该表包含行"userid"和"userid2".如果我们是朋友,则userid或userid2可以是我的id.
其次,我需要订购它们,以便我首先与地方最常见,然后展示与我最相同的前6名人员,而不是6个随机人员.
所以基本上,我如何首先检查所以我没有将它们添加为朋友?(表:朋友,行:userid和userid2,id可以是我的id)如何选择与我最常见的前6名人员?
要只选择不是朋友的人:
SELECT * FROM users WHERE NOT EXISTS
(SELECT *
FROM friends
WHERE userid = users.id
OR userid2 = users.id)
Run Code Online (Sandbox Code Playgroud)
为了匹配标签并比较它们,我宁愿选择第三个表格.
编辑:类似的东西
SELECT * FROM users
WHERE NOT EXISTS
(SELECT * FROM friends WHERE userid = users.id OR userid2 = users.id)
ORDER BY (SELECT COUNT(*) FROM tags AS t1 LEFT OUTER JOIN tags AS t2 ON t1.tagname = t2.tagname
WHERE t1.id = users.id)
LIMIT 6
Run Code Online (Sandbox Code Playgroud)