• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Beiträge von Freunden anzeigen

danielocity

Mitglied
Hallo zusammen.

Ich benötige mal wieder eure Hilfe. Ich möchte Einträge aus einer SQL-Tabelle anzeigen lassen wenn user dein Freund is. Naja schaut euch einfach mal meinen Code an, ihr werdet verstehn was ich meine.

PHP:
$user = mysql_fetch_array(mysql_query("select * from `user` where `id` = '".$_SESSION["id"]."'"));
$query = mysql_query("select user.id from friends, user where (friends.friend1='". $user["id"] ."' OR friends.friend2='". $user["id"] ."') AND (friends.friend1=user.id OR friends.friend2=user.id)");
while($row = mysql_fetch_array($query)){
    $query1 = mysql_query("select * from `userlog` where `user` = '".$row[0]."' order by `time` desc");
    while($row1 = mysql_fetch_array($query1)){
        $actions .= $row1["content"].'<br />';
    }
}
Funktioniert auch eigentlich. Das einzige Ding is das die Beiträge usergeordnet gezeigt werden und nich der Zeit nach. Liegt auch dadran das ich ein 2. query benutze. Weiß ich. Ich weiß bloß keine Lösung. Wenn ich alles in ein query packe funkts auch nimmer oder ich mach es einfach falsch.

Jemand dabei der eine Lösung hat? :)
Danke schonma im Vorraus!

Grüße Daniel
 
Zuletzt bearbeitet:
Ich kann das Problem nicht nachvollziehen. Die einzige Ausgabe, die du zu erzeugen scheinst, ist doch nach Zeit geordnet?
 
Ja klar. Aber die is ja logischer Weise nich für alle Freunde nach Zeit geordnet sondern nur für den einen. Schau angenommen ich hab die Einträge in der Tabelle user1 sagt blabla um 13 Uhr, user2 sagt hallo um 14 Uhr, user1 sagt wuff um 15 Uhr werden die Beiträge usergeordnet gezeigt, sprich user1 sagt wuff um 15 Uhr, user1 sagt blabla um 13 Uhr, user2 sagt hallo um 14 Uhr.
 
usergeordnet gezeigt, sprich user1 sagt wuff um 15 Uhr, user1 sagt blabla um 13 Uhr, user2 sagt hallo um 14 Uhr.
Die Aussage ist etwas verwirrend.

Also, dein Letztes SQL-Statement müsste die Einträge so ordnen und dementsprechnd ausgeben:
Name: user1
Verfasst: 15:00
Nachricht: wuff

Name: user2
Verfasst: 14:00
Nachricht: hallo

Name: user1
Verfasst: 13:00
Nachricht: blabla

Das wäre das Ergebnis bei order by Time desc.
Ich habe noch nicht wirklich das Problem gefunden?
 
Aus userlog auslesen und alle weiteren benötigten Informationen dranjoinen.

Code:
SELECT
        ul.*
FROM
        `userlog` AS ul
LEFT JOIN
        `user` AS u
    ON
        ul.`user` = u.`id`
LEFT JOIN
        `friends` AS f
    ON
        (u.`id` = f.`friend1` OR u.`id` = f.`friend2`)
WHERE
        f.`friend1` = $userId
    OR
        f.`friend2` = $userId
ORDER BY
        ul.`time` DESC

Natürlich ungetestet.
 
Also ich will ja nicht unhöflich sein aber wenn man wenigstens halbwegs PHP könnte würde man doch den Fehler entdecken. Das erste query liest die Freunde aus, und das zweite die Beiträge der Freunde. Da aber das zweite query im ersten while drin ist werden erst die Beiträge von Freund 1 zeitgeordnet gezeigt, dann Freund 2 ...
Hab ich ja auch schon geschrieben. Ich find halt bloß keine Lösung für.

Dein Skript funkt übrigens nicht.
 
Meine Query funktioniert sogar exakt so, wie ich sie aus dem Kopf geschrieben habe.

Code:
mysql> select * from user;
+----+-------------+
| id | name        |
+----+-------------+
|  1 | danielocity |
|  2 | mermshaus   |
|  3 | T!P-TOP     |
+----+-------------+
3 rows in set (0.00 sec)

mysql> select * from friends;
+---------+---------+
| friend1 | friend2 |
+---------+---------+
|       1 |       2 |
+---------+---------+
1 row in set (0.00 sec)

mysql> select * from userlog;
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
| id | user | text                                                                                                                       | time                |
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
|  1 |    1 | Ich benötige mal wieder eure Hilfe. Ich möchte Einträge aus einer SQL-Tabelle anzeigen lassen wenn user dein Freund is. | 2011-04-09 15:09:06 |
|  2 |    2 | Ich kann das Problem nicht nachvollziehen. Die einzige Ausgabe, die du zu erzeugen scheinst, ist doch nach Zeit geordnet?  | 2011-04-09 15:09:24 |
|  3 |    1 | Ja klar. Aber die is ja logischer Weise nich für alle Freunde nach Zeit geordnet sondern nur für den einen.              | 2011-04-09 15:09:42 |
|  4 |    3 | Die Aussage ist etwas verwirrend.                                                                                          | 2011-04-09 15:09:59 |
|  5 |    2 | Aus userlog auslesen und alle weiteren benötigten Informationen dranjoinen.                                               | 2011-04-09 15:12:06 |
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
5 rows in set (0.00 sec)

mysql> SELECT
    ->         ul.*
    -> FROM
    ->         `userlog` AS ul
    -> LEFT JOIN
    ->         `user` AS u
    ->     ON
    ->         ul.`user` = u.`id`
    -> LEFT JOIN
    ->         `friends` AS f
    ->     ON
    ->         (u.`id` = f.`friend1` OR u.`id` = f.`friend2`)
    -> WHERE
    ->         f.`friend1` = 1
    ->     OR
    ->         f.`friend2` = 1
    -> ORDER BY
    ->         ul.`time` DESC;
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
| id | user | text                                                                                                                       | time                |
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
|  5 |    2 | Aus userlog auslesen und alle weiteren benötigten Informationen dranjoinen.                                               | 2011-04-09 15:12:06 |
|  3 |    1 | Ja klar. Aber die is ja logischer Weise nich für alle Freunde nach Zeit geordnet sondern nur für den einen.              | 2011-04-09 15:09:42 |
|  2 |    2 | Ich kann das Problem nicht nachvollziehen. Die einzige Ausgabe, die du zu erzeugen scheinst, ist doch nach Zeit geordnet?  | 2011-04-09 15:09:24 |
|  1 |    1 | Ich benötige mal wieder eure Hilfe. Ich möchte Einträge aus einer SQL-Tabelle anzeigen lassen wenn user dein Freund is. | 2011-04-09 15:09:06 |
+----+------+----------------------------------------------------------------------------------------------------------------------------+---------------------+
4 rows in set (0.00 sec)
 

Neueste Beiträge

Zurück
Oben