4. Abrufen der Formulardaten
Nachdem wir nun gelernt haben, wie ein Formular aufgebaut sein könnte und wie Methoden POST und GET funktionieren, können wir das ganze auch praktisch testen.
Dazu verwenden wir erstmal folgendes Formular:
HTML-Code:
<form action="index.php" method="POST">
Bitte geben Sie ihre Daten ein:<br/>
Name:
<input name="name" type="text" value="" size="15"/><br/>
Vorname:
<input name="vorname" type="text" value="" size="15"/><br/>
Straße / Nr:
<input name="strasse" type="text" value="" size="15"/>
<input name="nr" type="text" value="" size="3"/><br/>
PLZ / Ort:
<input name="plz" type="text" value="" size="5"/>
<input name="ort" type="text" value="" size="15"/><br/>
Telefon:
<input name="telefon" type="text" value="" size="15"/><br/>
<input name="senden" type="submit" value="Senden"/>
</form>
Testweise geben wir unsere Daten dort ein und schicken das Formular mit dem Button "Senden" ab.
Die Seite läd neu und das Formular ist wieder leer. Das ist natürlich nicht das, was wir wollen.
Wie können wir also auf die Daten zugreifen?
Ganz einfach: Je nach Übertragungsmethode werden die Daten entweder in das Array $_POST oder in das Array $_GET geschrieben. Damit können wir dann beliebig arbeiten.
In unserem Beispiel ist die Methode POST benutzt worden, weshalb wir uns einfach mal das Array $_POST ausgeben lassen wollen, natürlich nur, wenn dieses Array auch existiert:
PHP-Code:
<html>
<body>
<?
error_reporting(E_ALL);
if(isset($_POST['senden'])) // Sendenbutton gedrückt?
{
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="index.php" method="POST">
Bitte geben Sie ihre Daten ein:<br/>
Name:
<input name="name" type="text" value="" size="15"/><br/>
Vorname:
<input name="vorname" type="text" value="" size="15"/><br/>
Straße / Nr:
<input name="strasse" type="text" value="" size="15"/>
<input name="nr" type="text" value="" size="3"/><br/>
PLZ / Ort:
<input name="plz" type="text" value="" size="5"/>
<input name="ort" type="text" value="" size="15"/><br/>
Telefon:
<input name="telefon" type="text" value="" size="15"/><br/>
<input name="senden" type="submit" value="Senden"/>
</form>
</body>
</html>
Als Ausgabe können wir z.B. das erhalten:
Code:
Array
(
[name] => Faith
[vorname] => Warren
[strasse] => Superstraße
[nr] => 007
[plz] => 12345
[ort] => Berlin
[telefon] => 030 / 1234567
[senden] => Senden
)
Anhand des Arrays können wir erkennen, dass die Namen der Formularfelder die Indexe des Arrays sind und die Inhalte (Value) die Werte des Arrayeintrags.
Damit ist natürlich auch verständlich, dass jedes Formularelement einen eineindeutigen Namen haben sollte. Ausnahmen bestätigen wie immer die Regel (meistens bei Radiobuttons). Ist dies nicht der Fall, so wird der Wert des ersten Elements mit dem Namen mit dem Wert des letzten Elements mit dem gleichen Namen überschrieben.
Nachfolgend zwei kleine Beispiele:
Die Ausgabe der Formulardaten in einem Textbeispiel:
PHP-Code:
<?
error_reporting(E_ALL);
$msg = "";
if(isset($_POST['senden']))
{
$msg = 'Sie heißen '.$_POST['vorname'].' '.$_POST['name'].
' und sind '.$_POST['geschlecht'].'.<br />'.
'Sie sind amtlich wohnhaft gemeldet in der '.$_POST['strasse'].' '.$_POST['nr'].
' in '.$_POST['plz'].' '.$_POST['ort'].' im Bundesland '.$_POST['bundesland'].'.<br />'.
'Sie sind telefonisch erreichbar unter '.$_POST['telefon'].'.<br />';
}
?>
<html>
<head><title>Formularauswertungen via PHP</title></head>
<body>
<?
if($msg != '')
{
echo $msg.'<br />';
}
?>
<form action="index.php" method="POST">
Bitte geben Sie ihre Daten ein:<br/>
Name:
<input name="name" type="text" value="" size="15"/><br/>
Vorname:
<input name="vorname" type="text" value="" size="15"/><br/>
Straße / Nr:
<input name="strasse" type="text" value="" size="15"/>
<input name="nr" type="text" value="" size="3"/><br/>
PLZ / Ort:
<input name="plz" type="text" value="" size="5"/>
<input name="ort" type="text" value="" size="15"/><br/>
Geschlecht:
<input name="geschlecht" type="radio" value="männlich"/>Männlich
<input name="geschlecht" type="radio" value="weiblich"/>Weiblich<br/>
Bundesland:
<select name="bundesland" size="1">
<option value="Baden-Württemberg">Baden-Württemberg</option>
<option value="Bayern">Bayern</option>
<option value="Berlin">Berlin</option>
<option value="Brandenburg">Brandenburg</option>
<option value="Bremen">Bremen</option>
<option value="Hamburg">Hamburg</option>
<option value="Hessen">Hessen</option>
<option value="Mecklenburg-Vorpommern">Mecklenburg-Vorpommern</option>
<option value="Niedersachsen">Niedersachsen</option>
<option value="Nordrhein-Westfalen">Nordrhein-Westfalen</option>
<option value="Rheinland-Pfalz">Rheinland-Pfalz</option>
<option value="Saarland">Saarland</option>
<option value="Sachsen">Sachsen</option>
<option value="Sachsen-Anhalt">Sachsen-Anhalt</option>
<option value="Schleswig-Holstein">Schleswig-Holstein</option>
<option value="Thürigen">Thürigen</option>
</select>
Telefon:
<input name="telefon" type="text" value="" size="15"/><br/>
<input name="senden" type="submit" value="Senden"/>
</form>
</body>
</html>
Beispielhafte Ausgabe wäre:
Code:
Sie heißen Warren Faith und sind männlich.
Sie sind amtlich wohnhaft gemeldet in der Superstraße 007 in 12345 Berlin im Bundesland Berlin.
Sie sind telefonisch erreichbar unter 030 / 1234567.
Es wird manchmal auch erwünscht, dass Formulare nach dem Abschicken noch die eingegebenen Daten in den Elementen beibehalten. Dazu dieses Beispiel:
PHP-Code:
<?
error_reporting(E_ALL);
if(isset($_POST['senden'])) // Sendebutton gedrueckt
{
$msg = 'Sie heißen '.$_POST['vorname'].' '.$_POST['name'].'.<br />'.
'Sie sind amtlich wohnhaft gemeldet in der '.$_POST['strasse'].' '.$_POST['nr'].
' in '.$_POST['plz'].' '.$_POST['ort'].'.<br />'.
'Sie sind telefonisch erreichbar unter '.$_POST['telefon'].'.<br />';
}
else
{
$msg = '';
$_POST = array();
}
// Ueberprueft, ob das Array einen Eintrag mit dem
// Index $name hat und gibt dann den Wert zurueck
// Wenn nicht, ist die Rueckgabe ein leerer String
function getValue($name)
{
if(isset($_POST[$name]))
{
return $_POST[$name];
}
else
{
return '';
}
}
?>
<html>
<head><title>Formularauswertungen via PHP</title></head>
<body>
<?
if($msg != '') // wenn $msg nicht leer ist
{
echo $msg.'<br />';
}
?>
<form action="index.php" method="POST">
Bitte geben Sie ihre Daten ein:<br/>
Name:
<input name="name" type="text" value="<?=getValue('name')?>" size="15"/><br/>
Vorname:
<input name="vorname" type="text" value="<?=getValue('vorname')?>" size="15"/><br/>
Straße / Nr:
<input name="strasse" type="text" value="<?=getValue('strasse')?>" size="15"/>
<input name="nr" type="text" value="<?=getValue('nr')?>" size="3"/><br/>
PLZ / Ort:
<input name="plz" type="text" value="<?=getValue('plz')?>" size="5"/>
<input name="ort" type="text" value="<?=getValue('ort')?>" size="15"/><br/>
Telefon:
<input name="telefon" type="text" value="<?=getValue('telefon')?>" size="15"/><br/>
<input name="senden" type="submit" value="Senden"/>
</form>
</body>
</html>
Anmerkung: Für die Verwendung von "<?=", welches identisch ist mit "<?php echo", muss in der php.ini "short_open_tag = true" sein. Ansonsten muss das ganze ausgeschrieben werden, z.B.: <?php echo getValue('name'); ?>
Lesezeichen