为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
蝴蝶不菲 2023-03-26 14:48:04
我的查询结果有问题。我有三个表,一个关注者表,一个用户表和一个帖子表,而我的登录用户 = $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>"; }}?>
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

那是因为您的循环以 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 

            FROM posts

            JOIN users ON posts.userId = users.id

            ORDER BY post_time DESC";


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

您的代码中不需要第一个 sql 语句


查看完整回答
反对 回复 2023-03-26
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信