Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kod do sprawdzania daty.
Forum PHP.pl > Forum > Przedszkole
dobryvinyl.com
Witam,

mam nastepujacy problem.

  1. <?php
  2. if (empty($data_urodzenia))
  3. {
  4. errormsg("Wypełnij pole data!");
  5. $error=tak;
  6.  
  7. }elseif(!checkdate(substr($data_urodzenia, 5, 2), substr($data_urodzenia, 8, 2), substr($data_urodzenia, 0, 4)) AND strlen($data_urodzenia) != 10){
  8. errormsg("Data nie jest poprawna! Prawidłowy format to: YYYY-MM-DD");
  9. $error=tak;
  10. }else{
  11. }
  12. ?>


Przy wprowadzeniu daty np: 2004-11-05 wszystko jest ok. Wystarczy jednak ze uzytkownik wpisze 204-11-05 a juz wyskoczy taki błąd:

Kod
Warning: checkdate() expects parameter 3 to be long, string given



jak uniknac takiego bledy?

Dzikuje z gory za odpowiedzi.
Levabul
  1. <?php
  2.  
  3. $data = explode ('-', $data_urodzenia);
  4. if (empty($data_urodzenia))
  5. {
  6. errormsg("Wypełnij pole data!");
  7. $error=tak;
  8.  
  9. }elseif(!checkdate($data[1], $data[2], $data[0]) AND strlen($data_urodzenia) != 10){
  10. errormsg("Data nie jest poprawna! Prawidłowy format to: YYYY-MM-DD");
  11. $error=tak;
  12. }else{
  13. }
  14.  
  15. ?>


Pisane na sucho więc sprawdź czy działa
dobryvinyl.com
teraz jak wprowadze np. 12-45-56 to mam:


Kod
Warning: checkdate() expects parameter 2 to be long, string given




czy w takim momecie najlepiej sprawdzic dlugosc kazdego elementu ($data[1], $data[2], $data[0])?
misiek_km
Ja sobie to załatwiłem wyrażeniem regularnym

  1. <?php
  2.  
  3. // dd-mm-rrrr
  4. function check_date($date)
  5. {
  6. return preg_match('#^(0[1-9]|[1-2]{1}[0-9]{1}|3[0-1]{1})-(0[1-9]{1}|1[0-2]{1})-(19[d]{2}|20[0-9][0-9])$#', $date) ? true : false;
  7. }
  8.  
  9. ?>
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.