Rudolf Harras schrieb am Freitag, 5. Februar 2021 um 11:24:51 UTC:
> Ich habe da ein Skript übernommen wo bei einer Drop-Down-Box Werte
> ausgewählt werden, die dann nach dem Absenden eines Formulares in die
> mySQL-Datenbank eingetragen werden.
[...]
> Wenn ich nun 10 andere Möglichkeiten hinzufüge, gibt es da eine
> elegantere Lösung als jedesmal eine ganze Zeile anzuhängen?
Funktionen, Schleifen, Arrays, etc. Programmieren halt :-) - Sag Bescheid, was Du von dem Folgenden nicht verstehst und ich kann dir sagen, wo man nachlesen kann wie es funktioniert.
Grüße, Matthias
<select name="auswahl" id="auswhl">
<?php gimmeGimmeGimmeTheAuswahlAfterMidnight(4); ?>
</select>
<?php
/**
* Gibt die Optionen für Rudolfs select aus. Erstellt dazu eine Liste von Optionen, welche alle "Option_NUMMER" heißen,
* und genau den gleichen Wert haben, wie sie auch heißen. Dann lässt diese Funktion die Funktion getSelectOptions()
* die Hauptarbeit machen. Was von dort an HTML-Code zurück kommt, wird dann hier direkt ausgegeben.
*
* @param int $wieviel Anzahl der Optionen, die man ausgegeben haben möchte
*/
function gimmeGimmeGimmeTheAuswahlAfterMidnight($wieviel){
$auswahl = array();
for($nummer=1 ; $nummer <= $wieviel ; $nummer=$nummer+1){
$auswahl["Auswahl_".$nummer] = "Auswahl_".$nummer;
}
$html = getSelectOptions($auswahl, "auswahl");
echo $html;
}
/**
* Gibt den HTML-Code für die Options eines <select>s zurück
*
* Beispiel: getSelectOptions( ['m'=>'Herr','w'=>'Frau'] , 'anrede' );
*
* @param array $options Optionen - der Array-Schlüssel ist der übergebene Wert, der Array-Wert der
* @param string $name Name des <select>
*
* @return string HTML-Code - alle Options, aber kein <select>
*/
function getSelectOptions($options, $name){
$html = '';
foreach($options as $optionKey => $optionName){
$html.= '<option value="'.$optionKey.'"';
if(isset($_SESSION[$name]) AND $_SESSION[$name] == $optionKey){
$html.= ' selected';
}
$html.= '>'.$optionName.'</option>';
$html.= "\n";
}
return $html;
}