In HTML-Seiten kann man umfangreiche Formulare einbetten, um Benutzereingaben zu erfassen. Ein detailliertes Tutorial, das viele Aspekte abdeckt, findest du bei SelfHtml.
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:
Das folgende Formular ruft beim Klick auf Sumbit
das PHP Skript skript.php
auf.
<form action="skript.php" method="post"> <input type="text" name="vorname" /> <input type="submit" value="senden" /> </form>
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.
<?php echo $_POST['vorname']; ?>
Dieses grundlegende Beispiel verwendet zunächst 2 Dateien, um Daten vom Browser des Anwenders zum Server zu übermitteln:
Das ist häufig unpraktisch, später werden wir eine Möglichkeit kennenlernen, fürs erste Versuche ist dieses Verfahren jedoch einfacher zu durchschauen.
Eine einfache Vorlage mit 2 Dateien findest du hier. Übertrage die Dateien auf deinem Webspace und teste die Eingabe über das Formular.1)
Erweitere das Formular um ein zweites Eingabefeld.