Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP Operacje na dużych liczbach
nowAnd22
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.05.2011

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


Witajcie,
mam problem z dodawaniem dużych liczb.
Gdy dodaje z bazy produkty w cenie np. 599.00 i 599.00 to mi liczy sume i jest dobrze,
ale jeśli wybiorę produkt ponad 1000.00 to już nie działa i wyświetla np. 1,00 lub 2,00
W bazie zmieniłem format kwoty na decimal(7,2)
fragment kodu:

  1. <?php
  2. $total = 0;
  3. while ($row = mysql_fetch_array($results)) {
  4. echo "<tr>";
  5. extract($row);
  6. $prod = "SELECT * FROM produkty " .
  7. "WHERE produkty_id='$tymczasowa_prod_id'";
  8. $prod2 = mysql_query($prod);
  9. $prod3 = mysql_fetch_array($prod2);
  10. extract($prod3);
  11. echo "<td>
  12. <form method=\"POST\" action=\"modcart.php?action=change\">
  13. <input type=\"hidden\" name=\"modified_hidden\"
  14. value=\"$tymczasowa_ukryty\">
  15. <input type=\"text\" name=\"modified_quan\" size=\"2\"
  16. value=\"$tymczasowa_ilosc\">";
  17. echo "</td>";
  18. echo "<td>";
  19. echo "<a href=\"getprod.php?prodid=" . $produkty_id . "\">";
  20. echo "MINIATURKA</a></td>";
  21. echo "<td>";
  22. echo "<a href=\"getprod.php?prodid=" . $produkty_id . "\">";
  23. echo $produkty_nazwa;
  24. echo "</a></td>";
  25. echo "<td align=\"right\">";
  26. echo number_format($produkty_cena, 2);
  27. echo "</td>";
  28. echo "<td align=\"right\">";
  29. // oblicz łączną cenę za produkt
  30. $extprice = number_format($produkty_cena * $tymczasowa_ilosc, 2);
  31. echo $extprice;
  32. echo "</td>";
  33. echo "<td>";
  34. echo "<input type=\"submit\" name=\"Submit\"
  35. value=\"Zmień liczbę sztuk\">
  36. </form></td>";
  37. echo "<td>";
  38. echo "<form method=\"POST\" action=\"modcart.php?action=delete\">
  39. <input type=\"hidden\" name=\"modified_hidden\"
  40. value=\"$tymczasowa_ukryty\">";
  41. echo "<input type=\"submit\" name=\"Submit\"
  42. value=\"Usuń produkt\">
  43. </form></td>";
  44. echo "</tr>";
  45. // dodaj ceny łączne poszczególnych produktów
  46. $total = $extprice + $total;
  47.  
  48. }
  49. ?>
  50. <tr>
  51. <td colspan="4" align="right">
  52. Całkowita kwota:</td>
  53. <td align="right"> <?php echo number_format($total, 2); ?></td>


czy to wina bazy czy w kodzie PHP zmienna $total nie może poradzić sobie z liczbami powyżej 1000.00

Próbowałem też z
  1. &total = bcadd($extprice, $total);

ale nie pomogło

Gdy zmienna $extprice jest mniejsza od 1000.00 to wszystko działa i
wynik w zmiennej $total jest wyświetlany dobrze,
A gdy zmienna $extprice jest większa od 1000.00 to $total nie dodaje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
ferrero2
post
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

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


Nie wiem co to za baza, ale (7,2) może oznaczać, że 7 znaków, z czego 2 po przecinku (IMG:style_emoticons/default/smile.gif)
Dodaj sobie dwie wartości w PHP nie korzystając z SQL i wyświetl.
Potem dodaj sobie dwie wartości w bazie poprzez testową kwerendę.

Trudno powiedzieć nie znając serwera baz danych i jej konfiguracji.
Na pewno nie jest to wina zmiennej, bo php sam dostosowuje sobie rodzaj zmiennej jeżeli jej na stałe nie zadeklarujesz wcześniej.

Pozdrawiam
MW
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1.  
  2. $extprice = $produkty_cena * $tymczasowa_ilosc;
  3. echo $extprice.'<br/>';
  4.  
  5. $total = $extprice + $total;
  6. echo $total.'<br/>';
  7.  


Sprawdź (IMG:style_emoticons/default/smile.gif)

Ten post edytował CuteOne 9.08.2011, 13:58:08
Go to the top of the page
+Quote Post
nowAnd22
post
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.05.2011

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


CuteOne
Wielkie dzięki CuteOne
bez zaokrąglenia zmiennej $extprice wszystko śmiga

Dobrze jest ale nie do końca jak cena jest zapisana w bazie powyżej 1000.00
wstawia np. 0.00, 1.00, 2.00
Zwiększyłem pole decimal(9,2) lecz nic nie pomaga,


zmienna $total już dobrze wyświetla,
ale w bazie żle zapisuje
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


a my to co? wróżki? jaki typ danych w bazie i jaka baza?
Go to the top of the page
+Quote Post
nowAnd22
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.05.2011

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


baza MySQL
decimal(9,2)
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A próbowałeś zmieniać na inny typ danych?
Go to the top of the page
+Quote Post
nowAnd22
post
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.05.2011

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


Nie zmieniałem typu danych
Go to the top of the page
+Quote Post
CuteOne
post
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


spróbuj z float(9,2) i pamiętaj, żeby nie używać number_format() na zmiennej, którą zapisujesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 29.09.2025 - 11:39