2017-04-11 4 views
0

Ich habe zwei Tabellen die ersten "Posts" und die zweite genannt "Freunde" Ich möchte die Beiträge erhalten, dass es 'Publisher' Spalte ist in 'Freunde existieren 'Tabelle (das heißt, um Freunde Beiträge zu bekommen), als ich es durch datetime Spalte bestellen möchten, die in' Posts 'Tabelle gefunden.Erhalten Sie Beiträge von Freunden des Benutzers und bestellen Sie sie von datetime von colomns

Was ich versucht habe, ist:

$fetch_fr_result = $conn->query("SELECT frid FROM friends WHERE username='$userusername'"); 
while ($fetch_fr_send = $fetch_fr_result->fetch(PDO::FETCH_OBJ)){ 
$fetch_fr_id = $fetch_fr_send->frid; 

$fetch_fr_data_result = $conn->query("SELECT username FROM users WHERE id='$fetch_fr_id'"); 
$fetch_fr_data_send = $fetch_fr_data_result->fetch(PDO::FETCH_OBJ); 
$fetch_fr_data_username = $fetch_fr_data_send->username; 

$fetch_posts_result = $conn->query("SELECT * FROM posts WHERE publisher='$fetch_fr_data_username' ORDER BY orderdate DESC LIMIT 5"); 

while ($fetch_posts_send = $fetch_posts_result->fetch(PDO::FETCH_OBJ)){ 
$fetch_posts_msg = $fetch_posts_send->thetext; 
$fetch_posts_time = $fetch_posts_send->time; 
if (!empty($fetch_posts_msg)){ 
echo '<div class="posttext">' . $fetch_posts_msg . '</div> - ' . $fetch_posts_time; 
} 
} 
} 

Das Problem in diesem Code ist: Erhalten jeder Freund dann Freund Beiträge erhalten dann bestellen sie von Zeit, aber ich möchte, dass alle Freundes Beiträge von Zeit bestellen!

Sagen Sie mir bitte was zu tun?

+0

Können Sie uns Ihre Tabellenstrukturen zeigen? Übrigens, was Sie hier wollen, ist Tabellen beitreten. –

+0

Hier sind die Tabellenbilder: http://imgur.com/4mFKkTM | http://imgur.com/GDHJfAI –

+0

Und die Benutzer Tabelle bitte. –

Antwort

0

Vielleicht habe ich Ihre Frage missverstanden, aber das könnte Ihnen geben, was Sie wollen. Wenn nicht, sag mir, was falsch ist und ich werde versuchen, es zu lösen.

$fetch_result = $conn->query(' 
    SELECT 
     `p`.thetext, 
     `p`.time 
    FROM 
     `friends` as f, 
     `users` as u, 
     `posts` as p 
    WHERE 
     `f`.frid = `u`.id /* join friends id with users table */ 
    AND 
     `p`.publisher = `u`.username /* join friends username with posts table */ 
    AND 
     `f`.username = "' . $userusername . '" 
    ORDER BY 
     `p`.orderdate DESC 
'); 

Und ich würde Ihnen raten, die Benutzer-ID als Fremdschlüssel in anderen Tabellen zu verwenden, nicht den Benutzernamen ein. Und Sie sollten die Datentypen ändern, um etwas zu verwenden, das besser passt. Es gibt zu viele varchar (1000) in Ihren Tabellen.

+0

Danke für Ihre Ratschläge, für mein Problem, ich habe das gleiche Problem, siehe die Bilder hier: http://imgur.com/rdqCUu4 –

+0

Das Problem ist in der Bestellung von Posts, es bekommt die Posts der Benutzerfreunde und funktioniert auch, aber die Reihenfolge aller Posts (nicht jeder Posts) funktioniert nicht :( –

+0

Kannst du die Abfrage ausführen, die ich in einem SQL-Client geschrieben habe und $ userusername mit einem tatsächlichen Benutzernamen ändern und senden Sie einen Screenshot des Ergebnisses? –

Verwandte Themen