像在 Facebook 上一样显示和订购帖子

我的查询结果有问题。我有三个表,一个关注者表,一个用户表和一个帖子表,而我的登录用户 = $user_name。我的代码从 follower 表中调用所有,其中 follower 是 = 登录用户,并将所有用户的名称称为他们的关注者($followi)。然后,我从发帖者名称为 = 的帖子表中调用 all 到用户关注的用户的用户名。并且代码有效。


我的问题:我试图按日期对我的结果进行排序,但 MYSQL 将优先级放在 Followi 上,并按发帖用户的顺序显示,然后是日期的顺序。所以如果一个用户一个月有 2 个帖子,它会显示这两个,然后显示下一个用户,即使他们在最后一分钟发布了 5 次。


我如何仅根据日期显示,同时将其保持在仅显示登录用户关注的用户帖子的位置?


这是我的代码


 <?php


$follow = "SELECT followi from follow where follower = '$user_name'";

$runf = mysqli_query($con,$follow);

while($row=mysqli_fetch_array($runf)){

$followi = $row['followi'];



$sel_msg = "SELECT * from posts where poster_name = '$followi' ORDER by post_time desc";

$run_msg = mysqli_query($con,$sel_msg);


while($row_msg=mysqli_fetch_array($run_msg)){




echo "

<div id='post_box'>

".$row_msg['post_content']."

</div>

"; 

}}

?>


蝴蝶不菲
浏览 107回答 1
1回答

慕姐4208626

那是因为您的循环以 followersi 数据开始(while 循环)。这是您检索数据并在当前逻辑中显示它的顺序:获取用户 A 的帖子用户 A 帖子 1用户A帖子2用户A帖子3获取用户 B 的帖子用户 B 帖子 1用户 B 帖子 2用户 B 帖子 3我相信您正在尝试做的是按日期顺序获取帖子,但同时检索要显示的用户信息。您可以使用 JOIN 语句来做到这一点,例如$sel_msg = "SELECT posts.*, users.name, users.image&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FROM posts&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOIN users ON posts.userId = users.id&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ORDER BY post_time DESC";$run_msg = mysqli_query($con,$sel_msg);您的代码中不需要第一个 sql 语句
打开App,查看更多内容
随时随地看视频慕课网APP