Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Format ceny
nexis
post 24.05.2006, 16:17:53
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Witam,

mam formularz, w którym użytkownik podaje cenę produktu (brutto). Może podać cenę w postaciach:

  1. 1) 1234
  2. 2) 1234.5
  3. 3) 1234.56
  4. 4) 1234.00


Z tak podanej ceny obliczam cenę netto za pomocą takiego kodu:

  1. <?php
  2. $price = round($_POST['product_price'], 2);
  3. $netto = round($price-($price*1.07-$price), 2);
  4. ?>


W bazie danych są dwie kolumny typu DOUBLE. Jeżeli obie ceny są takiej postaci jak w punkcie 3 (np. 1234.56) to wszystko działa prawidłowo, jeżeli jest to jednak przypadek 1, 2 lub 4 to pojawia się problem.

1) 1234 - chciałbym aby wpis bazie miał postać 1234.00. Potrafię co prawda dodać dwa brakujące zera na końcu, ale chyba MySQL je znowu automatycznie obcina. Jaki typ kolumny zatem ustawić?

2) 1234.5 - prawie to samo co wyżej. Dostawiam jedno brakujące zero, ale MySQl i tak znowu redukuje wpis do postaci 1234.5

4) 1234.00 - znowu takie same objawy jak wyżej.

Proszę o pomoc.


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
siemakuba
post 24.05.2006, 18:57:51
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


szczerze to nie bardzo rozumiem ten problem...
przeciez z punktu widzenia jakiejkolwiek operacji matematycznej 1234.00 i 1234 to dwie identyczne liczby. tak?
jezeli chodzi ci o to ze sie nieladnie wyswietla na stronie... number_format" title="Zobacz w manualu php" target="_manual

pozdr.
Go to the top of the page
+Quote Post
-Gość-
post 24.05.2006, 19:05:38
Post #3





Goście







daj pole jak float(6,2) np, wtedy będziesz miał ostatnie dwie liczby po przecinku w bazie i obojętie co dodasz będzie ci wstawiało te dwie liczby po przecniku, np dodajesz 123 z formularza, w bazie będzie 123,00 itd.
Go to the top of the page
+Quote Post
-shingo-
post 17.11.2007, 11:38:23
Post #4





Goście







Cytat(nexis @ 24.05.2006, 16:17:53 ) *
Witam,

mam formularz, w którym użytkownik podaje cenę produktu (brutto). Może podać cenę w postaciach:

  1. 1) 1234
  2. 2) 1234.5
  3. 3) 1234.56
  4. 4) 1234.00


Z tak podanej ceny obliczam cenę netto za pomocą takiego kodu:

  1. <?php
  2. $price = round($_POST['product_price'], 2);
  3. $netto = round($price-($price*1.07-$price), 2);
  4. ?>


W bazie danych są dwie kolumny typu DOUBLE. Jeżeli obie ceny są takiej postaci jak w punkcie 3 (np. 1234.56) to wszystko działa prawidłowo, jeżeli jest to jednak przypadek 1, 2 lub 4 to pojawia się problem.

1) 1234 - chciałbym aby wpis bazie miał postać 1234.00. Potrafię co prawda dodać dwa brakujące zera na końcu, ale chyba MySQL je znowu automatycznie obcina. Jaki typ kolumny zatem ustawić?

2) 1234.5 - prawie to samo co wyżej. Dostawiam jedno brakujące zero, ale MySQl i tak znowu redukuje wpis do postaci 1234.5

4) 1234.00 - znowu takie same objawy jak wyżej.

Proszę o pomoc.



dodaj pola jako text i po sprawie gdyz obliczenia i tak wykonywane sa z poziomu php a nie sql
sql przechowuje tylko te wartosci wazne jest aby oddzielajacym znakiem byla kropka a nie przecinek
pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.05.2025 - 06:38