PHP - Formularelemente mit PHP auswertenEs 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="http://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:

http://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="http://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="http://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)

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: