php-germ

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

abgelegt im Archiv Tutorials am 17.04.07

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.

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

Tags: DropDownBox  Options  Funktion  Runtime  SelectBox  DatumsOptionen 

Stimmen Sie ab für Funktion buildSelectOptions::kleines Helferlein zum Erstellen von DropDown-Optionen zur Laufzeit:

  • Currently 4.00/10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Dieser Eintrag wurde mit: 4.00 Punkten (von 3 Stimme(n) insg.) bewertet.
 
Share It
RSS rss
Google google
Yahoo! yahoo
Bloglines Bloglines
TwitterFollowen Sie uns bei Twitter!
Most Popular   Angesurft   Best of   CEBIT 2007   CMS-Systeme   CSS   Dies und Das und Sowieso   Events   Hardware   IT-Aktuell   JavaScript   Kurios & Interessant   Kurz vorgestellt   Linux   Misc   News   PHP-Classes-News   PHP-News   PHP-PEAR-News   Provider & Webhosting   Schon gewusst