![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 0 Dołączył: 18.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Mam funkcję:
Słuzy ona do sparwdzania pola w formularzu. Powinna zwracac true gdy pole jest puste lub gdy jest tam wpisana liczba całkowita. Problem jest taki, że wpisując w pole formularza liczbę np. "10" zwraca false. Myślałem, że może coś tam się przywłóczyło razem z cyfrą z formularza (jakas spacja czy cos). Licze liczbę znaków w tym stringu - wychodzi 2, biore by w raporcie wypluowało wpisaną cyfrę pod zmienną $this->_data, wyskakuje 10, mimo tego pokazuję tę 10 jako false, czyli nie int. Jak wezme jednak przefiltruje tę zmienna $this->_data intvalem to jest OK, gdy wpiszę zamiast też jest OK,a przecież $this->_data to jest właśnie "10" z formularza. Ten post edytował Bojakki 14.11.2011, 22:35:13 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Potrzebujesz pewnie is_numeric. Sprawdź wartość poprzez var_dump()
![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Odsyłam do http://forum.php.pl/index.php?showtopic=187629
Ty masz taki sam problem. is_int (podobnie jak empty) sprawdza, czy dana ZMIENNA jest "jakaś" (is_int sprawdza, czy jeśli liczbą, empty - czy zmienna jest "pusta"). TO NIE DZIAŁA NA WŁAŚCIWOŚCIACH OBIEKTU!!! Właściwość obiektu to nie zmienna Przypisz właściwość obiektu do zmienna tymczasowa i ją (tę zmienną tymczasową) sprawdzaj. Ten post edytował abort 14.11.2011, 22:58:28 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 0 Dołączył: 18.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebujesz pewnie is_numeric. Sprawdź wartość poprzez var_dump() ![]() is_numeric działa normalnie, ale wtedy przechodzą liczby będące ułamkiem Odsyłam do http://forum.php.pl/index.php?showtopic=187629 Ty masz taki sam problem. is_int (podobnie jak empty) zprawdza, czy dana ZMIENNA jest "jakaś" (is_int sprawdza, czy jesli liczbą, empty - czy zmienna jest "pusta"). TO NIE DZIAŁA NA WŁAŚCIWOŚCIACH OBIEKTU!!! Właściwość obiektu to nie zmienna Przypisz właściwość obiektu do zmiennaj tymczasowaj i ją (tę zmienną tymczasową) sprawdzaj. Zmieniłem funkcje na:
Jest jak było. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
O, dziwne.
Ale... przestudiowałem http://pl2.php.net/manual/pl/function.is-int.php - popatrz na przykład #1 - ist_int ("23") daje... FALSE. Tak, mnie to też zaskoczyło. Jeśli masz PEWNOŚĆ, że tam się nie przypałęta inny znak od cyfry, to zrób rzutowane na typ int
i tę zmienną testuj jak w poprzednim przykładzie. Jeśli nie masz pewności czy tam są tylko cyfry, to to sprawdź (np. za pomocą preg_match). Ufam, że to załatwi sprawę. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 0 Dołączył: 18.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
jak dałem $zmienna = (int) $this->_data; to przechodzi, ale niestety wszystko. ktos wpisze 5.5 a mi do bazy doda się 55.
Zmieniłem funkcję tak:
Wpisałem w pole formularza "10" i działa. czyli te 10 to 10 nie wiem więc dlaczego nie przechodzi is_int -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
jak dałem $zmienna = (int) $this->_data; to przechodzi, ale niestety wszystko. ktos wpisze 5.5 a mi do bazy doda się 55. toż przecież pisałem, żeby sprawdzić wcześniej, czy zmienna zawiera tylko cyfry jako znaki. Choć zaproponowałem preg_match, to chyba jednak lepiej (a na pewno szybciej) będzie zrobić to za pomocą ctype_digit: http://pl2.php.net/manual/pl/function.ctype-digit.php Ten post edytował abort 14.11.2011, 23:25:50 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 0 Dołączył: 18.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
O dziwo teraz działa. Zmieniłem is_int na ctype_digit i otrzymałem działanie jakie planowałem. W przykładzie funkcji jets napisane:
i nie byłem pewien czy zadziała, ale kombinuje różne warianty i przechodzą tylko całkowite dodatnie lub puste pole. Troche paranormalne dla mnie. Ten post edytował Bojakki 14.11.2011, 23:32:52 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:00 |