Es gibt verschiedenste Formularelemente, die unterschiedlich von Skripten ausgewertet werden müssen.
Ein User füllt ein Formular nicht nur zum Spass aus. Die Daten
aus den Formularen müssen ausgewertet werden. Zum einem kann
dies über JavaScript gehen, doch vor allem PHP bietet sich
für Auswertung von Formularen an.
seite.html
<html>
<head>
<title>Das erste PHP-Formular</title>
</head>
<body>
<form action="ausgabe.php" method="post">
Geben Sie bitte ihre Emailadresse ein!
<input type="text" name="email">
<input type="submit" value="Go! ">
</form>
</body>
</html>
Das Formular wird an das Skript, welches im action-Attribut definiert
ist, geschickt. In unserem Beispiel ist es das Skript ausgabe.php.
Die Daten werden mit der Methode post versendet, die Daten werden
also an dieses geschickt. Die andere Methode die möglich ist,
ist die get-Methode, welche die Daten aus dem Skript anfordert.
Das Skipt ausgabe.php hat nun die Aufgabe, die Emailadresse, welche
über das Formular eingegeben wurde, wieder auszugeben.
ausgabe.php
<html>
<head>
<title>Das erste PHP-Formular</title>
</head>
<body>
<?php
echo "$email<br>";
?>
</body>
</html>
Wie Sie sehen, kann auf den Wert der Eingabe direkt zugreifen.
Der Variablenname, für den Inhalt der Eingabe wird mit dem
HTML – Attribut name="" definiert.
Über diesen Namen kann direkt auf den Wert des Elementes zugegriffen
werden. Dies gilt für alle Fomular-Befehle.
Die Auswertung eines Eingabefeldes oder eines Textfeldes ist natürlich
ziemlich leicht. Man hat nur den Inhalt, auf den man zugreifen muss.
Schwieriger wird es bei Formularen mit Optionsfeldern, Checkboxen
oder Dropdown-Menüs.
Auswertung von Checkboxen
<form method="post" action="ausgabe.php">
<input type="checkbox" name="seite[]" value="https://www.devmag.net">
devmag.net<br>
<input type="checkbox" name="seite[]" value="http://www.drweb.de">
Dr.Web<br>
<input type="checkbox" name="seite[]" value="http://www.exine.de">
Exine<br>
<input type="submit" value="go!">
</form>
Die Problematik bei Checkboxen liegt darin, das mehrere Auswahlen
möglich sind. Da jedoch der Bezug zu dem Namen der Checkbox
aus der Gruppe verloren gehen würde, wenn man jeder Checkbox
einen eigenen Namen gibt. In PHP kann man über einen Array-Namen
auf mehrere Werte zugreifen. Das ist genau die Lösung des Problems.
Es wird als name – Attribut der Name des Arrays definiert, darauf
folgt eine [] – Klammer. Anhand dieser Klammer erkennt PHP, das
es sich um eine Elementgruppe handelt, bei der mehrere Werte möglich
sind.
Das PHP Skript erkennt $seite also als Array, welches mehrere Werte
beinhalten kann. Das Array ist standardmäßig ein numerisches
Array, also ein Array mit einer Zahl als Index.
ausgabe.php
<?php
foreach ($seite as $elem) {
echo "$elem<br>";
}
?>
Das Skript ließt über eine foreach-Schleife alle Inhalte
des Arrays aus. Die Inhalte, bei einem Formular mit Checkboxen sind
vordefiniert. Diese Definition erfolgt über das value-Attribut
bei der Definition der Checkbox.
Folglich gibt dieses PHP Skript alle Inhalte der ausgewählten
Elemente aus.
Sind alle drei Punkte angeklickt sieht die Ausgabe so aus:
https://www.devmag.net
http://www.drweb.de
http://www.exine.de
Man kann natürlich auch nur auf das erste Element welches
Ausgewählt wurde, zugreifen. Dies erfolgt dann in ganz normaler
Zählweise. Auf das erste Element wird mit $seite[0] zugegriffen,
entsprechend sieht es mit den anderen Elementen aus.
Auswertung von Radio-Buttons
Radio Buttons erlauben nur die Auswahl eines Elementes. Es macht
auch nur Sinn, das man nur ein Element auswählen kann. Folglich
ist auch der Wert des Elementes bei der Übergabe zum PHP Skript
einmalig.
Die Ausgabe erfolgt wie bei den Eingabe-, und Textfeldern.
seite.html
<html>
<head>
<title>Das erste PHP-Formular</title>
</head>
<body>
<form method="post" action="ausgabe.php">
<input type="radio" name="seite" value="https://www.devmag.net">
devmag.net<br>
<input type="radio" name="seite" value="http://www.drweb.de">
Dr.Web<br>
<input type="radio" name="seite" value="http://www.exine.de">
Exine<br>
<input type="submit" value="go!">
</form>
</body>
</html>
Das PHP Skript ist wie im ersten Beispiel.
ausgabe.php
<?php
echo "$seite";
?>
Dropdown Menüs
Bei den Dropdown Menüs gibt es zwei Möglichkeiten. Zum
einen gibt es die Felder, die nur eine Auswahl zulassen, doch das
HTML – Attribut multiple lässt auch mehrere Auswahlen
zu. Bei der Art mit mehreren Auswahlen, muss wieder wie bei den
Checkboxen vorgegangen werden. Bei der Auswahl von nur einem Element
ist auch nur die Ausgabe von einem Wert möglich.
Mit Attribut multiple
<html>
<head>
<title>Das erste PHP-Formular</title>
</head>
<body>
<form method="post" action="ausgabe.php">
<select size="3" name="site[]" multiple>
<option value="https://www.devmag.net/">devmag.net</option>
<option value="http://www.drweb.de/">Dr.Web</option>
<option value="http://www.exine.de">Exine</option>
</select>
<input type="submit" value="go!">
</form>
</body>
</html>
ausgabe.php
<?php
$count = count($site); //ermittelt die zahl der ausgewählten
elemente
$count–;
$i = 0; // zählvariable $i
while ($i<=$count) {
echo "$site[$i]<br>";
$i++; //$i wird bei jedem durchlauf um 1 erhöht
}
?>
Das Skript ausgabe.php arbeitet bei diesem Beispiel ein wenig anders.
Zunächst wird über die vordefinierte Funktion count()
die Anzahl der Elemente des Arrays $site ermittelt, dieser Wert
wird der Variablen $count zugewiesen.
Die Zählweise bei numerischen Arrays beginnt bei 0. Sind zwei
Elemente über das Formular ausgewählt hat die Variable
$count also den Wert 2. Von 0 bis 2 sind es jedoch drei Schritte.
In Wirklichkeit sind jedoch nur die Elemente $site[0] und $site[1]
definiert, folglich muss für einen korrekte Zugriff auf die
Werte des Arrays die Variable $count um 1 verringert werden. Danach
werden über eine while() – Schleife die einzelnen Werte des
Arrays ausgegeben.
(tf)