2014-04-27 78 views
0

我被困在好友列表中的问题,让我的好友列表从另一个表

我有两个表首先

1-用户表(ID,用户名,密码)

2-朋友表(ID,本身份识别码,friend_id)

现在,如果我有

两个用户中的用户表 - 第一用户ID = 50 - 第二用户ID = 56

同时我在朋友表中有一条记录ID = 1 myid = 50 friend_id = 56

我想创建查询和此查询(如果我登录并且我的ID是50)它只会显示我的用户名的56用户,如果我用用户ID 56登录,它会告诉我用户名50用户

我知道会有两个查询第一次会带我所有的朋友与我的ID和第二将显示我的朋友没有我的ID但我不知道请如何帮助

一些,如果我的代码

function get_myfriends(){ 
    $this->db->where('myid',$this->session->userdata('userid')); 
    $this->db->or_where('fid',$this->session->userdata('userid')); 
    $query = $this->db->get('myfriends'); 
    return $query->result();  
} 

function get_user_by_id($id){ 
    $this->db->where('userid',$id);   
    $query = $this->db->get('users'); 
    foreach ($query->result() as $row){ 

     // Here is the problem 
     if($row->myid == $this->session->userdata('userid')) 

     }else{ 
     } 
    return $query->result(); 
} 
+0

你的问题还不够清楚! – goseo

+0

我的问题是,如何显示朋友列表 –

回答

1

我想你应该在双方的朋友关系,例如,如果用户50和用户56都是朋友建立这种关系,你应该在myfriends表中插入2项:

+------+-----+ 
| myid | fid | 
+------+-----+ 
| 50 | 56 | 
| 56 | 50 | 
+------+-----+ 

,然后让所有的朋友对于任何用户,你可以简单地做它用: $sqlQuery = 'SELECT * FROM myfriends JOIN users ON myfriends.fid = users.userid WHERE myfriends.myid = ?'; return $this->db->query($sqlQuery, $id)->result();

更新

如果你想让它只有一面的关系,你可以尝试此查询: $sqlQuery = 'SELECT * FROM myfriends JOIN users ON (myfriends.fid = users.userid OR myfriends.myid = users.userid) AND user.userid <> ?'; return $this->db->query($sqlQuery, $id)->result();

+0

你是对的,但我敢肯定有一个孤立的使它在一边 –

+0

你好,这是工作谢谢,但我面临另一个问题,我想得到在线朋友我得到这个错误 SELECT * FROM('ci_sessions')JOIN'myfriends',''myfriends.myid = 50或myfriends.fid = 50 ON WHERE'user_data' LIKE'%\“userid \”; s: 2:\“50 \”%' –

+0

@ user3577591如果它有效,你可以接受这个答案,并发出一个单独的问题来解释你的新问题的更多细节。 –