Php 只找那些不是你朋友的人
我的代码现在看起来像这样Php 只找那些不是你朋友的人,php,mysql,Php,Mysql,我的代码现在看起来像这样 <?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['t
<?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>';
}
?>
因此,这将当前选择所有不是您自己的用户,然后将其与您对人员的兴趣进行匹配,以便只显示您真正想要更新的人员。然后它使所有这些人中只有6人可见,而且它不会像这样检查,大多数东西都在公共场所
有一些事情我自己都不知道如何从中编码
我首先需要确保只显示我没有添加为好友的人。好友存储在一个名为Friends的表中,其中包含userid和userid2行。如果我们是朋友,userid或userid2都可以是我的id
第二,我需要先订购我与其他地方最相似的人,然后显示与我最相似的前6名,而不是随机的6名
所以,基本上,我如何首先检查,使我没有添加他们作为朋友?表:friends,行:userid和userid2,任一id都可以是我的id
如何选择与我最有共同之处的前6位人士?仅选择非朋友的人士:
SELECT * FROM users WHERE NOT EXISTS
(SELECT *
FROM friends
WHERE userid = users.id
OR userid2 = users.id)
为了匹配标记并比较它们,我更喜欢第三个表
编辑:类似于
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
看起来您有两个表:用户和朋友。你想匹配你的朋友匹配你的用户ID我假设这是朋友中的用户ID 2?并显示用户表中的用户信息 下面的select语句将返回user表中的行,其中users表中的userid与friends表中的userid匹配,userid2字段等于您的用户名。limit语句将仅显示前6个匹配项
SELECT * FROM users
JOIN friends ON users.userid == friends.userid WHERE friends.userid2 == '$id'
LIMIT 6
这并不能解决按大多数匹配的朋友排序的问题。我将把这个留给其他人。他已经这样做了:朋友存储在一个名为Friends的表中,包含userid和userid2行。哦,是的,我忘记了EXISTS语句,我有多笨:谢谢!这很有帮助,但我不想把它作为答案,因为我仍然不知道如何选出前6名;检查与您的MySQL服务器版本对应的手册,以了解第4行“从标记中选择用户ID作为uid作为t1左外部连接标记作为51作为t1.tagname=”附近使用的正确语法。要么代码中有错误,要么我应该添加一个表,或者更改一些我不知道的内容。如前所述,您需要添加标记表userid | tagname我添加了表标记(u users),其中我有id、userid、tagname,类型和日期我的查询如下:$get_userinfo=mysql_querySELECT*来自不存在的用户选择*来自朋友,其中userid=users.id或userid2=users.id按计数排序从标记中选择userid作为uid\u users作为t1左外部连接标记\u users作为51在t1.tagname=t2.tagname上,其中uid=users.id和type='2'限制6或U错误;我得到了同样的错误。