【问题标题】:Get all friends post using mysql使用mysql获取所有朋友的帖子
【发布时间】:2014-09-28 09:34:52
【问题描述】:

我目前正在开发一个社交网站 显示登录用户的帖子,包括他/她的朋友的帖子 我已经成功地创建了脚本以显示所有帖子 登录用户的所有好友。然后把它们放在一个会话中。然后得到所有 使用 in_array() 发帖;

MY DB SCHEMA
person_tbl  
  pr_id
  pr_name 

post_tbl 
  po_id
  po_message
  po_prid  (reference pr_id )

friend_tbl
 fr_id
 fr_from_prid
 fr_to_prid

SAMPLE DATA
pr_id   pr_name   
1       Jeniffer
2       Dale
3       Melissa

po_id   po_prid    po_message
1         2        Post by Dale
2         2        Post by Dale 2
3         1        Post by Jen
4         3        Post by Melissa

fr_id  fr_from_prid   fr_to_prid
1          1             2         // Jennifer and Dale were friends

这是我的代码。

$LOGIN_USER_ID = 1 // e.g id of login user ( person_tbl pr_id in database)

unset( $_SESSION['friends'] );
$_SESSION['friends'] = array();

$frdt = ( get all friends by LOGIN USER ); // from database
foreach( $frdt as $fkey => $fval ) {    // get all friends
    $fr_from = $fval['fr_from_prid'];
    $fr_to = $fval['fr_to_prid'];

    if( $LOGIN_USER_ID != $fr_from ) {
      $_SESSION['friends'][] = $fr_from;
    }
    if( $LOGIN_USER_ID != $fr_to ) {
      $_SESSION['friends'][] = $fr_to;
    }
}

$_SESSION['friends'][] = $LOGIN_USER_ID;  // include login user id in friends session

// e.g display of id of friend ( 2, 3 and 1 ) 1 for  login user.
$friends_of_user = $_SESSION['friends'];  

$post_tbl = get_all_post();
foreach( $post_tbl as $key => $val ) {
   $id = $val['po_id'];

   if( in_array( $po_prid, $friends_of_user ) ) {
       // DISPLAY ALL POST
   }    
}

就像我说的,我已经成功获取所有帖子。但是,我想要的是在加载页面时限制帖子,然后如果页面向下滚动,它将像 facebook 样式一样加载其他帖子。简而言之,我想要的只是选择帖子限制 0、20,然后如果用户向下滚动限制 20、40,然后选择 20、60 等等。是否可以仅使用 sql 查询而不执行会话之类的操作来获取帖子?提前致谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你启发了我布拉赫@Galithiel!得到了我自己问题的答案!

    select po_message
    from post_tbl
    LEFT JOIN friend_tbl
      ON po_prid=fr_from_prid OR po_prid=fr_to_prid
    WHERE po_prid={$LOGIN_USER_ID}
      OR fr_from_prid={$LOGIN_USER_ID}
      OR fr_to_prid={$LOGIN_USER_ID}
    LIMIT 0 , 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多