Funktion buildSelectOptions::kleines Helferlein zum Erstellen von DropDown-Optionen zur Laufzeit
abgelegt im Archiv Tutorials am 17.04.07

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ählen",
2 => "Bitte Monat wählen",
3 => "Bitte Jahr wählen");
$textArr = array(
1 => "Januar",
2 => "Februar",
3 => "März",
4 => "April",
5 => "Mai",
6 => "Juni",
7 => "Juli",
8 => "August",
9 => "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(1, 31, $sel_tag, $firstArr[1]);
?>
</select>
<!-- Select - Monat -->
<select name="monat" size="1" width="30">
<?php
echo buildSelectOptions(1, 12, $sel_monat, $firstArr[2], $textArr);
?>
</select>
<!-- Select - Jahr -->
<select name="jahr" size="1" width="30">
<?php
echo buildSelectOptions(1900, date("Y"), $sel_jahr, $firstArr[3], false, 1);
?>
</select>
<input type="submit" value="speichern" name="Speichern">
</form>
Ich hoffe, diese kleine Funktion ist dem ein oder anderen etwas nützlich.
Tags: DropDownBox Options Funktion Runtime SelectBox DatumsOptionen
Stimmen Sie ab für Funktion buildSelectOptions::kleines Helferlein zum Erstellen von DropDown-Optionen zur Laufzeit:
|
Dieser Eintrag wurde mit: 4.00 Punkten (von 3 Stimme(n) insg.) bewertet.
|
| RSS | |
|
| |
| Yahoo! |
|
| Bloglines |
|
| Followen Sie uns bei Twitter! |

Diese kleinen Funktionen möchte ...