只取得不是你朋友的人

The*_*rSE -2 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['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名人员?

kel*_*nik 8

要只选择不是朋友的人:

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)