Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie int, jako string...
Forum PHP.pl > Forum > PHP
Largo
Witam,

Mam chyba dość nie typowy problem. Zacznę od zaprezentowania kodu:

  1. <?php
  2. //-------------------------------------
  3.        // Check all possible errors...
  4.        //-------------------------------------
  5.        if ( !$this->to_user['id'] )
  6.        {
  7.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'id_not_exists'));
  8.        }
  9.        else if ( $this->ipsclass->input['to_id'] == $this->ipsclass->member['id'] )
  10.        {
  11.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'send_to_you'));
  12.        }
  13.        else if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['banned_group'] )
  14.        {
  15.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'send_to_banned'));
  16.        }
  17.        else if ( $this->ipsclass->input['amount'] <= 0 )
  18.        {
  19.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'enough_fg'));
  20.        }
  21.        else if ( $this->ipsclass->input['amount'] > $this->ipsclass->member['fg'] )
  22.        {
  23.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'more_than_have'));
  24.        }
  25.        else if ( $this->ipsclass->input['from'] != $this->ipsclass->member['id'] )
  26.        {
  27.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'problem_id'));
  28.        }
  29.        else if ( $this->ipsclass->member['fg_locked'] == 1 )
  30.        {
  31.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'fg_locked'));
  32.        }
  33.        else if ( $this->ipsclass->member['fg_password'] != md5($this->ipsclass->input['fg_password']) )
  34.        {
  35.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'pass_not_match'));
  36.        }
  37. ?>


Warunek nad którym ubolewam to:

  1. <?php
  2. else if ( $this->ipsclass->input['amount'] > $this->ipsclass->member['fg'] )
  3.        {
  4.            $this->ipsclass->error(array(LEVEL => 1, MSG => 'more_than_have'));
  5.        }
  6. ?>


Wartości? A więc tutaj jest prosta odpowiedź - z bazy ( $this->ipsclass->member['fg'] ) pobiera w formie x, xxx.xx ( number_format($data, 2, '.', ',' ), a pole usera ( $this->ipsclass->input['amount'] ) jest pobierane z formularza również jako string. Gdzie jest problem? Ułamki, tu się sypie. Kolejna sprawa to setki, tysięcy nawet nie sprawdzałem. Jak takie coś sprawdzać?

PS. Narzucanie typów nic nie daję.

Pozdrawiam,
Largo
EarthCitizen
Te przecinki tam są niepotrzebne...
Largo
Witam,

Zwykła notacja x xxx.xx nic nie dała. Nie rozumiem tego w ogóle... intval() nie przejdzie, ponieważ muszą być ułamki.

PS. Szkoda, że PHP nie ma rzutowania danych typów dla zmiennych...

@down
Tak.

Pozdrawiam,
Largo
EarthCitizen
hmm ... teraz zamiast przecinka masz spację, dobrze widzę?
wrzasq
jaka spacje! :/ nic nie wstawiac. spacja nie jest zadnym sposobem zapisu liczby (chyba w zadnym jezyku programowania).

  1. <?php
  2. number_format($data, 2, '.', '');
  3. ?>


liczba sklada sie tylko z CYFR i ewentualnie jednej kropki oddzielajaca calosci od ulamka. i tyle. zadne spacje, zadne przecinki. te "notacje" sa tak po prostu dla ludzi aby bylo czytelniej.

rzutowanie typow? jasne ze jest: type juggling. tyle ze tak jak juz napisalem - "x xxx.xx" NIE jest liczba i zadne rzutowanie na typ liczbowy nie zalapie znakow po spacji jako czesci liczby.

-edit-

najlepiej nie uzywaj w ogole number_format, bo kompletnie szczerze mowiac nie rozumiem dlaczego to zrobiles. skoro masz liczbe to po co chcesz ja formatowac do obrobki? formatuje sie do wyswietlania. uzyj tej funkcji dopiero kiedy bedziesz musial wyswietlac ta dana.

takze problem raczej nie taki niezwykly winksmiley.jpg.
Largo
Witam,

Zgadza się, pospieszyłem się i nie doczytałem dokładnie dokumentacji. Tam gdzie ja dawałem number_format jest pobieranie danych o użytkowniku, a klasa display prezentuje ładnie dane, musiałem jedynie dodać dodatkową zmienną do szablonu.

Pozdrawiam,
Largo
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.