Hallo tinu,
Ich möcht ja garnicht, dass das Eintragsformular auf der selben Seite angezeigt wird, wie das Gästebuch selbst. Also müsst ich ja, sofern alle Daten richtig eingegeben wurden wieder auf das Gästebuch (die Einträge) weiterleiten... Was mit header() allerdings nicht mehr geht, da mit dem Formular ja bereits ein header ausgegeben wurde.
da gibt es einen einfachen Trick: gib das Formular noch nicht aus.
Hmm... also bringt das dämliche Affenformular für meine Bedürfnisse eigentlich garnix?! (ausser dass bei falschen Eingaben wieder das Formular mit den bereits eingegebenen Daten angezeigt werden würde).
Schauen wir uns zwei Grundtechniken an:
a) alles in einer Datei
Ermittle Typ des Aufrufs
Mehrfachauswahl (in PHP switch())
Erstaufruf
Ausgabevariable := Gästebuch
Erstelle neuen Eintrag
Ausgabevariable := Leeres Formular
Fehlerhaft ausgefülltes Formular
Ausgabevariable := Ausgefülltes Formular mit Fehlermeldung
(ggf. alle Fehler markieren)
Korrekt ausgefülltes Formular
Speichere den Eintrag ab
Ausgabevariable := Gästebuch
Sonst was
Ausgabevariable := Gästebuch
Ende Mehrfachauswahl
Zeige den Inhalt der Ausgabevariablen an.
b) zwei Dateien: 1) Gästebuch 2) Formularseite
Ermittle Aufruftyp der Formularseite
Mehrfachauswahl (in PHP switch())
Neuen Eintrag erstellen
Ausgabevariable := Leeres Formular
Fehlerhaft ausgefülltes Formular
Ausgabevariable := Ausgefülltes Formular mit Fehlermeldung
(ggf. alle Fehler markieren)
Korrekt ausgefülltes Formular
Speichere den Eintrag ab
Leite ohne eine Ausgabe vorzunehmen auf das Gästebuch weiter
Sonst was
Ausgabevariable := Gästebuch
Ende Mehrfachauswahl
Zeige den Inhalt der Ausgabevariablen an (im Falle der Weiterleitung
wird dieser Code nicht erreicht)
b) hat den Vorteil, dass man nach erfolgreichem Abspeichern die
Zuückschaltfläche im Browser bedienen kann, ohne dass ein zweiter Eintrag
mit den gleichen Daten abgespeichert wird.
Im Fall von a) könntest Du das erfolgreiche Speichern über einen Session-
Mechanismus absichern, so dass doppelte Einträge verhindert werden.
Eines der Grundprinzipien, das Du verinnerlichen solltest ist das EVA-Prinzip:
- E ingabe
- V erarbeitung
- A usgabe
Mache also keine Ausgaben, während Du noch an der Verarbeitung der Eingabedaten bist.
Freundliche Grüße
Vinzenz