Werner: "Zurück" ohne dass sich das Formular leert

Hallo,
ich habe ein kleines Problem. Ich habe ein Formular, das von PHP verarbeitet wird. Nun kann es sein, dass es nicht richtig ausgefüllt worden ist, also lasse ich nach dem Abschicken dann eine Fehlermeldung erscheinen. Wenn dann der User auf "Zurück" klickt, ist das ganze Formular leer. Wie kann ich das verhindern? Eine Möglichkeit wäre sicher, auf der Seite mit der Fehlermeldung das Formular wieder anzeigen zu lassen mit den Feldern vorbelegt mit der alten Eingabe... aber gibt es nicht auch eine andere Lösung? Hat das Ganze eventuell irgendwie etwas mit dem Cache zu tun?
Sicherlich bin ich nicht der Erste, der das fragt, aber ich finde gerade nichts passendes im Archiv.. wahrscheinlich übersehe ich die Lösung....
Gruß Werner

  1. Hallo

    Eine Möglichkeit wäre sicher, auf der Seite mit der Fehlermeldung das Formular wieder anzeigen zu lassen mit den Feldern vorbelegt mit der alten Eingabe... aber gibt es nicht auch eine andere Lösung? Hat das

    Du kannst doch schon Dein Ursprungformular mit
    php generieren. Wenn keine Daten per post angekommen sind
    gibst du es aus. Wenn eine Fehlermeldung vorliegt
    gibst du erst diese aus und dann das formular.
    Grundsätzlich bei jedem Feld ein value ausgeben, falls einer
    vorliegt.
    Das Formular schickst du einfach an sich selber.
    Ist zwar trotzdem aufwendig, aber einfacher als zwei Formulare.

    So mache ich es, kann mir keine einfachere Lösung vorstellen,
    aber wer weiß, vielleicht postet ja noch jemand was...

    Gruß,

    Ben

  2. Moin!

    Wenn dann der User auf "Zurück" klickt, ist das ganze Formular leer. Wie kann ich das verhindern?

    Dieses Verhalten hängt vom Browser ab. Ich benutze Opera, der macht sowas nicht, sondern läßt das Formular beim Zurückgehen (oder erneutem Vorwärtsgehen) so anzeigen, wie man es verlassen hat.

    Insofern dürfte deine Einflußmöglichkeit auf den Browser sehr gering sein.

    Eine Möglichkeit wäre sicher, auf der Seite mit der Fehlermeldung das Formular wieder anzeigen zu lassen mit den Feldern vorbelegt mit der alten Eingabe...

    Das ist die zu bevorzugende Methode. Und ohnehin eine sehr gute Idee. Die DCLP-FAQ nennt so eine Funktion "Affenformular": http://www.dclp-faq.de/q/q-stil-normalform.html

    aber gibt es nicht auch eine andere Lösung? Hat das Ganze eventuell irgendwie etwas mit dem Cache zu tun?

    Nein, andere Lösungen sind mir nicht bekannt. Entweder dein Browser bietet das Formular beim Zurückgehen ausgefüllt wieder an, oder du schickst die ausgefüllten Daten auf der neuen Seite nochmal zum Browser.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Dieses Verhalten hängt vom Browser ab. Ich benutze Opera, der macht sowas nicht, sondern läßt das Formular beim Zurückgehen (oder erneutem Vorwärtsgehen) so anzeigen, wie man es verlassen hat.

      Insofern dürfte deine Einflußmöglichkeit auf den Browser sehr gering sein.

      Stimmt, bei Opera bleibt die Eingabe...aber der IE macht das (Löschen) anscheinend auch nciht immer.. wenn ich bei www.google.com was eingebe, suche und zurückgehe ist es wieder da
      wenn ich in dem Eingabefeld auf der Ergebnisseite (das ja schon vorbelegt ist) was eingebe, suche, und auf diese seite zurückgehe, steht beim IE der erste Suchbegriff, bei Opera allerdings der zweite den ich neu eingegeben hatte...

  3. Hallo, Werner,

    eigentlich sollten die Eingaben erhalten bleiben - und die meisten modernen Browser machen es wohl auch so ...

    Eine Möglichkeit zum Sicherstellen der gewünschten Funktionalität wäre das bereits erwähnte "Affenformular", das aber serverseitiges Skripting voraussetzt.

    Als Alternative könnte man die Feldwerte auch mit Hilfe von JavaScript in einem oder mehreren Cookies speichern und beim erneuten Laden der Seite (oder eines anderen Formulars mit identischen Feldern) wieder einsetzen.

    Grüße,

    Sebastian

    1. Moin!

      Eine Möglichkeit zum Sicherstellen der gewünschten Funktionalität wäre das bereits erwähnte "Affenformular", das aber serverseitiges Skripting voraussetzt.

      Du postest in einem Thread mit dem Thema "PHP". Da kann man serverseitiges Skripting voraussetzen. :)

      Als Alternative könnte man die Feldwerte auch mit Hilfe von JavaScript in einem oder mehreren Cookies speichern und beim erneuten Laden der Seite (oder eines anderen Formulars mit identischen Feldern) wieder einsetzen.

      Uargh. Klingt eklig.

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|