Я пытаюсь изменить ленту новостей моего пользователя, чтобы показывать только сообщения от друзей, а не от всех пользователей на сайте. Мне удалось сделать это примерно так:Сравнение столбцов из нескольких таблиц в одном запросе PHP/SQL
function friend_posts(){
global $session_user_id;
if(friends_exist($session_user_id) === true){
$friends = mysql_query("SELECT * FROM `friendship` WHERE `user_id` = $session_user_id AND `pending` = 0");
while($friend = mysql_fetch_array($friends)){
$friendID = $friend['friend_id'];
$posts = mysql_query("SELECT * FROM `posts` WHERE `userid` = $friendID ORDER BY `timestamp` DESC");
while($post = mysql_fetch_array($posts)){
$friendData = user_data($post['userid'],'username','first_name','last_name');
echo $friendData['username'].": ".$post['status']."<br>";
}
}
} else {
echo "Nothing to display. Try adding some friends!";
}
}
Однако это не так удобно. Например, если я хочу разбивать на страницы, я не знаю, как бы я начал это делать, используя что-то вроде этого. Также, если несколько пользователей публикуют, как бы я сортировать их по метке?
Я предполагаю, что единственный путь, который я могу сделать, - это доступ к столбцам из нескольких таблиц, а затем сортировка по timestamp
, которая хранится в таблице posts
. Таблица friendship
имеет только id
, user_id
, friend_id
и pending
.
Как бы я это сделал? Есть ли более простой способ сделать то, что я пытаюсь сделать?
Я очень новичок в SQL. Я не знаю слишком много, кроме вставки/удаления/обновления.