Membuat Dropdown Rentang Tahun Secara Otomatis di Yii

Pada form inputan di aplikasi web, biasanya kita harus membuat form inputan berbentuk dropdown yang isinya merupakan rentang tahun tertentu. Form seperti itu misalnya digunakan untuk menginput tahun lahir, atau tahun selesainya pendidikan.

Salah satu contoh kasusnya, kita harus membuat dropdown field yang berisi tahun dari 20 tahun yang lalu sampai tahun sekarang, 2014. Tidak mungkin kan kita buat secara manual. Selain karena harus mengubah kode setiap tahunnya, kemungkinan salah ketik kode juga tetap ada. Oleh karena itu kita harus membuat dropdown rentang tahun secara otomatis.

Membuat Dropdown Rentang Tahun Secara Otomatis di Yii

Nah, pada kasus ini saya sedang membuat aplikasi di framework Yii, jadi ya contohnya ada di Yii. Bagi teman-teman yang mungkin tidak membuat di Yii, tetap bisa kok mengadopsi kode nya.

Berikut ini adalah kode untuk membuat array tahun yang berisi tahun 20 tahun yang lalu sampai tahun sekarang. Array ini lah yang akan dimunculkan di dropdown yang akan di buat.

<?php
    $tahunSekarang = date("Y");
    $tahunAwal = $tahunSekarang - 20;
    $tahunAkhir = $tahunSekarang;
    $arrayTahun = array();

    foreach (range($tahunAwal, $tahunAkhir) as $n) {
        $arrayTahun[$n] = $n;
    }

    $arrayTahun = array_reverse($arrayTahun, true);
?>

Dan ini adalah kode  untuk menampilkan array tersebut pada dropdown di Yii form:

<tr>
    <td><?php echo $form->labelEx($model, 'tahun'); ?></td>
    <td><?php echo $form->dropDownList($model, 'tahun', $arrayTahun); ?></td>
    <td><?php echo $form->error($model, 'tahun'); ?></td>
</tr>

Setelah itu dapat Anda lihat, jika berhasil maka kurang lebih hasilnya seperti ini:

membuat dropdown rentang tahun secara otomatis di yii

Pada kode script di atas, kita juga bisa mengeset rentang tahun yang dimunculkan, misalnya 20 tahun sebelum dan 20 tahun sesudah. Silakan di utak atik kodenya.

Sekian tutorial tentang membuat dropdown rentang tahun secara otomatis di Yii. Semoga bermanfaat.

Leave a Reply

Your email address will not be published. Required fields are marked *