Daten über mehrer Formulare sammeln und in DB speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten über mehrer Formulare sammeln und in DB speichern

    Hallo Community,

    ich arbeite derzeit an einem Projekt in ColdFusion. Ist zwar kein PHP, allerdings gibt es keine wirklich guten Resourcen für CF.
    Ich programmiere unter anderem auch in PHP und evtl. Lösungsansätze sollten daher ohne Probleme umsetzbar sein. Aus diesem Grund stelle ich meine Frage hier rein und hoffe auf ein paar Ideen oder Ratschläge.

    Folgende Aufgabenstellung habe ich, die von meiner Seite aus ziemlich unelegant gelöst wurde.

    Ich arbeite an einer Beschwerdemanagement Anwendung, die beim Beantragen einer Beschwerde etliche Daten über mehrere Formularseiten sammelt, die anschließend in einer Datenbank erfasst werden müssen.

    Der Formular Workflow sieht folgendermaßen aus:

    1. Seite / Form:
    - Basisdaten
    - 1-n Tickets (die aus einem Ticketingsystem kommen =>Remedy)
    - pro Ticket (!) gibt es die Möglichkeit URL hinzuzufügen

    >> Also voneinander abhängige Datensätze

    2. Seite / Form:
    - Betroffene Produkte können hier hinzugefügt werden. Dies kann über eine Suchschnittstelle oder mehrerer aufeinanderfolgender Drop Down Menüs erfolgen.

    >> Wird zu den Basisdaten referenziert

    3. Seite / Form:
    - Ansprechpartner (über eine weitere Form können hier Personen aus einem Mitarbeiterverzeichnis ausgelesen und übergeben werden)

    >> Wird zu den Basisdaten referenziert

    4. Seite / Form:
    - Grundverteiler (besteht nur aus Drop Down Menüs)

    >> Wird zu den Basisdaten referenziert

    5. Seite / Form:
    - Zusatzverteiler (über eine weitere Form können hier Personen aus einem Mitarbeiterverzeichnis ausgelesen und übergeben werden)

    >> Wird zu den Basisdaten referenziert

    Soweit so gut.
    Derzeit speichere ich die Daten aus der ersten Seite gleich nach dem Abschicken in die Datenbank und kann daraufhin die Fremdschlüssel für die darauffolgenden Datensätze bestimmen. Diese Vorgehensweise stellte sich als untauglich heraus, da die Antragsteller teilweise zurückgesprungen sind und die gleichen Datensätze noch einmal abgespeichert haben (Redundanzen) oder die Seiten / Formulare 2. - 5. einfach weggelassen haben, obwohl die hier gefoderten Daten zwingend notwendig gewesen sind. Daraufhin habe ich nur noch Workarounds geschrieben, mit denen ich nicht glücklich bin.

    Ich suche daher nach einer eleganten Möglichkeit die Daten über 5 Seiten hinweg zusammeln und erst am Ende zu abspeichern.

    Die Größe der einzelnen Datensätze ist recht hoch und wie schon erwähnt sind die Datensätze in Abhängigkeiten zueinander.

    Eine Möglichkeit wäre alle Daten zu sammeln und in hidden Fields weiter zu übergeben. Darüber wäre ich besonders wegen der Daten aus dem ersten Formular, die eine Abhängigkeit untereinander haben, nicht glücklich. Zudem müsste ich das Gleiche Formular Konstrukt mit all seinen Schleifen auf jeder Seite bis zum Schluss wieder und wieder einbinden.

    In CF gibt es auch die Möglichkeit über Komponenten (ähnlich der Klassen) zu arbeiten. Hier habe ich in Erwägung gezogen, die gesammelten Daten in einem Objekt zu strukturieren und jeweils zu übergeben. Allerdings ging das schief, da ich keine Möglichkeit kenne ein Objekt in CF mit diesen großen Datenmengen an eine andere Seite zu übergeben.

    Mein letzter Gedankengang war der, die Daten in XML abzubilden und unter einer SessionID abzuspeichern. Die Abhänigkeiten würden somit erhalten bleiben und die Datenmengen wären egal.

    Wie Ihr schon lesen könnt, ich bin total planlos, in welche Richtung ich mich entscheiden soll, bzw. welche professionell wäre.

    Daher bin ich für Euere Ideen oder bisherigen Vorgehensweisen dankbar und freue mich auf Antworten.

    Gruß,
    Alex

  • #2
    Also mir würden da 3 Sachen einfallen.


    1.

    Die Daten bei jedem formular per <input type="hidden" name="feldname" value="wert"> zu übergeben und dann halt jedesmal die postvariablen auslesen und beim nächstenmal wieder übergeben.


    2.

    Du speicherst eine Datei in /tmp/ wo du die benötigten Variablen reinspeicherst und dir dann zum schluss wieder ausließt... oder auch nicht, wenn das script abgebrochen wurde.


    3.

    Du legst eine Session an und speicherst die Übergaben jeweils in Sessionvariablen, die du ja so lange hast wie die Session andauert.
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      Danke für die Antwort. Ich schätze, dass ich dann wohl Möglichkeit 3 nehmen werde und über Sessions arbeite. Erscheint mir als die simpelste Variante, um nicht unnötig viel Scriptarbeit haben zu müssen.

      Kommentar


      • #4
        such mal nach dem stichwort affenformular

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar

        Lädt...
        X