Dynamische Anzahl Formularfelder
phase
- programmiertechnik
Hallo, ich habe folgende Aufgabenstellung:
Es gibt ein Anmeldeformular für Veranstaltungen. Hier kann sich der user mit seinen Daten wie name, Adresse, etc. anmelden. Die Daten werden dann in eine MySQL-DB geschrieben. Soweit kein problem.
Jetzt soll das Formular aber um die Möglichkeit mehrere personen anzumelden erweitert werden. Es soll ein Selectfeld geben in dem man die anzahl der Personen auswählen kann. Je nach auswahl, soll sich das Formular dann dahin ändern für jede Person die entsprechenden Daten einzutragen.
Also quasi für jede person einen Block mit Name, Adresse, etc.
Mir fehlt jetzt ein bisschen der Ansatz, wie man das am geschicktesten löst. Vor allem der Aufbau der Tabellenstruktur in der Db ist mir nicht ganz klar, da ich ja vorher nicht weiß wieviele Personen angemeldet werden.
Viellecht kann mir jemand von euch mal auf die Sprünge helfen.
Vielen Dank,
phase
Hi,
Vor allem der Aufbau der Tabellenstruktur in der Db ist mir nicht ganz klar, da ich ja vorher nicht weiß wieviele Personen angemeldet werden.
Welchen Unterschied macht es deiner Meinung nach, ob eine, 15 oder 4711 Personen angemeldet werden?
MfG ChrisB
Hallo Chris,
naja, es ist ja nicht so, dass einfach nur mehrere personen angemeldet werden, sondern diese sollen dann alle zu dieser einen anmeldung gehören also Person1 kommt mit 5 weiteren.
das muss ja zugeordnet werden. Vielleicht denke ich auch schon wieder einfach nur zu kompliziert....
Hi,
naja, es ist ja nicht so, dass einfach nur mehrere personen angemeldet werden, sondern diese sollen dann alle zu dieser einen anmeldung gehören also Person1 kommt mit 5 weiteren.
das muss ja zugeordnet werden.
Na dann ordne es halt zu ...
Wenn du nicht direkt eine 1:n-Beziehung Veranstaltung->Teilnehmer abbilden willst, sondern da noch eine Instanz Anmeldung dazwischenhaengen willst, dann mach das halt.
1:n Veranstaltung->Anmeldung,
1:n Anmeldung->Teilnehmer
MfG ChrisB
1:n Veranstaltung->Anmeldung,
1:n Anmeldung->Teilnehmer
veranstaltung -> anmeldung ist ggf zu überlegen, ob man nicht m:n verknüpft, ggf gibts ja kombi-anmeldungen, wo man 2 veranstaltungen mit einer anmeldung/karte besucht
das wird in salzburg beim jedermann so gehandhabt, man bekommt bei den festspielen nur karten, wenn man sich auch irgend eine andere aufführung ansieht ;)
ok, danke erst mal. Werd das mal angehen und ich dann ggf. noch mal melden.
Gruß,
phase
Jetzt soll das Formular aber um die Möglichkeit mehrere personen anzumelden erweitert werden. Es soll ein Selectfeld geben in dem man die anzahl der Personen auswählen kann. Je nach auswahl, soll sich das Formular dann dahin ändern für jede Person die entsprechenden Daten einzutragen.
Ein Anwendungsfall für Javascript. Wenn das Selectfeld geändert wurde, lies den aktuellen Wert aus und lege die gewünschten Felder an. Quasi eine Funktion "FelderEinfuegen", die du so oft aifrufst, wie vom User gewünscht. Problem: was tust du, wenn zwischendrin die Auzswahl verändert wurde? Wird die Anzahl erhöht, gibt es kein Problem, wird sie aber verringert, dann mußt du dir was einfallen lassen, also welche Felder du wieder rausschmeißt.
Mir fehlt jetzt ein bisschen der Ansatz, wie man das am geschicktesten löst. Vor allem der Aufbau der Tabellenstruktur in der Db ist mir nicht ganz klar, da ich ja vorher nicht weiß wieviele Personen angemeldet werden.
Eine Tabelle "Personen", eine Tabelle "Veranstaltung" und eine Tabelle "Anmeldungen" sollten für den Anfang genügen. In "Personen" speicherst du die Daten der Leute, die angemeldet sind, in "Veranstaltungen" die Events udn in "Anmeldungen" wer für welche Veranstaltung angemeldet wurde. Um die Info reinzubringen, wer welche Leute unter seinem Namen angemeldet hat, fügst du einfach ein Feld "angemeldet_von" ein. Als Beispiel:
Lieschen Müller (PersonID sei 42) meldet Hans Wurst (PersonID sei 112) und Jaroslav Jablonski (PersonID sei 77) zum Gruppensex ein (EventID sei 666). Dann sähe das so ais:
Tabelle "Anmeldungen"
ID | EventID | PersonID | AngemeldetID
----+---------+----------+-------------
1 | 666 | 42 | NULL
2 | 666 | 112 | 42
3 | 666 | 77 | 42
Das Ganze könnte man noch um einen Zeitstempel ergänzen, um die Abfragemöglichkeiten zu erweitern. Aber das Prinzip ist klar, oder?
JJ
Mahlzeit,
Lieschen Müller (PersonID sei 42) meldet Hans Wurst (PersonID sei 112) und Jaroslav Jablonski (PersonID sei 77) zum Gruppensex ein (EventID sei 666).
Wäre das nicht eher die Teufelsanbetung? Oder meintest Du das darauf folgende Hühneropfer mit anschließender Orgie von blutbesudelten Körpern?
Dann sähe das so ais:
... und ich dachte schon, Du bindest jetzt ein .flv ein ...
MfG,
EKKi