Kontakt aufnehmen

Formulare in PHP

Eine der besten Leistungen von PHP besteht darin, HTML-Formulare dynamisch zu gestalten und die Daten weiter zu verwenden, mit relativ geringem Aufwand.

Formulardaten auswerten

Das folgende Beispiel stellt ein einfaches Eingabeformular dar:

<form method="post" action="Ausgabe.php">
Artikel: <input type="text" name="Artikel"><br>
Farbe: <input type="text" name="Farbe"><br>
Preis: <input type="text" name="Preis"><br>
<input type="submit" name="senden" value="Senden">
</form>

Wird das Formular abgeschickt, werden alle Daten aus den Feldern an die Datei Datei Ausgabe.php übergeben. In PHP können die Daten dann wieder abgefragt werden. Je nach PHP-Einstellungen und verwendeter Methode (hier method="post"), sind die Daten dann in den jeweiligen Variablen enthalten:
a) sofern aktiviert, trägt der Variablenname, den Namen des HTML-Feldes (name="...")
b) bei verwendeter POST-Methode, sind die Daten durch $HTTP_POST_VARS['feldname'] abfragbar
c) bei verwendeter GET-Methode, sind die Daten durch $HTTP_GET_VARS['feldname'] abfragbar
d) ab PHP 4.1.0 sind die Daten zusätzlich mit $_GET['feldname'] bzw. $_POST['feldname'] abfragbar.

Beispiel:

<html>
<head>
<title>Ausgabe der eingegebenen Werte</title>
</head>
<body>
<?php
echo "Artikel: $Artikel<br>";
echo "Farbe: $Farbe<br>";
echo "Preis: $Preis<br>";
?>
</body>
</html>

In dieser Art stehen nicht nur Textfelder, sondern auch andere Dialogfelder zur Verfügung. Zu beachten ist dabei, dass bei Radiofeldern, wird jeweils der Wert übergeben, der ausgewählt wurde - gleiches gilt für Selectfelder. Eine Besonderheit stellen Checkboxen dar: Wurde die Checkbox nicht markiert, ist die Variable nicht vorhanden - wurde sie markiert, ist sie vorhanden. Beispiel:

<form method="post" action="Ausgabe.php">
<input type="checkbox" name="agb" value="1">
 Hiermit akzeptiere ich die AGB.<br>
<input type="submit" name="senden" value="Senden">
</form>

... kann in Ausgabe.php wie folgt behandelt werden:

<?php
if(isset($_POST['agb']))
{
 //AGB wurden akzeptiert ...
}
else
{
 //AGB wurden nicht akzeptiert ...
}
?>

Ein weiterer Sonderfall sind Selectfelder mit multipler Auswahlmöglichkeit. Um diese auswerten zu können, notiert man den Namen in HTML als PHP-Array, also mit [] hinten dran. PHP erkennt dies dann und erzeugt ein Array mit den entsprechenden Werten. Beispiel:

<form method="post" action="Ausgabe.php">
<select name="auswahl[]" size="3" multiple="multiple">
<option value="1">Auswahl 1</option>
<option value="2">Auswahl 2</option>
<option value="3">Auswahl 3</option>
</select>
<input type="submit" name="senden" value="Senden">
</form>

... kann in Ausgabe.php wie folgt behandelt werden:

<?php
$auswahl = $_POST['auswahl'];
echo 'Ausgewählt wurden: ';
for($i=0;$i<count($auswahl);$i++)
{
 echo $auswahl[$i];
}
?>

Dateiupload

Das Upload ist das Kopieren einer Datei aus dem Dateisystem des Clients auf das Dateisystem des Servers. Welche Datei hochgeladen wird, kann der Benutzer mit einem Dialogfeld auswählen. Das Dialogfeld kann so formuliert werden:

<form method="post" action="Ausgabe.php"
      enctype="multipart/form-data" >
Datei: <input name="Datei" type="file"><br>
<input type="submit" name="senden" value="Senden">
</form>

Wichtig dabei ist, dass zusätzlich die Codierung des Uploads angegeben werden muss (enctype="multipart/form-data"), da die Datei sonst von den meisten Browsern nicht hochgeladen wird. Die Datei wird dann beim Absenden des Formulars an den Server geschickt und mit dem Variablennamen $Datei bzw. $_FILES['Datei'] angelegt. Da PHP die Datei allerdings nicht dort ablegt wo wir sie haben möchten, sollte die Datei anschließend in das Zielverzeichnis kopiert werden. Beispiel:

<?php
if (move_uploaded_file($_FILES['Datei']['tmp_name'],
   '/meinverzeichnis/'.$_FILES['userfile']['name'])) 
{echo 'Ok.';}
else{echo 'Fehler, Datei konnte nicht geladen werden.';}
?>

Wie im Beispiel ersichtlich, erstellt PHP die Datei-Variable als assoziatives Array, als Werte werden name (Dateiname), type (MIME-Type), size (Dateigröße in Byte), tmp_name (Dateiname im Uploadpfad) und error (Fehlermeldung) gespeichert.

Achtung: Wenn auf dem Zielverzeichnis eine Datei mit diesem Namen schon vorhanden ist, wird diese überschrieben!

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Datenbanken

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern