Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z checkdate
Forum PHP.pl > Forum > Przedszkole
Silny
Witam, mam problem, otóż mam taki oto kod:

  1. if (!isset( $_POST['mm'], $_POST['dd'], $_POST['yyyy']))
  2. {
  3. if (checkdate( $_POST['mm'], $_POST['dd'], $_POST['yyyy']))
  4. {
  5. $blad--;
  6. }
  7. else
  8. {
  9. $blad++;
  10. $szablon->assign_vars(array(
  11. 'L_ERROR_BIRTHDAY' => $lang['Error_birthday'],
  12. ));
  13. }
  14. }


lecz mi w ogóle nie sprawdza daty ;(

jak było

  1. if (checkdate( $_POST['mm'], $_POST['dd'], $_POST['yyyy']))
  2. {
  3. $blad--;
  4. }
  5. else
  6. {
  7. $blad++;
  8. $szablon->assign_vars(array(
  9. 'L_ERROR_BIRTHDAY' => $lang['Error_birthday'],
  10. ));
  11. }


to chodziło, ale jak ktoś nie wypełnił daty to wywalało błąd... jak to ogarnąć questionmark.gif
skarabe.pl
Usuń wykrzyknik przy isset. A najlepiej zamień/uzupełnij go na/o potrójne !empty.
Lilo
Może tak ?

  1. if (empty( $_POST['mm']) || empty( $_POST['dd']) || empty( $_POST['yyyy']))
Silny
Cytat(skarabe.pl @ 2.08.2010, 10:16:15 ) *
Usuń wykrzyknik przy isset.

wykrzyknik musi być ;P


Cytat(Lilo @ 2.08.2010, 10:17:08 ) *
Może tak ?

  1. if (empty( $_POST['mm']) || empty( $_POST['dd']) || empty( $_POST['yyyy']))



nie działa, nawet jak jest np. 31 luty to i tak przechodzi rejestracje
Lilo
Moment już poprawiam, źle to napisałam


Tak będzie dobrze:
  1. if (isset($_POST['mm']) && isset ($_POST['dd']) && isset($_POST['yyyy']))
  2. {
  3. if (checkdate( $_POST['mm'], $_POST['dd'], $_POST['yyyy']))
  4. {
  5. $blad--;
  6. }
  7. else
  8. {
  9. $blad++;
  10. $szablon->assign_vars(array(
  11. 'L_ERROR_BIRTHDAY' => $lang['Error_birthday'],
  12. ));
  13. }
  14. }
zelu
Cytat(Silny)
wykrzyknik musi być ;P


Jak będzie wykrzyknik to sprawdzenie zostanie wykonane tylko wtedy kiedy nie ma wpisanej daty winksmiley.jpg A chodzi nam jednak o sytuacje odwrotna smile.gif

Pozdro
Silny
ale znowu jest

  1. Warning: checkdate() expects parameter 1 to be long, string given in /home/rejestracja.php on line 83


czyli

  1. if (checkdate( $_POST['mm'], $_POST['dd'], $_POST['yyyy']))
skarabe.pl
Nie wiemy jak jest skonstruowany formularz - czy np. pola na datę są "disabled", jeśli mają być pominięte (jeśli nie są, to isset nic nie da/nie zmieni, bo takie klucze i tak będą ustawione - to nic, że puste). Spróbuj:
  1. if (!empty($_POST['mm']) && !empty($_POST['dd']) && !empty($_POST['yyyy']))

zelu
Po 1 wyświetl sobie to co jest w tych zmiennych.

Po 2:
  1. checkdate( (int)$_POST['mm'], (int)$_POST['dd'], (int)$_POST['yyyy'])



Pozdro
Silny
teraz działa idealnie winksmiley.jpg dziękuję skarabe ;P

Cytat(zelu @ 2.08.2010, 10:49:52 ) *
Po 1 wyświetl sobie to co jest w tych zmiennych.

Po 2:
  1. checkdate( (int)$_POST['mm'], (int)$_POST['dd'], (int)$_POST['yyyy'])



Pozdro



a po co te (int) questionmark.gif
zelu
W razie gdyby user wpisał literki zamiast liczb. Robisz po prostu rzutowanie typów zeby miec pewnosc ze do funkcji leca integery (ktorych checkdate oczekuje)


Pozdro
Silny
ale to są selecty winksmiley.jpg
zelu
A no tak... bo przeciez firebugiem nie mozna zmieniac HTMLa winksmiley.jpg

Pozdro
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.