Rene Grassegger: Mehrseitige PHP Formulare

Hallo Selflinge,

ich arbeite zur Zeit an mehrseitigen Formularen mit serverseitger Validierung.

Leider hänge ich an Kleinigkeiten fest, wo ich keine brauchbare Information mit Google, php.net und dgl. finden kann.

Kann mir jemand bitte erklären wie das funktioniert?

Mein Problem:

Ich habe drei Checkboxen:

<input type="checkbox" name="Deckleiste_A[]" value="mit Kugerl"<?php checked_checkbox($HTTP_POST_VARS['Deckleiste_A'], "mit Kugerl");?>>
<input type="checkbox" name="Deckleiste_A[]" value="mit Spitzen"<?php checked_checkbox($HTTP_POST_VARS['Deckleiste_A'], "mit Spitzen");?>>
<input type="checkbox" name="Deckleiste_A[]" value="ohne Kugerl/Spitzen"<?php checked_checkbox($HTTP_POST_VARS['Deckleiste_A'], "ohne Kugerl/Spitzen");?>>

die werden validiert und an den nächsten Schritt per method="post" weitergegeben.

Auf der nächsten Seite werden die beiden ausgeählten Werte des Arrays mit

if(isset($HTTP_POST_VARS['Deckleiste_A'])) {
        foreach($HTTP_POST_VARS['Deckleiste_A'] as $element) {
        echo '<input type="hidden" name="Deckleiste_A" value="'.$element."">\n";
        }
    }

in 2 hidden Fiels geschrieben.

Das Problem, wird die Seite nochmal gesendet (z.b. wegen Validierung gibt es einen Fehler wegen foreach)

"Warning: Invalid argument supplied for foreach() "

Meine Frage lautet nun.

Wie macht ihr es, dass Werte aus einem Array über mehrere Seiten immer erhalten bleiben?

(und wie verhindert ihr, dass das Formular vor der Validierung geschickt wird)

Tausend Dank für eure Mühe.

Gruß

Rene

  1. Hallo ihr da draußen,

    die werden validiert und an den nächsten Schritt per method="post" weitergegeben.

    Aus dem, was du geschrieben hast, schließe ich mal, dass du es mit JavaScript validierst.

    (und wie verhindert ihr, dass das Formular vor der Validierung geschickt wird)

    Validiere das Formular einfach im PHP-Script.
    Das heißt, dass das Formular immer abgesendet wird, und du dann im PHP-Script dein Zeug überprüfst. Wenn die Überprüfung fehlschlägt kannst du ja zum Beispiel den Browser zurück gehen lassen oder einfach eine Fehlermeldung ausgeben.

    Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
    Dogfish

    --
    Let's close our eyes and see what happens
    (http://dogfish.net.tc)
    1. Hallo Dogfish,

      Aus dem, was du geschrieben hast, schließe ich mal, dass du es mit JavaScript validierst.

      Nein ich arbeite nur mit PHP.

      Grüße

      Rene

  2. Hallo Rene,

    Wie macht ihr es, dass Werte aus einem Array über mehrere Seiten immer erhalten bleiben?

    Variante 1)
    Du wandelst das Array in einen String, dann packst du den in ein hidden-Field
    und im Script 2 entschlüsselst du den String wieder zu einem Array.
    Variante 2)
    Verwewnde Sessions.

    Ich rate dir zu 2.

    und wie verhindert ihr, dass das Formular vor der Validierung geschickt wird

    gar nicht. Wie schon gesagt, werte die Eingaben mittels PHP aus, lasse
    Fehler vom User ggf. korigieren und leite dann erst auf Seite 2 weiter.

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Hallo David,

      Verwewnde Sessions.

      Ich hab da grad was gelesen und wenn du es auch vorschlägst, wirds wohl die session werden.

      Herzlichen Dank!

      Gruß

      Rene