Freundesliste

lisali

Erfahrenes Mitglied
Hallo!

Ich bin momentan echt durcheinander wegen meiner Freundesliste. Das System bei mir ist so aufgebaut, dass es eben diese Datenbank "friends" gibt und dann jeweils "first", "second" und "status". In "first" und "second" werden die User-ID's eingetragen. Wenn der "status" auf "both" gesetzt ist, sind beide miteinander befreundet.
Jetzt habe ich aber ein Problem bei der Ausgabe, dass ich die richtige User-ID in einem Schleifenlauf auswähle. Und zwar mache ich das so (siehe Kommentare zur Erläuterung):

PHP:
# Ich selecte "first" und "second" überall in der DB, wo beide miteinander befreundet sind ("status" = "both")
$result = mysql_query("SELECT first,second FROM friends WHERE status='both' 
AND (first='$get_id' OR second='$get_id')");
while ($friends = mysql_fetch_array($result)) {
# Ich prüfe mit count, ob die User-ID in diesem Durchlauf "first" oder "second" ist
# Hier liegt auch der Fehler, denn ist $count1 einmal "true", ist es das in jedem Durchlauf
$count1 = mysql_fetch_array(mysql_query("SELECT COUNT(status) FROM friends 
WHERE (first='$get_id' AND status='both')"));
$count2 = mysql_fetch_array(mysql_query("SELECT COUNT(status) FROM friends 
WHERE (second='$get_id' AND status='both')"));

# Prüfen, ob User-ID "first" oder "second" und dementsprechend die 
# User-Informationen selecten... da aber z.B. mal der erste $count1 bereits 
# schonmal "true" bzw. nicht null war, dann selectet er folglich immer die falsche User-ID
if (!empty($count1[0])){ $friend = mysql_fetch_array(mysql_query("SELECT id FROM users WHERE id='$friends[second]'")); }
elseif (!empty($count2[0])){ $friend = mysql_fetch_array(mysql_query("SELECT id FROM users WHERE id='$friends[first]'")); }

...

Jetzt ist die Frage, wie ich das alternativ lösen kann, dass das nicht passiert?

Ich hoffe wirklich, dass ihr mir helfen könnt, wäre voll dankbar!


Liebe Grüße,

Lisa
 
Hi
erstmal würde ich statt mysql_fetch_array mysql_fetch_assoc nutzen :)
Dann:
PHP:
$result = mysql_query("SELECT first,second FROM friends WHERE status='both' 
AND (first='".$get_id."' OR second='".$get_id."')"); 
// wenn du nur '$get_id' nimmst, fragst du ob first = $get_id ist, und nicht etwa 12 oder so 
#statt count
while( $friends = mysql_fetch_assoc($result) ){
if( $friends['first'] == $get_id ){
 //foo
}
if( $friends['second'] == $get_id){
  //bar
}
}
 
hey,
könnt man vielleicht ein Tutorial oder den gesamten Code posten für eine Freundeliste? Könnte diese gut mal gebrauchen
 
Zurück