Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak sprawdzić czy data ur w form jest poprawna
Forum PHP.pl > Forum > Przedszkole
Gość_tomek
mam w formularzu pole do wpisania daty urodzenia w formacie yyyy-mm-dd
jak sprawdzic,że data napisana jest poprawnie? Jakiej należy uzyć funkcji sprawdzającej?
Kuziu
mktime

Zwraca false jesli data jest niepoprawna jednak mozesz sprawdzic daty tylko z okresu podanego pod linkiem
piotrekkr
hmm ale chodzi tylko o tpo zeby byla w poprawnym formacie a nie czy to bedzie 1111-11-11 czy od jakiejs konkretnej daty?? np tylko od 1900-01-01 do terazniejszej daty. bo jesli tylko format to mozna to zrobic taka funkcja
  1. <?php
  2. eregi("^[0-9]{4}-[0-9]{2}-[0-9]{2}$",$data);
  3. ?>
Gość_tomek
Cytat(piotrekkr @ 2006-05-05 18:00:38)
hmm ale chodzi tylko o tpo zeby byla w poprawnym formacie a nie czy to bedzie 1111-11-11 czy od jakiejs konkretnej daty?? np tylko od 1900-01-01 do terazniejszej daty. bo jesli tylko format to mozna to zrobic taka funkcja
  1. <?php
  2. eregi("^[0-9]{4}-[0-9]{2}-[0-9]{2}$",$data);
  3. ?>

a można prosic o podpowiedź jak zrobic aby ktoś nie wpisał bezsensownej daty urodzenia np 1423-23-45 tylko żeby to była data zaczynająca się od 1900 roku i żeby oczywiście mogł wpisac max 12 jeśli idzie o miesiąc i max 31 jeśli idzie o dzień tygodnia?
lenczewski
  1. <?php
  2. # IS VALID DATA FORMAT, FAB & JEAN LENCZEWSKY, 2003
  3. function ivdf($ANo)
  4. {
  5.  if(ereg('^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$', $ANo) == True)
  6. {
  7. $date = explode('-', $ANo);
  8. if (checkdate($date[1], $date[2], $date[0])) {
  9. return True;
  10. } else {
  11. return False;
  12. }
  13. }
  14.  else
  15. {
  16. return False;
  17. }
  18. }
  19. ?>
piotrekkr
tak mi sie przypomnialo ze moznaby najprosciej zrobic poprostu pola wyboru daty typou select i wylistowac odpowiednia petla daty miesiace i dni tak zeby ktos nie musial wpisywac tylko wybral sobie z listy smile.gif wtedy nie powinno byc problemu biggrin.gif

a co do tego sposobu napisanego przez lenzcewski to funkcja chkdate() sprawdza date gragorianska czyli jesli ktos wpisze zupelnie bezsensowna date np 0001-01-10 to ona wykaze ze taka data istnieje co nie rozwiazuje problemu zakresu daty np od 1900-01-01 do teraz

hmm mozna by sprobowac czegos takiego jeszcze :
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>
Gość_tomek
Cytat(piotrekkr @ 2006-05-05 21:03:38)
hmm mozna by sprobowac czegos takiego jeszcze :
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>

dziękuję ...póki co ten skrypcik wystarczy smile.gif
Gość_tomek
Cytat(piotrekkr @ 2006-05-05 21:03:38)
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>

ups.... jest problem... skrypt nie dziala prawidlowo wpisuję datę np. 1982-12-12
i niestety informuje mnie , że podano zła datę

function valid_data($data)
{
if (eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data))

return true;
else
return false;

}

//---------------------------------------

if (!valid_data($data))
{
html_naglowek("");
echo "<p align=center>Podano nieprawidlowa datę urodzenia. Proszę wrócić i spróbować raz jeszcze</p>";
html_url("rejestracja_form.php", "<p align=center>Powrót do strony rejestracji</P>");
html_stopka();
exit;
}
piotrekkr
hmm no coz nie testowalem go zaraz sprawdze co jest nie tak

moze sproboj tak
  1. <?php
  2.  
  3. eregi("^((19[0-9][0-9])|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data)
  4.  
  5. ?>


testowalem na takime skrypcie:

  1. <?php
  2.  
  3. $data="2006-13-12";
  4. $ok=eregi("^((19[0-9][0-9])|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  5. if($ok) echo "spoko"; else echo "niepoprawne";
  6.  
  7. ?>

i zmienialem tylko daty na rozne poprawne i niepoprawne i u mnnie to dziala smile.gif jakby co to uruchom skrypt na poczatku z funkcja
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  3. ?>
moze wyrzuci blad jakis w wyrazeniu regularnym .
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.