2009-09-02 13 views
0

以下は、ユーザーのためのドロップダウンリストにある古いPHP関数です。これは誕生日を選択します。これは今日の日付部分です。str_pad 1から9までの数値には、これを行うためのより良い方法がありますか?PHPの日付ドロップダウンリスト

<?PHP 
$date_combo .= '<select name="' . $pre . 'day" class="' .$style. '">'; 
$date_combo .= "<option value=''>Day</option>"; 
for ($i = 1; $i <= 31; $i++) { 
    $date_combo .= " <option "; 
    if ($i == $selected_date_day) { 
     $date_combo .= " selected "; 
    } 
    $date_combo .= " value='" . str_pad($i, 2, "0", STR_PAD_LEFT) . "'>" . str_pad($i, 2, "0", STR_PAD_LEFT) . "</option>"; 
} 
$date_combo .= "</select> "; 

echo $date_combo; 
?> 

答えて

2

str_padする代わりに、sprintfを使用することです:

その後、あなたはオプションのあなたの配列を構築し、中にそれを渡すことができますが、あなたのオプションのリストを作成してからちょうど呼び出すために非常に良く見えます。
コード:

str_pad($i, 2, "0", STR_PAD_LEFT) 

になる:

sprintf("%02d", $i) 

それは2つの文字幅とゼロで埋められる整数として$iを印刷します。
sprintfのドキュメントを参照してください。

+0

これはすばらしいおかげです – JasonDavis

0

selectを作成するために配列を受け入れる汎用関数を作ることができます。

function formSelect($name, array $options, $selected) 
{ 
     $output = '<select name="' . $name . '">'; 

     foreach($options as $key => $value) 
     { 
      $output .= '<option value="' . $key . '"'; 

      if($selected == $key) { 
       $output .= ' selected="selected"'; 
      } 

      $output .= '>' . $value . '</option>'; 
     } 

     $output .= '</select>'; 

     return $output; 
} 

あなたの出力と他のいくつかのものをエスケープする必要があります。申し訳ありませんが一緒に投げました。 。

echo formSelect('birth[day]', $days, 1);