Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Witam,

Napisałem lekki kod do weryfikacji mojej kwoty w skrypcie, jak i jej ewentualnej poprawy polegającej na skrócaniu ułamków lub ich dodawaniu :-) Oto i owy kod, proszę o jego ocenę, jeżeli coś nieoptymalnie zrobiłem, proszę o konstruktywne opinie:

        //-------------------------------------
       // Prepare amount!
       //-------------------------------------        
       if ( strrpos( $this->ipsclass->input['amount'], ',' ) !== FALSE )
       {
           $this->ipsclass->input['amount'] = substr_replace( $this->ipsclass->input['amount'], '.', strrpos( $this->ipsclass->input['amount'], ',' ), 1 );

           list( $integer, $digits ) = explode( '.', $this->ipsclass->input['amount'] );

           $lenght = strlen( $digits );
           switch ( $lenght )
           {
               case ( $lenght < 2 ):
                   $digits *= 10;
                   break;
               case ( $lenght > 2 ):
                   $digits = substr( $digits, 0, 2 );
                   break;
               case 0:
                   $digits = '00';
                   break;
           }

           $this->ipsclass->input['amount'] = implode( '.', array( $integer, $digits ) );
       }
       /* Amount without digits? Add them! */
       else
       {
           $this->ipsclass->input['amount'] = implode( '.', array( $this->ipsclass->input['amount'], '00' ) );
       }

       $this->ipsclass->input['amount']         = str_replace( ',', '', $this->ipsclass->input['amount'] );

Pozdrawiam,

Largo

  • Lubię to 1

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

Witaj,

Nie! Właśnie nie! Ma podawać kwoty jakiekolwiek z ułamkami do dwóch znaków. Widzę, że kolega znalazł błąd, ponieważ wpisanie 10.24 podaję jako złą kwotę, a kropkę powinien traktować jako poprawną liczbę. Oczywiście, zostawić jedynie kropkę ostatnią.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

Witaj,

Nie, to nie już ważne. Ja wynajdowałem na nowo funkcję w PHP, którą jest is_numeric() :-) Oto poprawny kod na wszelkie akcje:

        //-------------------------------------
       // Is number?
       //-------------------------------------
       if ( !is_numeric( $this->ipsclass->input['amount'] ) )
       {
           $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'incorrect_fg_number' ) );
       }

       //-------------------------------------
       // Prepare amount!
       //-------------------------------------
       if ( strpos( $this->ipsclass->input['amount'], '.' ) !== FALSE )
       {
           list( $integer, $fractions ) = explode( '.', $this->ipsclass->input['amount'] );

           $lenght = strlen( $fractions );
           switch ( $lenght )
           {
               case ( $lenght < 2 ):
                   $fractions *= 10;
                   break;
               case ( $lenght > 2 ):
                   $fractions = substr( $fractions, 0, 2 );
                   break;
               case 0:
                   $fractions = '00';
                   break;
           }

           $this->ipsclass->input['amount'] = implode( '.', array( $integer, $fractions ) );
       }
       else
       {
           $this->ipsclass->input['amount'] = implode( '.', array( $this->ipsclass->input['amount'], '00' ) );
       }

Zapomniałem, że separatorem liczb w PHP jest KROPKA, a nie PRZECINEK :-) Możesz przetestować, jest optymalnie napisany.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.