PHP Form Generator

4 Cevap php

Nasıl PHP kullanarak bir formun bölümlerini üretecek?

I would like to make a form that allowed the user to enter a date through drop-down menus of month, day, and year respectively without typing every single option of the menu, how would I automatically do so with PHP?

Örneğin, nasıl ben elle saf HTML kullanarak onları girmeden yani itibaren Şubat için, 1-28 Ocak days 1-31 oluşturmak, ve ki?

4 Cevap

Burada PHP bunu nasıl basitleştirilmiş versiyonu

<select name="birthday_month" id="birthday_month">
    <option value=""></option>
    <? foreach(range(1,12) as $month): ?>
    <option value="<?= $month ?>"><?= date('F', mktime(1,1,1,$month,1,2000)) ?></option>
    <? endforeach; ?>
</select>

<select name="birthday_day" id="birthday_day">
    <option value=""></option>
    <? foreach(range(1,31) as $day): ?>
    <option value="<?= $day ?>"><?= $day ?></option>
    <? endforeach; ?>
</select>

<select name="birthday_year" id="birthday_year">
    <option value=""></option>
    <? foreach(range(date('Y'),1900) as $year): ?>
    <option value="<?= $year ?>"><?= $year ?></option>
    <? endforeach; ?>
</select>

O çıktı bunları işlevlerini oluşturabilirsiniz onları çok kullanıyor olacak eğer.

Düzenle: tarih hala sunucu tarafında kontrol edilmelidir çünkü gün autopopulate için zaman yapmayız.

I HTML5, bir tarihi seçim bileşeni var düşünüyorum, ama belki o kullanmak için çok erken.

Galen doğru yolda olduğunu, ancak tarayıcıda diğer bir ay değiştirmek gibi, doğru tarih ayarlarını (yani almazsınız: Eğer geri demiyorlar eğer 31 Şubat ile bitireceğiz server)

Ben inanıyorum Itay Moav adlı Javascript öneri gitmek için yoludur: tarayıcı sonunda DOM değiştirmek için javascript kullanın. Kullanıcı ay seçici için bir onChange olayı tetikleyen, Şubat seçtiğinde, size tarih seçicisini yeniden ve 28-29 gün oluşturmak, yılın bağlı olacaktı (!)

I something along these lines kere, çok fazla zorluk (Japonca sitesi, but kaynak kodu kötü yazılmış) olmadan sayfa / komut ayrı çekmek gerekir etmedi.

İki Yanıtlar:

1: Bir JavaScript Takvim sınıf bulun.

2: PHP:

$year = 2009;  // February has different days in month - based on leap year
 for ($month = 1; $month <= 12; $month++)
   $lastDayOfMonth[$month] = date("j", strtotime("yesterday", strtotime($month+1."/1/$year")));

Şimdi ayın gün sayısına ayarlanmış değerlerle ay bir dizi (harita), ay endeksi, var;

Sonra dün (sonraki ayın 1. günü önceki gün) bulabilirsiniz - - O gün geri gelecek ayın ilk gününü bulun: Zaman kodu temelde bu diyor. Yani ayın son günü o ayın içindeki gün sayısı.

-CF

Eğer betik yürütülmekte olan aydaki gün sayısını görüntülemek istiyorsanız Ayrıca, bunu yapabilirsiniz:

print date("t", mktime(0,0,0, date("n") ));

Bu irade çıktı 30, 31, ya da 28 ya (Şubat varsa)