Deutsch Deutsch English English

Private Funktionen <<    ^ MPForm Hilfeseiten ^    >> Referenz der Feldtypen

MPForm-Dokumentation: Formularschleifen

Schwierigkeitsgrad C  

Wenn Sie eine bestimmte Seite aus einem mehrseitigen Formular mehrfach aufrufen wollen, dann brauchen Sie eine Schleife.
Ein Beispiel: Sie müssen eine Frage wie "Geben Sie Namen, Geburtsdatum usw. Ihrer Kinder an" in einem Formular unterbringen, mit einem separaten Feld für jedes Datenelement. Die mögliche Anzahl von Kindern kann dabei je nach Benutzer unterschiedlich sein.

Sie benötigen also eine Schleife, die die gleiche Formularseite immer wieder aufruft, bis der Benutzer die Frage "Haben Sie weitere Kinder" mit Nein beantwortet.

Wie kann man das mit einem Formular in LEPTON umsetzen?

Und schon ist die Formularschleife fertig.


Nun haben ein paar hundert Benutzer Ihren umfangreichen mehrseitigen Fragebogen ausgefüllt und Sie sollen eine Statistik der Daten anfertigen. Die beste Methode, diese Daten im Frontend zur Verfügung zu stellen, besteht in der Verwendung des Moduls CSV Export. Beachten Sie die dort angegebenen Sicherheitshinweise!

Jede Zeile in der exportierten CSV-Datei repräsentiert die Antworten eines Benutzers für alle Seiten mit der identischen Namensendung für die Ergebnistabelle, die im Backend eingestellt wird. Diese sollte nicht für andere Formulare in dieser WB-Installation verwendet werden.

LEPTON erkennt an Hand der Session-ID, welche Einträge in welche Zeile gehören. Selbst wenn mehrere Benutzer zeitgleich den Fragebogen ausfüllen, wird es keinen Datenmüll geben.

Aber wie ist das bei einer Formularschleife, werden die Daten des ersten Kindes dann mit denen des zweiten Kindes überschrieben? Die Antwort lautet nein, da die Funktion private_function_on_success für jedes zusätzliche Kind ein Zeichen an die Session-ID anhängt. Dann landen weitere Kinder einfach in neuen Zeilen, z. B. könnten sich bei 3 Kindern folgende Session-IDs ergeben:

Die Zuordnung der Folgekinder ist dann kein Problem, weil die ersten 8 Stellen ja identisch sind.