Rolf B: Optionen in Formularfeld

Beitrag lesen

Hallo Christin,

Das Problem liegt gegebenenfalls daran, dass ich den PHP-Code in einen einzigen <option>-Tag gesetzt habe. Was könnte ich stattdessen verwenden?

Ich lese das mal so: Du hast deine PHP Seite so geschrieben, dass dein PHP Code alle Auswahlmöglichkeiten in ein einziges option-Element setzt.

Der Unterschied Element und Tag ist: Ein Element wird von einem öffnenden Tag und einem schließenden Tag gebildet. Dazwischen steht der Elementinhalt. Es gibt Ausnahmen, einige Elemente haben kein schließendes Tag. <option> gehört nicht dazu.

Für eine Auswahlliste muss jeder Auswahlwert in einem eigenen <option>-Element stehen.

Typischerweise baut man das so auf:

   <label for="werteliste">Auswahl: </label>
   <select id="werteliste" name="werteliste">
<?php
   foreach($auswahlliste as $id=>$auswahl):
?>
     <option value="<?= htmlspecialchars($id) ?>"><?= htmlspecialchars($auswahl) ?></option>
<?php
   endforeach;
?>
   </select>

(Edit: htmlspecialchars hinzugefügt)

Du kannst auf das value-Attribut verzichten, dann bekommst Du vom select-Element den Optionstext zurück. Das ist nicht unbedingt die schlaue Lösung; die Optionstexte könnten unhandlich sein bzw. sie sind eventuell lokalisiert. Eine ID, die man ins value-Attrbut setzt, macht Dich bei der Abfrage der Auswahl vom konkreten Text unabhängig. Ob das für dich praktikabel ist, hängt von deinen Daten ab.

Ob Du die Schleife nun über ein Array mit keys und values laufen lassen musst, weiß ich natürlich nicht. Eventuell kommen deine Options aus einer Datenbankabfrage, oder aus einer anders gearteten Datenstruktur, dann muss die Schleife anders aussehen.

Zu empfehlen ist auf jeden Fall die "alternative Syntax" für foreach - keine geschweiften Klammern, sondern Doppelpunkt und endforeach. Die geschweiften Klammern gehen im Getöse von ?> und <?php nämlich gerne optisch unter.

Rolf

--
sumpsi - posui - obstruxi