Funktion buildSelectOptions::kleines Helferlein zum Erstellen von DropDown-Optionen zur Laufzeit

Funktion buildSelectOptions::kleines Helferlein zum Erstellen von DropDown-Optionen zur Laufzeit

Nicht immer ist es Notwendig für jede Kleinigkeit gleich eine hochkomplizierte PHP-Klasse zu schreiben.

Gerade die etwas unerfahrenen __Hobby-Programmierer__ tun sich ja in der Regel mit der OOP-Programmierung doch etwas schwer.

Dazu habe ich mir im laufe der Jahre einige mehr oder weniger nützliche kleine __Helferlein__ geschrieben, die die ein oder andere Sache doch etwas erleichtern können.

Diese kleinen Funktionen möchte ich so nach und nach hier veröffentlichen.

Den Anfang mache ich einmal mit der Funktion buildSelectOptions() .

Diese Funktion kann ganz nützlich sein, wenn man ein Formular mit z.B. einigen Datums-Feldern hat.

Je nachdem welche Parameter der Funktion übergeben wurden, werden hier zur Laufzeit die Optionen einer DropDown-Box erstellt.

Die Parameter im einzelnen:

$startZahl = [integer] der Wert bei dem die for-Schleife beginnen soll zu zählen.

$endZahl = [integer] der Wert bei dem die for-Schleife sich beendet (inclusive).

$selected = [integer] der Wert bzw. Option die als _ausgewählt_ gekennzeichnet werden soll [optional].

$first = [string] hier kann z.B. eine führende Option "Bitte wählen" eingefügt werden (Value = "-1") [optional]

$text = [array] die Beschriftung der einzelnen Optionen (Standard: Value = Text) [optional]

$reverse = [bool] soll die Ausgabe umgekehrt werden? (z.B. bei einem Jahres DropDown) [optional]

Wichtig: Es ist darauf zu Achten, dass $startZahl immer kleiner als $endZahl ist, sonst passiert ……. NIX ;-)

Die Funktion im ganzen:

<?php

[01]  function buildSelectOptions(

     $startZahl=1

     $endZahl=31

     $selected=false

     $first=false

     $text=false

     $reverse=false) {

[02]     $re = array();

[03]     for($i $startZahl$i <= $endZahl$i++) {

[04]         $sel = ($i == $selected) ? 'selected="selected"' '';

[05]         if(is_array($text)) {

[06]             $ii $text[$i];

[07]         }

[08]         else {

[09]             $ii = ($i 10) ? "0".$i $i;

[10]         }

[11]         $re[] = '<option value="'.$i.'" '.$sel.'>'.$ii.'</option>';

[12]     }

[13]     $re = ($reverse) ? array_reverse($re) : $re;

[14]     if($first){

[15]         array_unshift($re'<option value="-1">'.$first.'</option>');

[16]     }

[17]     return implode("\n",$re);

[19] }

?>

Kurze Erläuterung zur Funktionsweise:

Zeile 3 – 12: Die for-Schleife von $startZahl – $endZahl

Zeile 4:

<?php

$sel = ($i == $selected) ? 'selected="selected"' '';

?>

Ist $i == dem übergebenen Wert $selected, wird die aktuelle Option als _ausgewählt_ gekennzeichnet.

Zeile 5 – 10 (if – else):

<?php

if(is_array($text)) {

    $ii $text[$i];

}

else {

    $ii = ($i 10) ? "0".$i $i;

}

?>

Zeile 5-7 (if): Wurde dem Parameter $text ein Array übergeben, bekommt $ii den Wert der an der betreffenden Stelle dieses Array's steht.

Zeile 8 – 10 (else): Wurde dem Parameter $text kein Array übergeben, wird hier geprüft ob der aktuelle Wert von $i kleiner als 10 ist.

Ist er kleiner, wird für die Ausgabe $ii eine führende 0 erzeugt (sieht irgendwie schöner aus).

Zeile 11:

<?php

$re[] = '<option value="'.$i.'" '.$sel.'>'.$ii.'</option>';

?>

Hier wird in das Array $re (Zeile 2) eine neue Option mit den soeben erzeugten Werten geschrieben.

Zeile 13:

<?php

$re = ($reverse) ? array_reverse($re) : $re;

?>

Wurde der Parameter $reverse gesetzt, drehen wir das Array mit den erzeugten Parametern einfach um.

Zeile 14 – 16:

<?php

if($first){

    array_unshift($re'<option value="-1">'.$first.'</option>');

}

?>

Wurde der Parameter $first gesetzt, fügen wir dem Options-Array an 1. Stelle eine weitere Option ein.

Zeile 17:

<?php

return implode("\n",$re);

?>

Im letzten Schritt wird das Options-Array wieder in einen String umgewandelt und zurückgegeben.

Zum Abschluss noch ein komplettes Beispiel:

<?php

$firstArr = array(

     1 => "Bitte Tag w&auml;hlen"

     => "Bitte Monat w&auml;hlen"

     => "Bitte Jahr w&auml;hlen");

$textArr = array(

     => "Januar"

     => "Februar"

     => "M&auml;rz"

     => "April"

     => "Mai"

     => "Juni"

     => "Juli"

     => "August"

     => "September"

     10 => "Oktober"

     11 => "November"

     12 => "Dezember");

function buildSelectOptions(

     $startZahl=1

     $endZahl=31

     $selected=false

     $first=false

     $text=false

     $reverse=false) {

    $re = array();

    for($i $startZahl$i <= $endZahl$i++) {

        $sel = ($i == $selected) ? 'selected="selected"' '';

        if(is_array($text)) {

            $ii $text[$i];

        }

        else {

            $ii = ($i 10) ? "0".$i $i;

        }

        $re[] = '<option value="'.$i.'" '.$sel.'>'.$ii.'</option>';

    }

    $re = ($reverse) ? array_reverse($re) : $re;

    if($first){

        array_unshift($re'<option value="-1">'.$first.'</option>');

    }

    return implode("\n",$re);

}

$sel_tag = ($_POST[tag]) ? $_POST[tag] : '';

$sel_monat = ($_POST[monat]) ? $_POST[monat] : '';

$sel_jahr = ($_POST[jahr]) ? $_POST[jahr] : '';

?>

<form action="" method="POST" >

<!– Select - Tag –>

<select name="tag" size="1" width="30">

<?php

echo buildSelectOptions(131$sel_tag$firstArr[1]);

?>

</select>

<!– Select - Monat –>

<select name="monat" size="1" width="30">

<?php

echo buildSelectOptions(112$sel_monat$firstArr[2], $textArr);

?>

</select>

<!– Select - Jahr –>

<select name="jahr" size="1" width="30">

<?php

echo buildSelectOptions(1900date("Y"), $sel_jahr$firstArr[3], false1);

?>

</select>

<input type="submit" value="speichern" name="Speichern">

</form>

Ich hoffe, diese kleine Funktion ist dem ein oder anderen etwas nützlich.








XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Blogroll

Lorem ipsum

These 3 boxes are widgets and can be edited through the admin page, just like the sidebar.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Impressum