SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=187&group=32
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Dynamische Formulare


Die Formularelemente samt der Angabe der Werte wurden in den bisherigen Beispielen stets fest in die Formulare eingebunden. Es wäre sicher jedoch wesentlich praktischer, wenn man dies automatisieren und bestimmte Formularelemente dynamisch erzeugen könnte.

Es wäre sicherlich einen Versuch wert, die Auswahlliste dynamisch mithilfe 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 ($_POST['thema']) {
    echo "Es sind folgende Themen enthalten:<br>";
    foreach($_POST['thema'] as $element) {
      echo "$element<br>";
    }
  }
?>
</body>
</html>




Bild 4.2: 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 ($_POST['thema']) {
    echo "Es sind folgende Themen enthalten:<br>";
    foreach($_POST['thema'] as $element) {
      echo "$element<br>";
    }
  }
?>
</body>
</html>
{PSP}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 Skripts 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 mithilfe 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 Formulardatei, 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 ersten Codezeile der dynform.php-Datei achten.