2016-04-30 9 views
0

Ich arbeite an einer kleinen Website, auf der Leute einander folgen können. Auf der Website befinden sich Newsfeeds, auf denen Benutzer Updates von anderen Benutzern sehen können, denen sie folgen. Das Problem ist, dass ich nur Beiträge von anderen Benutzern und nicht meine Beiträge sehen kann. Ich möchte, dass der aktuelle Benutzer seine Beiträge auch in den anderen Benutzerposts sehen kann. So etwas wie Facebook Wall. Ich habe Tonnen von verschiedenen Abfragen und PHP versucht, aber ich bekomme nur andere Benutzer Post oder wenn es mir gelingt, meine Beiträge zu ziehen, gibt es Dubletten Post für jeden Benutzer, der mir folgt.Beiträge von Benutzern anzeigen, denen ich folge, aber meine Beiträge auch anzeigen

Ich habe 3 Tabellen 'Mitglieder', 'Post' und 'folgen'. Die Mitglieder Tabelle enthält UserID, Name und Nachname. Post-Tabelle enthält die UserID (FromID in der Tabelle) Indiziert auf Mitglieder UserID und den Post vom Benutzer. In der Follow-Tabelle gibt es 3 Spalten FollowID, Followed und Follower Followed und Follower sind Index für Mitglieder UserID.

Im Moment benutze ich diese Abfrage:

$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"; 

$ user ist die Benutzer-ID des aktuellen angemeldeten Benutzers. Diese Abfrage gibt alle Posts zurück, die ich möchte, aber das Problem ist, dass mein Post show/n mal für jeden Benutzer, der mir folgt, angezeigt wird.

Ich würde wirklich die Freundlichkeit zu der eine schätzen, die mir einige Richtungen geben, was ich falsch mache. Danke

Antwort

0

Das Problem mit Ihrem $ user ist. Momentan ist es so, dass Sie in der where-Klausel eine OR-Bedingung haben. Und Sie versuchen, entweder Ihre Daten oder Ihre Follower-Daten zu ziehen.

Meine Lösung für Sie wäre, $ Benutzer von der Abfrage zu entfernen, die Sie haben. So haben Sie nur eine Liste von Follower-Daten. Haben Sie eine andere Abfrage für Ihre Posts und dann während der Anzeige sortieren sie nach datetime Timestamp, damit Sie Ihre Posts mit anderen Followern zu haben.

Um Ihre Posts und Follower Beiträge in einer Abfrage zu haben.

Verwenden Sie Union. Wie:

(Abfrage Ihrer Beiträge ORDER BY Datum) UNION (Abfrage der Follower Beiträge ORDER BY Datum);

Überprüfen Sie auch UNION Verwendung in w3schools.

Hoffe, das hilft

+0

Danke Freund der UNION hat mir geholfen! –

+0

Ihr Willkommen, ich bin froh, dass Sie es gelöst haben. –

0

Ich denke, diese Abfrage könnte einfacher sein, zu verstehen:

$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";