如何制作类似Twitter的系统

时间:2013-04-10 22:01:39

标签: php mysql

如何制作类似Twitter的关注系统,如果您关注某人,您将收到他们的推文。我有一个名为“users”,“followings”和“posts”的数据库表。 users表包含我站点上的用户。以下显示人员关注者,此表设置如下:'id,user_one,user_two'。 posts表包含唯一用户拥有的所有推文或帖子。

我为每个用户设置了个人资料页面,并带有关注按钮。此外,我还为用户提供了新闻Feed,但在该新闻Feed中,我需要它来显示登录用户关注的用户帖子。所以,无论如何我有一个用户关注某人并在他们的新闻源上收到该用户的帖子。

现在我did some research:他们的系统似乎不起作用。我一直收到这个错误:

  

警告:implode()[function.implode]:在第12行的function.php中传递的参数无效

SELECT 
  user_id, 
  body, 
  stamp 
FROM posts 
WHERE user_id in () 
ORDER BY stamp DESC
  

警告:mysql_fetch_object():提供的参数不是function.php中有效的MySQL结果资源。

这一行就是为了帮助你做到这一点,当你跟随那个人时,你会收到那些推文和东西

function show_posts($userid,$limit=0){
$posts = array();

$user_string = implode(',', $userid);
$extra =  " and id in ($user_string)";

if ($limit > 0){
    $extra = "limit $limit";
}else{
    $extra = '';    
}

$sql = "select user_id,body, stamp from posts 
    where user_id in ($user_string) 
    order by stamp desc $extra";
echo $sql;
$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){
    $posts[] = array(   'stamp' => $data->stamp, 
                        'userid' => $data->user_id, 
                        'body' => $data->body
                );
}
return $posts;

}

我相信这段代码应该显示来自其他用户的帖子,导致了这个问题,但我不知道为什么。

1 个答案:

答案 0 :(得分:0)

使用联接。例如:

select user_id, text from posts
    inner join followings on posts.user_id = followings.followed_id
    where followings.follower_id = :user_id;

如果我建议,请停止使用mysql_功能; they are deprecated,不应在较新的应用程序中使用。相反,我建议使用PDO