====== Eingabe mit Formularen ====== ===== HTML Formulare ===== In HTML-Seiten kann man umfangreiche Formulare einbetten, um Benutzereingaben zu erfassen. Ein detailliertes Tutorial, das viele Aspekte abdeckt, findest du bei [[https://wiki.selfhtml.org/wiki/HTML/Tutorials/Formulare|SelfHtml]]. ===== Daten mit ''GET'' und ''POST'' empfangen ===== Um die mit einem Formular versandten Daten mit PHP auszuwerten, muss man wissen, dass PHP bereits eine Infrastruktur zum Empfang solcher Daten bereitstellt. Da Browser gegenwärtig Formulardaten nur mit den HTTP-Methoden ''GET'' und ''POST'' versenden, finden sich in PHP so empfangene Daten in den superglobalen Variablen ''$_GET'' und ''$_POST''. In diesen Variablen sind die Schlüssel-Wert-Paare in Form eines assoziativen Arrays abgelegt. In "normalen" Arrays sind die Schlüssel Ganzzahlen, in PHP können die Schlüssel von Arrays auch alphanumerisch, also (fast!) beliebige Strings, sein. Arrays in PHP, bei denen die Schlüssel nicht nur aus Ganzzahlen bestehen, werden //assoziative Arrays// genannt. Das //name// Attribut in einem HTML Formular erzeugt also bei der Übergabe an ein PHP-Programm automatisch eine spezielle Variable. Auf diese Weise kann man Daten an PHP Programme übergeben: ===== Beispiel ===== Das folgende Formular ruft beim Klick auf ''Sumbit'' das PHP Skript ''skript.php'' auf.
Für das Texteingabefeld "vorname" wird bei der Übergabe die Variable ''$_POST['vorname']'' erzeugt. Schreibt man als Methode im Formular ''method="get"'', wird stattdessen die Variable ''$_GET['vorname']'' erzeugt. In beiden Fällen enthält diese Variable den Wert des Formularfelds, welches dieses zum Zeitpunkt des Submits enthalten hat. Dieses grundlegende Beispiel verwendet zunächst 2 Dateien, um Daten vom Browser des Anwenders zum Server zu übermitteln: {{ :faecher:informatik:oberstufe:php:eingabe:form2files.png |}} Das ist häufig unpraktisch, später werden wir eine Möglichkeit kennenlernen, fürs erste Versuche ist dieses Verfahren jedoch einfacher zu durchschauen. ---- {{:aufgabe.png?nolink |}} === (A1) === Eine einfache Vorlage mit 2 Dateien {{.:vorlage_eingabe_2dateien.zip|findest du hier}}. Übertrage die Dateien auf deinem Webspace und teste die Eingabe über das Formular.((Am besten arbeitest du für jede neue Aufgabe in einem eigenen Unterverzeichnis.)) Erweitere das Formular um ein zweites Eingabefeld.