Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Warunek arytmetyczny na stringu
Forum PHP.pl > Forum > Przedszkole
yta
Witam pobieram przez formularz string 11 znaków.
np
10111266666
Dzielę go poprzez: substr i sprawdzam warunki. Problem jednak zaczyna się gdy chcę sprawdzić czy wycięty fragment jest większy od jakieś liczby. Bo logiczne że nie dam 99x elseif aby sprawdzić każdą możliwość błędnego wpisania dnia i miesiąca.
Konwersja stringa na INT także nic nie daje albo źle to robię ...

Cały if:
if((substr($pesel, 2, 2) == "00") || (intval($pesel) < 13))

Chodzi o to co będzie po LUB
Tak coś nie chce pykać z tym INTVAL i dziwnie się wywala bo jakoś ucina stringa zamiast wyświetlić napis i zakończyć działanie (po napisanie mam dane exit)
można zobaczyć jak to wygląda:



przykładowy string który już źle pyka:
94134567890

Na razie dnia nie sprawdzam. Danie warunku typu <= 13, 12 nie pomaga.
jaslanin
Jeżeli chcesz sprawdzić czy wycięty string jest większy od jakiejś liczby to chyba powinieneś go najpierw wyciąć

  1.  
  2. $month = substr($pesel, 2, 2);
  3.  
  4. if(($month == "00") || (intval($month) < 13))
  5.  


Dodatkowo post napisany jest niezrozumiale. Nie prościej było zapytać jak sprawdzić w numerze PESEL wartość miesiąca nie przekracza 13 albo jak wydobyć miesiąc jako liczbę z numeru PESEL?
yta
Cytat(jaslanin @ 26.03.2012, 17:24:35 ) *
Jeżeli chcesz sprawdzić czy wycięty string jest większy od jakiejś liczby to chyba powinieneś go najpierw wyciąć



  1.  
  2. $month = substr($pesel, 2, 2);
  3.  
  4. if(($month == "00") || (intval($month) < 13))
  5.  


Dodatkowo post napisany jest niezrozumiale. Nie prościej było zapytać jak sprawdzić w numerze PESEL wartość miesiąca nie przekracza 13 albo jak wydobyć miesiąc jako liczbę z numeru PESEL?


Przecież wyciąłem
nie muszę dawać zmiennej pomocniczej = substr mam ifa wink.gif
i zamiast tego month mam u siebie po prostu PESEL i nie działa z tym INTVALEM ...
batman
Abstrahując od samego problemu, datę sprawdzaj przy pomocy funkcji checkdate. W ten sposób unikniesz problemu z lutym i sprawdzaniem czy miesiąc ma 30, czy 31 dni.
yta
Cytat(batman @ 26.03.2012, 17:32:48 ) *
Abstrahując od samego problemu, datę sprawdzaj przy pomocy funkcji checkdate. W ten sposób unikniesz problemu z lutym i sprawdzaniem czy miesiąc ma 30, czy 31 dni.

Na przyszłość się przyda. Tutaj wystarczy z góry założyć że miesiąc ma 31 dni max bo to tak szkolne zadanie wink.gif

Doszedłem:
|| intval(substr($pesel, 2, 2)) >12)

tak ma być i działa wink.gif
Można sprawdzić.
jaslanin
wiem że tak ma być, dokładnie tak samo wcześniej Ci napisałem tylko że zamiast dwa razy wykonywać substr (która zwraca to samo za każdym razem), użyłem zmiennej pomocniczej.
yta
Mniejsza o to ważne że działa wink.gif
Dzięki
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.