PHP MySQL Mehrere Werte in einem Datensatz (Spalte)?
Moin!
Ich stehe jetzt vor folgendem Problem. Ich will eine Art Plattform interne E-Mail Funktion bauen allerdings ohne die richtige Mail Funktion, sondern mit ner Datenbank, so die Absender, der Empfänger, der Inhalt etc. in der DB gespeichert werden. Allerdings kann die E-Mail auch an mehrere Benutzer verschickt werden. Mach ich dann für jeden Benutzer in der DB eine eigene Spalte für die E-Mails oder eine Spalte und in ein Feld dann mehrere Benutzer ID's (z.B. 2,34,3,7,11). Wie könnte ich diese dann Auslesen und eintragen?
Danke schonmal im voraus!
VG
1 Antwort
Deine Tabellen müssen einatomig sein. Dh. Eine Tabelle mit einzelnen Spalten für ID, Anrede, Name, Vorname, Emailadresse usw.
Dann benötigst Du eine Tabelle für die Verteiler mit mindestens zwei Spalten Verteiler-ID und der ID des Empfängers.
Die Abfrage könntest Du dann mit einem Join machen.
Ein Verteiler ist eine Liste mit Empfängern, wenn es mehrere Verteiler gibt, dann müssen die Listen in der Verteilertabelle unterscheidbar sein.
Wenn Du keine Ahnung von Datenbankdesign hast, wird es schwierig dir zu erklären wo drauf es dabei ankommt.
Die Frage ist ja, wofür brauche ich diese Verteilertabelle? Geht das denn nicht mit der von mir beschriebenen Variante?
Zunächst solltest Du dich mal fragen was eine Email überhaupt ausmacht und welche Eigenschaften eine Email überhaupt hat.
Mit fallen spontan folgende Eigenschaften ein:
-----------------------------
Sendedatum
Absender
Empfängerliste bzw. Verteiler (hier könnte man noch nach direkten Empfängern und CC unterscheiden)
Dringlichkeit
Empfangsbestätigung
Textinhalt
Anhänge
---------------------------------
Überall wo mehrere Einträge möglich sind, benötigst Du eine weitere Datentabelle die Du irgendwie verknüpfen musst.
Deshalb nennt man das übrigens auch relationale Datenbank.
Jetzt hast Du eventuell mehrere Empfänger, also benötigst Du in der Email-Tabelle eine Verknüpfung 1:n bzw "eins zu viele".
Deine Email hat in der Email-Tabelle vielleicht die ID 2389, Dann muss jeder Empfänger der in die Empfängerliste eingetragen wird über die ID 2389 der Email zugeordnet werden können.
Dieses Grundprinzip ist immer einzuhalten, sonst kommt am Ende nur Murks heraus.
Also wenn Du eine Mail an einen festen Verteiler senden möchtest solltest Du ebenfalls nach diesem Prinzip vorgehen und eine Verteiler-Tabelle verwenden in der alle Empfänger eingetragen werden.
Jetzt kann man in einer Verteilerliste unterschiedliche Verteiler anlegen, z. B. einen Verteiler für Newsletter, einen Verteiler für Aktionen usw.
Diese Verteiler sollten dann aber unterscheidbar sein - und zwar über eine ID
VerteilerID | EmpfängerID
Und weil man seine Tabellen immer einatomig anlegt benötigt man idR noch eine Tabelle wo die Empfänger gespeichert sind:
EmpfängerID | Anrede | Name | Vorname | Emailadr | Newsletter | Werbung |
Das ganze mag zwar im ersten Moment ein wenig umständlich anmuten, aber wenn man das nicht macht, fällt einem das irgendwann auf die Füße.
Also ich habe eine Tabelle "users", in der alle Personen Daten stehen. Dann habe ich überlegt eine Tabelle "emails" zu machen, in der dann die Spalten Absender, Empfänger, Betreff, Inhalt, Zeit und Anhänge zu finden sind. Bei Absender / Empfänger habe ich überlegt Benutzer ID's zu verwenden, welche ich vorher Auslese und in einem Array Speichere (und dann per foreach verarbeiten kann). Kann ich dann irgendwie bei "Empfänger" mehrere ID's eintragen oder bei "Anhänge" mehrere Anhänge?
Was meintest du denn mit Verteiler?