SELFPHP

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


Fragen zu Formularelementen


In diesem Abschnitt wollen wir einige der Formularelemente genauer betrachten.


Verarbeitung von Checkboxen/Kontrollkästchen

Wenn die Checkboxen nicht markiert sind, werden sie überhaupt nicht übermittelt. Andernfalls haben sie den im Attribut value angegebenen Wert. Man kann die Elemente auf die folgenden beiden Arten erzeugen:

# Fall 1: Verschiedene Namen, gleicher Wert
<input type="checkbox" name="cb[1]" value="yes" />
<input type="checkbox" name="cb[2]" value="yes" />

# Fall 2: "Gleiche" Namen, verschiedene Werte
<input type="checkbox" name="cb[]" value="1" />
<input type="checkbox" name="cb[]" value="2" />

Die Abfrage erfolgt in beiden Fällen mit:

if (isset($_REQUEST['cb'])) {
  reset($_REQUEST['cb']);
  foreach ($_REQUEST['cb'] as $key=>$element) {
    echo "$key: $element<br>";
  }
} else {
  echo "Keine Checkboxen<br>";
}

Im Fall 1 wertet man die Variable $key aus, im Fall 2 die Variable $element. Entscheidend ist auch hier, dass der Variablenname bei mehr als einer Checkbox mit [] endet, damit in PHP ein Array zur Verfügung steht.


Verarbeitung von Radiobuttons/Optionsschaltern

Radiobuttons verhalten sich analog zu Checkboxen, mit der Ausnahme, dass hier eine Mehrfachauswahl nicht möglich ist. Beim Erstellen des HTML-Codes sollte darauf geachtet werden, dass zusammengehörige Buttons den gleichen Namen haben müssen.

<?php
  $farben = array(
    array('name' => 'grün', 'value' => 'g'),
    array('name' => 'blau', 'value' => 'b'),
    array('name' => 'rot', 'value' => 'r')
);
foreach ($farben as $element) {
  echo
    printf('<input type="radio" name="farbe" value="%s" %s/> %s<br />',
      $element['value'],
      (isset($_REQUEST['farbe']) and $_REQUEST['farbe'] == $element['value']) ? 'checked="checked" ' : '',
      $element['name']
    );
}
?>


Verarbeitung von Submit

Um die Aktivierung einer Submit-Schaltfläche zu überprüfen, muss diese über einen Namen verfügen.

<input type="submit" name="submit" value="Senden">

Anschließend ist bei einem Mausklick oder einem Tastendruck auf die Submit-Schaltfläche eine Variable mit dem Namen der Schaltfläche vorhanden:

if (isset($_REQUEST['submit'])) { ... }

Soll es um die Verarbeitung von mehr als einer Submit-Schalfläche gehen, stehen Ihnen mehrere Optionen zur Verfügung:
{PSP}Verarbeitung von Reset

Zunächst sollte man überlegen, ob man überhaupt einen Reset-Schalter benötigt. Bei einer HTML-Reset-Schaltfläche setzt der Browser alle Eingabefelder auf den Anfangszustand zurück; da damit kein Request an den Server verbunden ist, kriegt PHP davon nichts mit. Möchte man einen Button realisieren, der Eingabeelemente mit vordefinierten Inhalten wirklich löscht, muss man eine Submit-Schaltfläche verwenden:

<?php
  if (isset($_REQUEST['loeschen'])) {
    unset($_REQUEST['eingabe']);
  }
?>

<form method="post" action="<?php echo $PHP_SELF ?>" >
<input type="text" name="eingabe" value="<?php @print $_REQUEST['eingabe']; ?>">
<input type="submit" name="submit" value="Absenden">
<input type="reset" value="Reset">
<input type="submit" name="loeschen" value="Löschen">
</form>