Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]walidacja daty
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam zrobiony prosty formularz do wybierania dat.
  1. <?php
  2. echo "<select name=\"rok\">
  3. <option value=>--rok--</option>";
  4. $rok=date('Y');
  5. $rok_kon=date('Y')+5;
  6. while ($rok <=$rok_kon)
  7. {
  8. echo '<option value="'.$rok.'">'.$rok.'</option>';
  9. $rok ++;
  10. }
  11. echo "</select>";
  12. echo "<select name=\"miesiac\">
  13. <option value=>--miesiac--</option>";
  14. $miesiac=array("1"=>"styczeń",
  15. "2"=>"luty",
  16. "3"=>"marzec",
  17. "4"=>"kwiecień",
  18. "5"=>"maj",
  19. "6"=>"czerwiec",
  20. "7"=>"lipiec",
  21. "8"=>"sierpień",
  22. "9"=>"wrzesień",
  23. "10"=>"październik",
  24. "11"=>"listopad",
  25. "12"=>"grudzień");
  26. //pokazuje że 01 to klucz a $war to nazwa piesiąca. W ten sposób sortuje misiące na podstawie klucza.
  27. foreach($miesiac as $klucz => $war)
  28. {
  29. echo '<option value="'.$klucz.'">'.$war.'</option>';
  30. }
  31. echo "</select>";
  32. echo "<select name=\"dzien\">
  33. <option value=>--dzien--</option>";
  34. for ($dzien=1;$dzien<=31;$dzien++)
  35. {
  36. echo '<option value="'.$dzien.'">'.$dzien.'</option>';
  37. }
  38. echo "</select>";
  39. ?>

Czy da się jakoś ograniczyć liczbę dni po wyborze miesięcy, tzn po zaznaczeniu luty żeby nie było w selecie powyżej 29. Oczywiście idealnym rozwiązaniem byłoby także uzależnienie tego od konkretnego roku.
Z góry dziękuję za odpowiedź
askone
Jeśli szukasz czegoś dobrego to może zainteresuj się tym Sam korzystam i polecam innym winksmiley.jpg

Pozdrawiam
gac3k
date

Tak więc:

  1. for ($dzien=1;$dzien<=date('t');$dzien++){
  2. echo '<option value="'.$dzien.'">'.$dzien.'</option>';
  3. }


Manual to podstawa, a obsługa daty i czasu to podstawa podstawy smile.gif
jacusek
@gac3k
No ja sobie zdaję sprawę że tak można było zrobić. Ale nie zmienia to faktu, że pole dzień jest niezależne od pola miesiąc i tym przypadku zastosowanie date nie ma sensu.
tehaha
najprościej będzie po wysłaniu formularza sprawdzić czy taka data istnieje funkcją http://php.net/manual/pl/function.checkdate.php, mógłbyś się też pobawić żeby liczba dni do wyboru zmieniała się w zależności od wybranego miesiąca, ale wydaje mi się, że nie warto
jacusek
No właśnie idealna byłaby taka sytuacja gdzie od wybranego miesiąca zależałaby możliwość liczby wybranych dni - ale nie bardzo mi się podoba robić to na podstawie Ajaxa. Ewentualnie to co proponował askone, ale niestety na to jestem jeszcze za słaby - czy wybór daty z kalendarza.
tehaha
nie potrzebujesz ajax, może być samo js, wystarczy, że dla pola <select> z miesiącem ustawisz w onchange="" funkcję, która zmieni ilość opcji w dniach
Pilsener
Cytat
prosty formularz
- dziwne, bo to jeden z najbardziej skomplikowanych jakie widziałem, jak już generujesz te miesiące to rób to w pętli a nie wpisujesz wszystko ręcznie. I moim zdaniem nie warto się bawić w oddzielne selecty tylko robisz jeden input gdzie user może wpisać datę typu 23/2/2010 lub 23-02-2010 itp. itd. etc. Do tego prosty kalendarz w JS (na każdym portalu/stronie znajdziesz taki) do wyboru daty. Po odebraniu dzielisz preg_splitem, rzutujesz na int, sprawdzasz przez checkdate i finito.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.