| | | | |
| |||||||
KategorienArtikelWerkzeuge | AnsichtenFormularverarbeitung, ZusammenfassungAus PHP.de Wiki
FormularnotierungHTML besitzt Sprachelemente für Formularfelder, Buttons und das Form selbst. Nur Formularfelder innerhalb von <form> werden beim Absenden übertragen. Das Absenden erfolgt nur durch Bestätigung eines Submit- oder Image-Buttons oder durch ein <button>-Element. Das Übertragen des Formulars nach Enter in einem einzeiligen Eingabefeld ist browserspezifisch und damit nicht verlässlich. Zudem kann durch den Javascript-Aufruf submit () das zugehörige Formularobjekt übertragen werden (also ein Request gestartet werden). ÜbertragungDie Übertragungsmethode von Formulardaten wird durch das method-Attribut des <form>-Tags bestimmt. Mögliche Methoden sind POST- und GET-Request, die Formulardaten werden dabei je nach Typ im Anfragekörper oder in der URL übertragen. GemeinsamkeitenAlle Eingaben und Auswahlen treten im Folgescript (action-Angabe des Formulars) stets als Wert des Requestparameterarrays auf, je nach method-Attributangabe des Formulars unter $_POST oder $_GET. Der oder die Elementwerte sind dabei jeweils unter einem assoziativen Arrayschlüssel hinterlegt, der dem name-Attribut des jeweiligen Formularelements entspricht. Ist das name-Attribut eine Arraynotation in HTML: <input name="angaben[]" value="Angabe 1" /> <input name="angaben[]" value="Angabe 2" /> <input name="werte[abc][1]" value="Wert 1" /> <input name="werte[abc][2000]" value="Wert 2000" />
Dazu gehören alle Textfelder, Einfach-Selections und Radiobuttons. Nur ein Wert ist auswählbar oder direkt eingebbar. Zur Verarbeitung ist jeweils der Attributwert von value aus dem Formularelemnent Als Requestparametereintrag verfügbar. (Ausnahme: Textareas besitzen kein value-Attribut sondern benutzen den Taginhalt des Elements. Skalare Eingabefelder übermitteln in (ungefälschten) abgesendeten Formularen stets eine Stringtyp. Das gilt auch für numerische Angaben im HTML Bereich. Dieser Fakt ist durch das HTTP Protokoll bedingt und ist wichtig für die Validierung von Eingabedaten. Mehrdimensionale Eingabetypen
Mehrdimensionale Eingabefelder werden in (ungefälschten) abgesendeten Formularen stets als Arraystruktur aus Stringtypen abgebildet. Auch hier können keine anderen Datentypen als Strings auftreten. Zur Verabeitung einer Gruppe bietet sich stets foreach an:
Zur Verarbeitung einzelner Werte sollte stets eine Verfügbarkeitsprüfung über empty oder isset erfolgen. Achtung! Häufig gemachter Fehler: Datentypen (technischer Ansatz)Die bisherigen Betrachtungen sind nur halb wahr. Genau betrachtet, ergibt sich der Datentyp eines Elements ausschließlich aus den unter "Gemeinsamkeiten" genannten Fakten. Es ist also genauso möglich, mehrere Textfelder als assoziatives Array darzustellen <input name="interessen[]" type="text" value="" /> <input name="interessen[]" type="text" value="" /> |