Kenney
Mitglied
Stunden sind wieder vergangen und ich habe es jetzt kaputt gemacht.Nachdem ich da weiter drüber reflektiert habe, scheint mir jetzt klar zu sein, wo das Ganze hin gehen soll:
Die vorgegebenen Parameter der Funktion geben einfach die Attribute und Optionen des zu generierenden Select an:
Dann müsste man das select-Tag in die Funktion hinein nehmen:Code:function dynAuswahl( $id, // Die ID des Select $name, // Der Name des Select $options, // Die Optionen des Select $multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ) {
(ungetestet)Code:function dynAuswahl( $id, // Die ID des Select $name, // Der Name des Select $options, // Die Optionen des Select (array) $multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean) ) { if ($multiple) { $multAttribute = " multiple"; $nameAttribute = $name . '[]'; } else { $multAttribute = ''; $nameAttribute = $name; } $html = '<select id="' . $id . '" name="' . $nameAttribute . '"' . $multAttribute . '>'; foreach ($options as $opt) { // An dieser Stelle kannst Du zusätzlich prüfen, ob die Option // ausgewählt ist und entspr. das Attr. "selected" setzen $html .= '<option value="' . $opt . '">' . $opt . '</option>'; } $html .= '</select>'; return $html; }
Das könntest Du noch verfeinern indem Du das Array mit den Optionen zweidimensional anlegst um value und Text getrennt zu definieren.
Code:
?php
function dynAuswahl(
$id, // Die ID des Select
$name, // Der Name des Select
$options, // Die Optionen des Select (array)
$multiple // Gibt an, ob mehrere Optionen auswählbar sind (boolean)
) {
if ($multiple) //Abfrage ob $multiple true ist
{
$multAttribute = " multiple";//belegt die Variable mit multiple, wenn vorhanden, true
$nameAttribute = $name . '[]';//belegt die Variable mit der Variable $name(legst du es in eine Array?)
} else {
$multAttribute = '';//alternativ wird die Variable mit Null gefüllt, false
$nameAttribute = $name;//alternativ wird die Variable mit der Variable $name gefüllt
}
$html = '<select id="' . $id . '" name="' . $nameAttribute . '"' . $multAttribute . '>';
foreach ($options as $opt) {
// An dieser Stelle kannst Du zusätzlich prüfen, ob die Option
// ausgewählt ist und entspr. das Attr. "selected" setzen
if([$options] == $opt){
$html .= " selected";
}
$html .= '<option value="' . $opt . '">' . $opt . '</option>';
}
$html .= '</select>';
return $html;
}
?>
<?php
//zweidimensionale Array angelegt
$options = array($auswahl1 = array("Brot", "Butter", "Milche", "Eier", "Käse", "Wurst"),
$auswahl2 = array("Schrauben", "Nägel", "Haken", "Nadeln", "Dübel"));
?>
Ich würde sagen, dass ich den Wald voller Bäume nicht sehen.
Die logische Reihenfolge kann ich nicht erkennen, von den anderen Dingen erstmal nicht zu reden.