Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie za pomocą funckji IF
Forum PHP.pl > Forum > Przedszkole
Gizmon
Chciałbym sprawdzić datę urodzenia użytkownika i robię to następująco:

  1. <?php
  2. if($dataur<1900 || $dataur>date('%Y') || is_string($dataur) || is_array($dataur) || is_float($dataur) || is_object($dataur) )
  3. print "<center>Błędny rok urodzenia!</center><br><center><a href="xxx.php">Powrót</a></center>n";
  4. ?>

Gdzie robie błąd?
Misior
Nic z tego nie wiem... o co tu chodzi??
no_face
Troche zamieszales.

Zrob to lepiej w ten sposob. Przy formularzu podaj dozwolony format daty np. RRRR-MM-DD i przy pomocy np wyrazen regularnych
Kod
if ( eregi("[0-9]{4}\-[0-9]{2}\-[0-9]{2}", $data_do_sprawdzenia) )
{
     echo 'Data okej';
}
Gizmon
Rozwiązałem to trochę inaczej:

  1. <?php
  2. $dataak=date('Y');
  3.  $datatest=57;
  4.  if(datataur>1900 || datatest<3000)
  5.  $datatest=1;
  6.  else
  7.  $datatest=0;
  8. ?>

  1. <?php
  2. if($datatest==|| $dataur>$dataak || $dataur<1900)
  3.  print "<center>Błędny rok urodzenia!</center><br><center><a href="new_user.php">Powrót</a></center>n";
  4. ?>


W każdym razie działa, na stringi wywala błąd, na daty poniżej 1900 i powyżej aktualnego roku także wywala blad. A przy normalnej dacie jest dobrze smile.gif Ale w każdym razie dziękuje za odpowiedź.
Gizmon
Oczywiście poprawka
  1. <?php
  2. $dataak=date('Y');
  3.  $datatest=57;
  4.  if(datataur>1900 || $dataur<3000)
  5.  $datatest=1;
  6.  else
  7.  $datatest=0;
  8. ?>
piotrekkr
a nie lepiej zrobic prosty formularz co by sobie uzytkownik wybieral z list rozwijalnych dzien miesiac i rok wtedy raczej sie nie pomyli smile.gif
Gizmon
Niby można,ale się uparłem i chciałem koniecznie zrobić z wpisywaniem ręcznym daty smile.gif Taki mały trening smile.gif
phpion
Troche dupiaty pomysl, ale skoro sie juz uparles, to mozna to skrocic:
  1. <? $datatest = (datataur>1900 || $dataur<3000) ? 0 : 1; ?>

Poza tym: obecnie mamy rok 2006 winksmiley.jpg
Gizmon
Wiem, ale skryptu aktualizować nie będę a data 3000 to taka uniwersalna. A to i tak wyjdzie przy kolejnym IF bo nastawiłem na sprawdzanie aktualnej daty smile.gif
Fipaj
uniwersalna data to 1970 - 2069. ta wiedza przyda ci się w dalszym operowaniu tą datą smile.gif

  1. <?php
  2. if($dataur<1900 || $dataur>date('%Y') || is_string($dataur) || is_array($dataur) || is_float($dataur) || is_object($dataur) )
  3. ?>


starczy samo

  1. <?php
  2. if ($dataur < 1900)
  3. ?>


bo jeśli $dataur nie jest liczbą, to od razu php zwróci błąd (bo przecież obiekt nie jest mniejszy od 1900...). ale jeśli już chcesz mieć powiedzmy pełną kontrolę bądź wszystko czarno na białym (jasno napisane), to starczy:

  1. <?php
  2. if (!is_int ($dataur)) die ('error!');
  3. ?>
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.