wie realisiere ich eine Freundesliste?
christian
- php
Hallo,
ich versuche gerade eine einfache kleine community auf Grundlage von php und mysql zu schreiben. Nun will ich eine Freundesliste realisieren, bin mir aber nicht wirklich sicher, wie ich das am besten anstelle.
Meine Idee: alle Freunde einer Person (bzw. deren id), speichere ich in EINEM Feld, trenne sie durch Komma und löse sie bei Bedarf jeweils mit der explode-Funktion auf. Das Problem dabei ist, dass ich die Daten in diesem Array anschließend nicht (nach Anfangsbuchstaben) ordnen kann.
Wie realisiseren große Communitys ihre Freundeslisten???
Wie realisiseren große Communitys ihre Freundeslisten???
Indem sie die Daten in einer Datenbank speichern und bei Bedarf abrufen..
Wie realisiseren große Communitys ihre Freundeslisten???
Indem sie die Daten in einer Datenbank speichern und bei Bedarf abrufen..
Ja, schon klar. Mich interessiert aber WIE sie das machen. In einem Array oder gibt es für jedes Mitglied auf der Freundesliste ein extra-Feld oder werden die Daten für eine Freundesliste in einer extra-Tabelle gespeichert?
Ja, schon klar. Mich interessiert aber WIE sie das machen.
Da gibt es viele Varianten.
Man könnte beispielsweise eine Tabelle nehmen, mit der ID des Users verknüpfen und die Freunde eintragen:
Tabelle User:
ID | User
1 | John
2 | Doe
Tabelle Freunde:
ID | NameDesFreundes
1 | Bla
1 | Blubb
2 | Foo
3 | Bar
etc..
Servus,
Man könnte beispielsweise eine Tabelle nehmen, mit der ID des Users verknüpfen und die Freunde eintragen:
Streich das "beispielsweise". Es ist die einzig sinnvolle Möglichkeit ;)
ID | NameDesFreundes
Wobei man hier doch besser die ID des Freundes speichert.
Zur besseren Veranschaulichung
Tabelle User:
id | user
1 | John
2 | Doe
3 | Foo
4 | Bar
etc.
Verknüpfungstabelle
user_id | friend_id
1 | 2
1 | 4
2 | 1
4 | 3
etc.
Gruss
Patrick
Wobei man hier doch besser die ID des Freundes speichert.
Wobei man dann alle Daten doppelt hat, weil man eine Tabelle User und eine Tabelle Friends braucht, in denen dann das gleiche steht.
Dann lieber nur die User_ID nehmen:
Zur besseren Veranschaulichung
Tabelle User:
id | user
1 | John
2 | Doe
3 | Foo
4 | Bar
etc.Verknüpfungstabelle
user_id | user_id_vom_freund
1 | 2
1 | 4
2 | 1
4 | 3
etc.Gruss
Patrick
Servus,
Wobei man dann alle Daten doppelt hat, weil man eine Tabelle User und eine Tabelle Friends braucht, in denen dann das gleiche steht.
Nein. die friend_id bezieht sich natuerlich auch auf die id des users in der user-Tabelle. Ausgehend von...
Tabelle User:
id | user
1 | John
2 | Doe
3 | Foo
4 | Bar
etc.
Verknüpfungstabelle
user_id | friend_id
1 | 2
1 | 4
2 | 1
4 | 3
etc.
...hat also John sowhol Doe als auch Bar in der Friendslist, Doe hat John in der FL, Foo niemanden und Bar hat Foo als Freund.
Gruss
Patrick
ich versuche gerade eine einfache kleine community auf Grundlage von php und mysql zu schreiben. Nun will ich eine Freundesliste realisieren, bin mir aber nicht wirklich sicher, wie ich das am besten anstelle.
Meine Idee: alle Freunde einer Person (bzw. deren id), speichere ich in EINEM Feld, trenne sie durch Komma und löse sie bei Bedarf jeweils mit der explode-Funktion auf.
Ja, das wird gerne gemacht, ist aber mangelhaft. Besser wäre eine zweite Tabelle "Beziehungen" (können ja auch Blacklists sein, die zusammen mit den Whitelists in der genannten Tabelle verwaltet werden), die die IDs des Listenden und des Gelisteten speichert. Auf die Kombination der beiden IDs zusammen mit dem Beziehungtyp (black, white, etc.) könntest Du einen Index setzen, der verhindert, das ein und dieselbe Information (bspw. bedingt durch einen Programmfehler) in der datenhaltung landet.