作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 friend 数组只返回一个数字而不是所有数字。
($myfriends = 3)
应该是……
($myfriends = 3 5 7 8 9 12).
如果我让它进入 while 循环……整个过程都有效,但不是像我想要的那样按日期顺序显示帖子。示例:
(post_id 3 oct30 "post goes here")
(post_id 5 oct29 "post goes here")
(post_id 7 oct28 "post goes here")
相反,它显示来自 1 个人 id 按日期排序的所有帖子。然后是那个人的所有帖子。它最终会显示下一个人和他们的所有帖子。:
(post_id 3 oct30 "post goes here")
(post_id 3 oct29 "post goes here")
(post_id 3 oct28 "post goes here")
(post_id 5 oct30 "post goes here")
(post_id 5 oct29 "post goes here")
(post_id 5 oct28 "post goes here")
等等...任何新的帖子组与用户旧帖子而不是进入提要的顶部。
我希望这是有道理的......对于糟糕的解释和草率的代码感到抱歉
下方的 TABLES 提要和 friend 两者都有自动递增主'id'作为第一个字段......然后
FEED TABLE
feed (post_id, posted_by, content, date_posted, date_str, pic) VALUES ('$post_id', '$posted_by', '$content', now(), '$date', '$profile_pic')
FRIENDS TABLE
friends (user_id, friend_id) VALUES ('$myId', '$friendId')
<div class="post container">
<?php
$addsql="SELECT * FROM friends WHERE user_id = '$session_id' ORDER by id DESC";
$addquery=mysqli_query($conn, $addsql);
while ($rowa = mysqli_fetch_array($addquery)) {
$myFriends = $rowa['friend_id'];
?>
<?php
$feedsql = "SELECT * FROM feed WHERE post_id = '$myFriends' ORDER by date_posted DESC";
$result = mysqli_query($conn, $feedsql);
while($row = mysqli_fetch_array($result)) {
$posted_by = $row['posted_by'];
$content = $row['content'];
$time = $row['date_posted'];
$date = $row['date_str'];
$pic = $row['pic'];
$post_id = $row['post_id'];
$upperUser = ucfirst($username);
?>
<?php
$imgsql = "SELECT * FROM users WHERE username = '$posted_by' ";
$q = mysqli_query($conn, $imgsql);
while($rows = mysqli_fetch_array($q)) {
$image = $rows['image'];
$mem_id = $rows['id'];
if ($posted_by == $upperUser) {
echo " <a href='profile.php?id=$mem_id'><img src='users/$upperUser/".$image."' alt='MEMBER Pic' /></a>";
} else if($posted_by !== $upperUser) {
echo " <a href='profile.php?id=$mem_id'><img src='users/$posted_by/".$image."' alt='Profile Pic' /></a>";
}
}
?>
<div class="each_post">
<h4><a href='profile.php?id=<?php echo $mem_id; ?>'><?php echo ucfirst($posted_by);?></a> <small class="post_date"><?php echo $date;?></small></h4>
<p class=""><?php echo $content;?></p>
</div>
<?php
}}
?>
</div>
最佳答案
问题本身是由于在while循环中覆盖了$myFriends变量引起的:
while ($rowa = mysqli_fetch_array($addquery)) {
$myFriends = $rowa['friend_id'];
?>
您可以将 $myFriends 定义为一个数组并将 friend_ids 添加到数组中,但是您不应该这样做,因为它效率低下。
您可以在 SQL 中使用 JOIN 关键字连接多个表。在这种特殊情况下,您将需要一个 INNER JOIN(有多种类型的联接,但您的任务是了解它们)。
$feedsql = "SELECT * FROM feed INNER JOIN friends ON feed.posted_by=friends.friend_id WHERE friends.user_id = '$session_id' ORDER by date_posted DESC";
由于您没有透露您的表结构,我假设 feed 表中的 posted_by 字段将确定帖子的发送者,因此我可以将此字段加入到 friend_id 字段中。如果不是这种情况,那么您需要确定可以在哪些字段上连接这 2 个表。
你甚至可以在上面2个表上加入users表来获取好友的详细信息。
关于php - 如何仅显示来自好友列表的帖子。 (正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439153/
我是一名优秀的程序员,十分优秀!