Der Martin: Bestätigungsfenster nach Formularversand

Beitrag lesen

Hallo,

Die einfachste Lösung (aber nicht die beste) ist, wenn du nach dem erfolgreichen Check der Formulardaten in einem Hidden-Feld ein Wert setzt (z.b. "true" oder "yes" oder "1" usw.). Eine JavaScript-Funktion prüft dieses Feld alle x sek. nach nach dem entsprechenden Wert.
Ist vorhanden, dann alert() oder Meldung via HTML-Elementen wie DIV-Box.

Heißt das, dass in dem PHP-Script keine Möglichkeit besteht, statt des "echo"-Befehls, der das ganze Formular-Fenster löscht und die Nachricht oben mittig hinschreibt, ein neues kleines Fenster mittig mit einem OK-Knopf hinzubekommen?

genau das heißt es. Wenn du ein Formular abschickst, wird serverseitig(!) ein PHP-Script aufgerufen, das die Formulareingaben entgegennimmt, irgendwie verarbeitet und dann eine Antwort an den Browser zurückschickt. Diese Antwort wird als neue Seite dargestellt, ersetzt also das, was bisher im Browserfenster angezeigt wurde (das Formular).

Es ist ja nur eine optische Sache.

Eben. Und da kann PHP nicht mitmischen. Auch was du danach noch erwähnt hast (ein Message-Fenster, in dem man auf [OK] klicken soll), ist in PHP völlig unmöglich, da PHP auf dem Webserver läuft und gar nicht direkt mit dem Benutzer oder Ereignissen im Browser interagieren kann.

Der übliche Ablauf ist also:
 * HTML-Seite mit Formular wird angezeigt
 * Formular wird abgeschickt
 * Serverseitiges Script verarbeitet Formulardaten
 * Script erzeugt eine Antwortseite
 * Antwortseite wird im Browser dargestellt

Diese Antwortseite *kann* natürlich dieselbe sein wie die ursprüngliche, die das Formular enthält - eventuell um eine zusätzliche Information über den Erfolg der Aktion ergänzt.
Im Falle eines Misserfolgs (fehlerhafte Eingaben) kann die Antwortseite sogar das Formular mit allen bisher eingegebenen Werten enthalten, so dass der Besucher seine Eingabe korrigieren und das Formular erneut absenden kann. Diese Technik nennt sich im Fachjargon "Affenformular".

So long,
 Martin

--
Du kannst dem Leben nicht mehr Tage geben.
Aber dem Tag mehr Leben.