PHP Tarih açılan liste

2 Cevap

Aşağıda orada doğum tarihi seçmek için kullanıcılar için bir açılan liste için var olan eski bir PHP işlevi olduğunu, bu bunun sadece bir gün tarih kısmıdır, bunu kullandığını görebilirsiniz str_pad numaraları bir 0'a eklemek için 1-9, bunu yapmanın daha iyi bir yolu var mı?

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

An alternative to str_pad is to use sprintf.
The code:

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

olur:

sprintf("%02d", $i)

It will print $i as an integer that is 2 characters wide and padded with zeros.
See the sprintf documentation.

Bir seçme inşa etmek için bir dizi kabul genel bir işlev yapabilir.

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

Muhtemelen çıktı ve üzgün birlikte o attı birkaç diğer şeyler, kaçmak gerekir.

Sonra seçenekleri dizinizi oluşturmak ve o içeri geçebilir seçenekler listesini oluşturmak ve sonra sadece aramak için çok güzel görünüyor:

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