2011-01-14 7 views
1

Ich habe Probleme herauszufinden, wie ich meine Informationen am besten speichern kann. Ich entschuldige mich dafür, dass ich keinen einfachen Weg gefunden habe, mein Problem zu erklären, aber hier geht es darum (die Früchte sind zum Beispiel):Effektive Möglichkeit, Benutzerauswahlen in MySQL mit PHP zu speichern?

Angenommen, meine Benutzer haben die Möglichkeit, die folgenden Früchte im Kühlschrank zu behalten:

Äpfel, Orangen, Trauben, Birnen

Die Datenbank ist bereits eingerichtet mit einem Tisch 'Früchte' genannt, wo Äpfel id_fruit ist = 1, Orangen ist id_fruit = 2 etc.

Wie ich schon sagte Alle Benutzer haben die Möglichkeit, diese Früchte zu verfolgen, jedoch ... Ich kann derzeit keine einfache Möglichkeit finden, die Benutzerauswahl zu speichern von welchen Früchten sie verfolgen wollen. Wenn Benutzer 1 Äpfel nicht mag, kann er einfach in seine Einstellungen gehen, Äpfel deaktivieren und Äpfel nicht mehr in seinem Armaturenbrett erscheinen lassen.

Die einzige Möglichkeit, diese Informationen zu speichern, ist eine Tabelle zu erstellen, die Felder für User_id, Äpfel, Orangen, Trauben, Birnen enthält. Und dann die user_id und Yes/No oder 0/1 für die Früchte speichern.

Dies verursacht große Trauer, wenn ich jemals mehr Früchte oder was auch immer hinzufügen möchte.

Was ist der beste Weg, um diese Informationen in MySQL zu speichern, mit PHP. Und wie würde ich diese Informationen abrufen?

Der Benutzer meldet sich an, überprüft die DB, welche Früchte er sehen möchte und zeigt nur die Früchte an, die er ausgewählt hat.

Jede Hilfe würde sehr geschätzt werden.

Antwort

5

Dies ist eine klassische Beziehung zwischen has-and-objects-to-many oder einfach man-to-many.

Table `users` 
============= 
id 
name 
... 

Table `fruits` 
============== 
id 
name 
... 

Table `users_fruits` 
==================== 
id 
user_id 
fruit_id 

In users_fruits speichern Sie eine Zeile pro Benutzer-Frucht Beziehung: (user_id: 42, fruit_id: 3).

+1

Oh wow, ich nehme an, ich sollte ein Anfänger php Buch ziehen. Vielen Dank :) –

+0

@Stephen Könnte eine gute Idee sein. ;) – deceze

+1

Oder, naja, es ist ein relationales Thema von Datenbanken wirklich, nicht php :) Deceze: Upvoted Ihre Antwort, es ist im Grunde das gleiche wie das, was ich sagte, aber auf eine viel bessere Art und Weise erklärt. –

2

Erstellen Sie eine Tabelle, die die tatsächliche Beziehung verfolgt.

Sie haben eine Benutzertabelle mit Benutzer-IDs. Sie haben einen Obsttisch mit Obst ID.

Erstellen Sie eine Tabelle mit Benutzer-Frucht-Beziehungen. Lassen Sie es drei Spalten haben, id, user_id und fruit_id.

Wenn Benutzer 1 die Früchte 2,3 und 5 verfolgt, fügen Sie diese drei Zeilen in die Tabelle ein. Das heißt, drei Zeilen mit user_id = 1 und den verschiedenen fruit_id's für jede Zeile.

Verwandte Themen