Inge: sinnvolles Formularhandling

Hallo,

ich möchte auf eine Website folgendes umsetzen:

Es gibt ein HTML Formular, welches aus 3 Schritten und somit aus 3 Dateien besteht (form1.php, form2.php, form3.php). Beim Aufruf kommt man auf form1.php; von dort auf per link weiter auf form3.php und von dort aus auf form3.php. In form 3.php gibt es einen letzten Link, welcher auf eine Bestätigungseite führt und die eingegebenen Daten aus den 3 Dateien per E-Mail verschickt.

Dieses Formular ist von 25 verschiedenen Links aus aufrufbar.

In abhängigkeit des Links, über welchen auf das Formular gekommen wurde, sollen in form2.php andere Formularfelder angezeigt werden.

Wie realisiere ich nun sowas?

Auf dem Apache Server läuft PHP; eine MySQL DB hab ich auch zur Verfügung.

Ich dachte an folgende Lösung:

  • Den 25 Links, welche auf das formular führen, wird jeweils eindeutiger ein Query- String angehängt

Bspl.:
<a href="form1.php?link=1">link1</a>
<a href="form1.php?link=2">link2</a>
<a href="form1.php?link=25">link25</a>

  • Die eingegeben Daten aus form1.php werden bei klick auf den link zum form2.php in einer Session gespeichert.

  • Am Anfang von form2.php wird ein mehrdimensionales Array definiert, welches die Angaben zu den Feldern je Link hat

Bspl.:

array[link1][feld1][name] = 'foo'
array[link1][feld1][type] = 'text'
array[link1][feld1][length] = '20'

array[link1][feld2][name] = 'bar'
array[link1][feld2][type] = 'radio'

array[link1][feld3][name] = 'irgendwas'
array[link1][feld3][type] = 'text'
array[link1][feld3][length] = '20'

array[link2][feld1][name] = 'foo'
array[link2][feld1][type] = 'text'
array[link2][feld1][length] = '20'

array[link25][feld1][name] = 'foo'
array[link25][feld1][type] = 'text'
array[link25][feld1][length] = '20'

Dieses Array wird nun je nach übergebenem Query String (der natürlich von form1 auf form2 mitgeschleift wird) ausgelesen und die entsprechenden Eingabefelder werden generiert.

Die Eingabe wird dann bei Klick auf weiter wieder im Array gespeichert.

  • Beim generieren der E-MAil werden die Daten zu den Session-Variablen wieder aus dem Array gelesen.

Ist das eien gute Möglichkeite? Oder wie gehts einfacher?

Vielen Dank für Euere Hilfe!!

  1. Hi,

    Ist das eien gute Möglichkeite?

    ja.

    Oder wie gehts einfacher?

    Statt des Arrays könntest Du die Default-Daten in einer DB-Tabelle ablegen (sofern möglich). Das dürfte ggf. auch die Wartbarkeit erhöhen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Statt des Arrays könntest Du die Default-Daten in einer DB-Tabelle ablegen (sofern möglich). Das dürfte ggf. auch die Wartbarkeit erhöhen.

      Vielen Dank!

      Insgesamt gibt es ja folgende Attribute:

      • Name
      • Defaultvalue
      • length
      • maxsize
      • Beschreibung
      • checked
      • selected

      Wie speichere ich diese nun sinnvoll ab? Z.B. für Radio-Buttons?!

      1. Hi,

        Insgesamt gibt es ja folgende Attribute:

        [...]

        und das ganze für n Eingabefelder.

        Wie speichere ich diese nun sinnvoll ab?

        Linknummer (=Gruppe), Eingabefeldnummer, Liste der benötigten Attribute. Vergiss dabei nicht type. checked und selected kannst Du zusammenfassen.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. Hello,

        Insgesamt gibt es ja folgende Attribute:

        • Name
        • Defaultvalue
        • length
        • maxsize
        • Beschreibung
        • checked
        • selected

        Wie speichere ich diese nun sinnvoll ab? Z.B. für Radio-Buttons?!

        Ohne Verwendung einer Session kannst Du die tatsächlich im Array von Form zu Form posten. Baust Du einfach ein Bildchen weniger ein, dann stimmt die Traffic-Bilanz wieder *g*

        Array füllen
        serialisieren
        base64-codieren

        versenden

        base64-decodieren
        deserialisieren
        Array benutzen

        serialisieren
        base64-codieren

        versenden
        ...

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen