Witam, dawno mnie tu nie było.

Baza danych

id|produkt|ilosc|cenausd|kurs|cenapln|totalusd|totalpln|

Co już mam. (wersja uproszczona)
Mam w bazie danych 10 produktów i ich ceny w USD, PLN i kurs usdpln z momentu dodania do bazy każdego z nich.
Wyświetlam kiedy zostały dodane, ile kosztowały w USD i w przeliczeniu na PLN ile kosztują teraz USD i PLN obliczam czy staniały czy zdrożały i o ile.

Aktualny kurs USDPLN jest pobierany każdorazowo przez osobny skrypt i zapisany do zmiennej.
Aktualna cena produktu w USD jest pobierana każdorazowo przez osobny skrypt i zapisana do zmiennej.

  1. /* Kod jest oczywiście znacznie dłuższy, ale na potrzeby forum został okrojony ze wszelkich zbędnych w tym temacie danych aby było czytelniej*/
  2.  
  3. while($row = $display->fetch(PDO::FETCH_ASSOC))
  4. {
  5.  
  6. /*---------------------------
  7. ------------- ZMIENNE BD ------------
  8. -----------------------------*/
  9. $id = $row['id'];
  10. $produkt = $row['produkt'];
  11. $ilosc = $row['ilosc'];
  12. $cenausd = $row['cenausd'];
  13. $cenapln = $row['cenapln'];
  14. $totalusd = $row['totalusd'];
  15. $totalpln = $row['totalpln'];
  16. $kurs =$row['kurs'];
  17. /*---------------------------
  18. ------------- ZMIENNE LICZONE ------------
  19. -----------------------------*/
  20.  
  21. $apiSource = curl_init();
  22. curl_setopt($apiSource, CURLOPT_SSL_VERIFYPEER, false);
  23. curl_setopt($apiSource, CURLOPT_RETURNTRANSFER, true);
  24. curl_setopt($apiSource, CURLOPT_URL,"http://localhost.pl/api/price-".$produkt."");
  25. $result_api = curl_exec($apiSource);
  26. curl_close($apiSource);
  27. $apires = json_decode($result_api);
  28.  
  29. $akurs = '3'; /* Tak dla ułatwienia */
  30. $acenausd = $apires->price;
  31. $acenapln = $acenausd*$akurs; /* acenapln i acenausd to po prostu aktualna cena w danej walucie*/
  32.  
  33. $atcenapln = $acenapln*$ilosc; /* at... Aktualna całkowita wartość za dany produkt cena*ilość */
  34. $atcenausd = $acenausd*$ilosc;
  35.  
  36.  
  37. }
  38.  
  39. $cartpriceusd = $conn->prepare('SELECT sum(totalusd) FROM handel '); /* w taki sposób sumuję całą kolumnę */
  40. $cartpriceusd->execute();
  41. $cartpriceusd = $cartpriceusd->fetchColumn();
  42.  
  43. $cartpricepln = $conn->prepare('SELECT sum(totalpln) FROM handel ');
  44. $cartpricepln->execute();
  45. $cartpricepln = $cartpricepln->fetchColumn();
  46.  


I tu mam problem chcę policzyć $acartpriceusd i $acartpricepln czyli aktualną wartość wszystkiego w bazie danych w obu walutach. Muszę albo w pętli wyżej jakoś zsumować wartości zmiennej $atcenapln z każdej iteracji, albo jakoś zrobić to poza tą pętlą.



W sumie jest jeszcze metoda dodania do bazy pól na aktualne dane, i Update tych pól przy każdym odpaleniu skryptu ale czy jest to konieczne?

  1. /*UPDATE TERAZ PRZY KAŻDYM ZAŁADOWANIU STRONY SKRYPT UMIESZCZA W BAZIE AKTUALNE CENY*/
  2. $updateprices = $conn->prepare("UPDATE handel SET
  3. atcecnapln= :atcecnapln,
  4. atcecnausd= :atcecnausd
  5. WHERE
  6. id = :id");
  7. $updateprices->bindParam(':id', $id);
  8. $updateprices->bindParam(':atcecnausd', $atcenausd);
  9. $updateprices->bindParam(':atcecnapln', $atcenapln);
  10. $updateprices->execute();

Powyższe oczywiście w pętli umieszczone odpowiednio smile.gif

A poniższe to po prostu suma z kolumny
  1. $acartpriceusd = $conn->prepare('SELECT sum(atcecnausd) FROM handel '); /* w taki sposób sumuję całą kolumnę */
  2. $acartpriceusd->execute();
  3. $acartpriceusd = $acartpriceusd->fetchColumn();
  4.  
  5. $acartpricepln = $conn->prepare('SELECT sum(atcecnapln) FROM handel ');
  6. $acartpricepln->execute();
  7. $acartpricepln = $acartpricepln->fetchColumn();