| |
| * Link führt ins Internet |
|
| |
Die Formularelemente samt der Angabe der Werte wurden in den bisherigen Beispielen stetst fest in die Formulare eingebunden. Es wäre sicher jedoch wesentlich praktischer, wenn man dies automatisieren könnte und bestimmte Formularelemente dynamisch erzeugen könnte.
Es wäre sicherlich einen Versuch wert, die Auswahlliste dynamisch mit Hilfe einer Schleife zu erzeugen:
<html>
<head>
<title>Dynamische Mehrfach-Auswahl</title>
</head>
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<p>
<?php
$themen = array("Autos","Filme","Essen","Sport");
?>
<select name="thema[]" size="4" multiple>
<?php
foreach ($themen as $element) {
echo "<option value=$element>$element</option>";
}
?>
</select>
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
<?php
if ($thema) {
echo "Es sind folgende Themen enthalten:<br>";
foreach($thema as $element) {
echo "$element<br>";
}
}
?>
</body>
</html>
|
Dynamisches Formular samt Ausgabe
Sollten Sie assoziative Arrays verwenden, können Sie die Indizes als Werte für die <option>-Tags einsetzen und den zugewiesenen Wert für die Anzeige verwenden.
Beispiel
<html>
<head>
<title>Dynamische Mehrfach-Auswahl</title>
</head>
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<p>
<?php
$themen = array(
"AU"=>"Autos",
"FI"=>"Filme",
"ES"=>"Essen",
"SP"=>"Sport",
"CO"=>"Computer"
);
?>
<select name="thema[]" size="<?php echo count($themen)?>" multiple>
<?php
foreach ($themen as $key=>$element) {
echo "<option value=$key>$element</option>";
}
?>
</select>
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
<?php
if ($thema) {
echo "Es sind folgende Themen enthalten:<br>";
foreach($thema as $element) {
echo "$element<br>";
}
}
?>
</body>
</html>
|
Die Auswahlliste wurde übrigens zusätzlich in der Länge (size) auf die Anzahl der Elemente angepasst.
Zur besseren Übersicht lassen sich solche dynamischen Bestandteile eines Formulars auch in externe Skripte auslagern.
Beispiel - function.inc.php
<?php
// Auswahlisten Funktion für Hobbies
function setze_hobbies() {
$themen = array(
"AU"=>"Autos",
"FI"=>"Filme",
"ES"=>"Essen",
"SP"=>"Sport",
"CO"=>"Computer"
);
foreach ($themen as $key=>$element) {
echo "<option value=$key>$element</option>";
}
}
// Ausgabe der ausgewählten Werte mit Hilfe des globalen
// Arrays $_POST
function form_ausgabe() {
if ($_POST['thema']) {
echo "Es sind folgende Themen enthalten:<br>";
foreach($_POST['thema'] as $element) {
echo "$element<br>";
}
}
}
?>
|
Die eigentliche Formular-Datei, nennen wir sie dynform.php, stellt sich nun wesentlich übersichtlicher dar:
<?php include("./function.inc.php"); ?>
<html>
<head>
<title>Dynamische Mehrfach-Auswahl</title>
</head>
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<p>
<select name="thema[]" size="<?php echo count($themen)?>" multiple>
<?php setze_hobbies(); ?>
</select>
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
<?php echo form_ausgabe(); ?>
</body>
</html>
|
Sie sollten vor allem auf die korrekte Schreibweise der erste Codezeile der dynform.php Datei achten.
| Hinweis: Wesentlich interessanter wird die Erzeugung von dynamischen Formularen in Verbindung mit Datenbanken. Hierzu erfahren Sie mehr in dem Kapitel "PHP & MySQL Anwendungen". |
|
|
|
|
|
|
|