我的朋友数组只返回一个数字而不是所有数字。
($myfriends = 3)
应该是......
($myfriends = 3 5 7 8 9 12).
如果我在循环中得到它...整个事情都有效,但不是按照我想要的日期顺序显示帖子。 例如:
(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")
依此类推...任何新帖子组都会使用较旧的帖子,而不是转到Feed的顶部。
我希望这是有道理的...抱歉不好的解释和草率的代码
TABLES feed&下面的朋友 两者都有自动增加主'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>
答案 0 :(得分:0)
问题本身是由在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表中的posting_by字段将决定谁发送了帖子,因此我可以在friend_id字段上加入此字段。如果不是这种情况,那么您需要确定这两个表可以连接到哪些字段。
您甚至可以加入上述2个表格中的用户表格,以获取朋友的详细信息。