Gemeinsame Freunde bestimmen?

Alexio Vay

Grünschnabel
Hallo,

ich möchte gerne die gemeinsamen Freunde auf einer Profilseite eines Users anzeigen lassen.

So lasse ich alle Freunde anzeigen:

PHP:
$result = mysql_query("SELECT `left`,`right`
FROM `friends` 
WHERE (`left`='".$_GET['id']."' OR `right`='".$_GET['id']."')
AND
(`status`='both')
ORDER BY RAND()
LIMIT 6");

Zur Erläuterung: Wenn weder 'left' noch 'right' die ID des aktuellen Profils und 'status' nicht 'both' ist, ist kein Freund vorhanden.

Also gebe ich so die Freunde aus:

PHP:
if ($users['left'] == $_GET['id']) echo $users[right];
else echo $users;

Nun muss ich ja bei Ausgabe der gemeinsamen Freunden überprüfen, ob die Freunde der Freundesliste des aktuellen Profils auch meine Freunde sind.

Deswegen hatte ich eine while-Schleife in der while-Schleife gebaut, was aber ganz bestimmt der falsche Weg ist... und deshalb bitte ich hier um Rat, wie ich das sonst ordentlich lösen könnte.

Vielen Dank im Voraus,

Alexio
 
Naja, du könntes deine Freunde und die Freunde deines Freundes jeweils in ein Array packen und dann diese zwei Arrays vergleichen und gibst nu die Gemeinsamkeiten aus
 
Abgesehen davon, dass ich deine Datenbanktabellenstruktur ändern würde, und zwar so, dass jeweils links der Freundehaber und rechts der Befreundete steht und diese dann als eindeutiger Schlüssel gekennzeichnet sind, solltest du es genau so handhaben, wie ich das gerade gesagt habe. Das erleichtert dir einiges.
 
Abgesehen davon, dass ich deine Datenbanktabellenstruktur ändern würde, und zwar so, dass jeweils links der Freundehaber und rechts der Befreundete steht und diese dann als eindeutiger Schlüssel gekennzeichnet sind, solltest du es genau so handhaben, wie ich das gerade gesagt habe. Das erleichtert dir einiges.

Das verwirrt mich etwas. Ist dies nicht dein erster Beitrag in diesem Thread? Ansonsten, dankeschön. Werde es so machen.
 
Eigentlich gehört das doch ins Datenbank Forum, oder?

SQL:
SELECT			a.user_id
FROM
				(/* Alle Freunde von "1" */
					SELECT			IF(`left` = 1, `right`, `left`) AS user_id
					FROM			`friends`
					WHERE			(`left` = 1 OR `right` = 1)
					AND				`status` = 'both'
				) AS a
				,
				(/* Alle Freunde von "2" */
					SELECT			IF(`left` = 2, `right`, `left`) AS user_id
					FROM			`friends`
					WHERE			(`left` = 2 OR `right` = 2)
					AND				`status` = 'both'
				) AS b
				
WHERE			a.user_id = b.user_id
 
Zurück