2016-04-30 4 views
0

Я работаю на небольшом веб-сайте, где люди могут следовать друг за другом. На сайте есть новостная лента, на которой пользователи могут видеть обновления от других пользователей, за которыми они следуют. Проблема в том, что я вижу только сообщения от других пользователей, а не мои сообщения. Я хочу, чтобы текущий пользователь мог видеть свои сообщения слишком упорядоченным в других сообщениях пользователей. Что-то вроде Facebook Wall. Я пробовал тонны разных запросов и php, но я получаю только сообщения других пользователей или когда мне удается вытащить свои сообщения, также есть публикация для каждого пользователя, который следует за мной.Показать сообщения от пользователей, которые я вам прошу, но также показать свои сообщения

У меня есть 3 участника таблицы, 'Post' и 'follow'. Таблица членов содержит идентификатор пользователя, имя и фамилию. Стол сообщений содержит идентификатор пользователя (FromID в таблице), индексированный для членов UserID и сообщения от пользователя. В следующей таблице есть 3 столбца FollowID, Followed и Follower, и Followed, и Follower являются индексами для членов UserID.

В данный момент я использую этот запрос:

$query= "SELECT Post.*, members.*, follow.* FROM Post 
INNER JOIN members ON Post.FromID=members.UserID 
LEFT JOIN follow ON members.UserID=follow.Followed 
WHERE Post.FromID='$user' OR follow.FollowerID='$user' 
ORDER BY Post.date DESC, Post.time DESC"; 

$ пользователь является Идентификатор_пользователя из текущего вошедшего в систему пользователя. Этот запрос возвращает все сообщения, которые я хочу, но проблема в том, что мой пост отображается/n раз для каждого пользователя, который следует за мной.

Я действительно был бы признателен за доброту, которая дает мне некоторые указания, что я делаю неправильно. Спасибо

ответ

0

Проблема с вашим $ пользователя. В настоящее время происходит то, что у вас есть условие OR в разделе where. И вы пытаетесь вытащить данные ваших данных или ур-последователей.

Моим решением для вас было бы удалить $ user из запроса, который у вас есть. Таким образом, у вас будет только список данных последователей. Ищите другой запрос для своих сообщений, а затем покажите их сортировку по дате времени Timestamp, чтобы у вас были ваши сообщения с другими подписчиками.

Чтобы разместить свои сообщения и сообщения в блоке в одном запросе.

Используйте союз. Например:

(запрос ваших сообщений ЗАКАЗАТЬ по дате) UNION (Запрос на сообщения подписчиков ORDER BY date);

Также проверьте использование UNION в w3schools.

Надеюсь, что это поможет

+0

Спасибо, друг, UNION помог мне! –

+0

Ваше приветствие, я счастлив, что вы его разрешили. –

0

Я думаю, что этот вопрос может быть проще понять:

$query = "SELECT * FROM Post,members,follow 

WHERE 

Post.FromID=members.UserID 
AND 
members.UserID=follow.Followed 


AND ( Post.FromID='$user' OR follow.FollowerID='$user')  

ORDER BY Post.date DESC, Post.time DESC"; 
Смежные вопросы