2009-04-20 2 views
0

Muss zu diesem gepolstert werden: str_pad ($ Monat, 2, "0", STR_PAD_LEFT) aber wie/wo ???Wie str_pad dieses PHP Datum Auswahl Monat Array?

/*******creates the month selection dropdown array****/ 

function createMonths($id='month_select', $selected=null) 
    { 
     /*** array of months ***/ 
     $months = array(
       1=>'Jan', 
       2=>'Feb', 
       3=>'Mar', 
       4=>'Apr', 
       5=>'May', 
       6=>'Jun', 
       7=>'Jul', 
       8=>'Aug', 
       9=>'Sep', 
       10=>'Oct', 
       11=>'Nov', 
       12=>'Dec'); 

     /*** current month ***/ 
     $selected = is_null($selected) ? date('m') : $selected; 

     $select = '<select name="'.$id.'" id="'.$id.'">'."\n"; 
     foreach($months as $key=>$mon) 
     { 
      $select .= "<option value=\"$key\""; 
      $select .= ($key==$selected) ? ' selected="selected"' : ''; 
      $select .= ">$mon</option>\n"; 


     } 
     $select .= '</select>'; 
     return $select; 
    } 

/********displays the month selection with current month selected/*******</br> 
echo createMonths('Month', date ('m')); 

/******DISPLAYS MONTH AS (4) INSTEAD OF REQUIRED (O4) --- @:(/*****</br> 
echo $_POST['Month']; 

Antwort

0

Nun, vorausgesetzt, es ist der Wert, den Sie aufgefüllt werden soll, ist es hier:

$select .= "<option value=\"$key\""; 

wird

$select .= '<option value="'.str_pad($key, 2, "0", STR_PAD_LEFT).'"'; 

Dies setzt voraus, dass Sie es nicht wollen gepolstert, wenn Sie‘ Wenn Sie die Prüfung gegen $selected tun, wenn Sie dies tun, müssen Sie es am Anfang der Schleife zu tun, den Wert in $key überschreiben, und dann können Sie Ihren ursprünglichen Code verwenden, wie folgt:

foreach($months as $key=>$mon) 
{ 
    $key = str_pad($key, 2, "0", STR_PAD_LEFT); 
    $select .= "<option value=\"$key\""; 
    $select .= ($key==$selected) ? ' selected="selected"' : ''; 
    $select .= ">$mon</option>\n"; 
} 
+0

Tschad ... Ich liebe dich, D Ich habe es vorher versucht, aber ich verlor immer wieder den Überblick über die Zitate und endete damit, meine Swearbox zu füllen ... vielen Dank. – Brainache

1

Sie können printf() oder sprintf() mit einem Formatstring verwenden:

$m = sprintf('%02d', (int) $_POST['Month']); 
0

, wenn Sie sagen:

$select .= ">$mon</option>\n"; 

Sie die str_pad Funktion verwendet werden soll, wie folgt aus:

$select .= ">" . str_pad($mon, 2, "0", STR_PAD_LEFT) . "</option>\n"; 
+0

Das würde versuchen, die Monatsnamen mit Nullen aufzufüllen, aber würde nie etwas tun, weil keiner von ihnen kürzer als 2 Zeichen ist. –