dedlfix: User-Connection

Beitrag lesen

Hi!

Hallo! Grüble, wie ich am sinnvollsten eine sog. User-Connection mit PHP und MySQL realisiere.
Habe mir folgendes überlegt: ich erstelle eine Tabelle "Freunde" und lasse dann über das Adden beide Namen einfügen.
Allerdings müsste ich dann verhindern, dass eine Verbindung zweimal besteht (User A - User B sowie nochmal umgedreht: User B und User A)... wie könnte ich das machen?

Warum willst du das verhindern? Ich würde es mir als Nutzer verbitten wollen, dass andere mich einfach so zu ihrem Freund machen können und dann ohne mein Zutun in meiner Freundesliste auftauchen. Deshalb sehe ich es als sehr wohl sinnvoll an, dass A->B _und_ B->A unabhängig voneinander und nebeneinander existieren können. Und dann brauchst du einfach nur eine Zuordnungstabelle, die aus zwei Feldern User-A und User-B sowie einen Unique-Index über beide Spalten (nicht zwei einzelne!) besteht.

Frezunde anzeigen ist ja einfach.. das lese ich schlichtweg nur aus. Achso, da hab ich doch ein Problem :D : Und zwar, wenn ich es auslese, muss ich verhindern, dass der eigene Username mitangezeigt wird, wie stelle ich das an?

Wenn du verhinderst, dass der Anwender seine eigene Kennung zu seiner Liste hinzufügen kannst, ist das Problem schon nicht mehr existent. Alternativ kannst du es bei der Abfrage verhindern, indem du zur Bedingung machst, dass User-A ungleich User-B ist. Das musst du dann aber immer machen, auch wenn du nur mal die Freunde durchzählen willst. Jedoch ist das dann ein sinnloser Datensatz, der stets ignoriert werden müsste und somit gleich ganz wegbleiben kann und dann nicht dieser Art Probleme erzeugt.

Wenn du allerdings einen Umkehrautomatismus, so wie von dir eigentlich vorgesehen, implementieren willst, so hast du noch ein paar mehr Probleme. Du musst dann zum einen Umkehrdatensätze verhindern und zum anderen beim Abfragen immer in beiden Spalten suchen. Die Spalte, die nicht der eigenen User-ID entspricht ist dann der Freund. Schließlich ist ja nicht sichergestellt, wer nun als A und wer als B auftaucht. Das hängt ja davon ab, wer den Freundeseintrag vorgenommen hat.

Lo!