2009-09-02 7 views
0

Ci-dessous une ancienne fonction PHP que j'ai pour une liste déroulante pour les utilisateurs de sélectionner leur date de naissance, c'est juste la partie date de jour, vous pouvez voir qu'il utilise str_pad pour ajouter 0 aux numéros 1-9, y a-t-il une meilleure façon de faire cela?PHP Date liste déroulante

<?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; 
?> 

Répondre

2

Une alternative à str_pad est d'utiliser sprintf.
Le code:

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

devient:

sprintf("%02d", $i) 

Il imprimera $i comme un entier qui est de 2 caractères larges et rembourrées avec des zéros.
Voir la documentation sprintf.

+0

qui fonctionne très bien grâce – JasonDavis

0

Vous pouvez créer une fonction générique qui accepte un tableau afin de créer un 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; 
} 

Vous devriez probablement échapper à votre sortie et à quelques autres choses, désolé de l'avoir jeté ensemble.

Ensuite, vous pouvez construire votre gamme d'options et passer que beaucoup plus agréable de Looks construire votre liste d'options, puis appelez simplement:.

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