Witam, dawno mnie tu nie było.
Baza danychid|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.
/* 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*/
while($row = $display->fetch(PDO::FETCH_ASSOC))
{
/*---------------------------
------------- ZMIENNE BD ------------
-----------------------------*/
$id = $row['id'];
$produkt = $row['produkt'];
$ilosc = $row['ilosc'];
$cenausd = $row['cenausd'];
$cenapln = $row['cenapln'];
$totalusd = $row['totalusd'];
$totalpln = $row['totalpln'];
$kurs =$row['kurs'];
/*---------------------------
------------- ZMIENNE LICZONE ------------
-----------------------------*/
$apiSource = curl_init();
curl_setopt($apiSource, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($apiSource, CURLOPT_RETURNTRANSFER, true);
curl_setopt($apiSource, CURLOPT_URL,"http://localhost.pl/api/price-".$produkt."");
$result_api = curl_exec($apiSource);
curl_close($apiSource);
$apires = json_decode($result_api);
$akurs = '3'; /* Tak dla ułatwienia */
$acenausd = $apires->price;
$acenapln = $acenausd*$akurs; /* acenapln i acenausd to po prostu aktualna cena w danej walucie*/
$atcenapln = $acenapln*$ilosc; /* at... Aktualna całkowita wartość za dany produkt cena*ilość */
$atcenausd = $acenausd*$ilosc;
}
$cartpriceusd = $conn->prepare('SELECT sum(totalusd) FROM handel '); /* w taki sposób sumuję całą kolumnę */
$cartpriceusd->execute();
$cartpriceusd = $cartpriceusd->fetchColumn();
$cartpricepln = $conn->prepare('SELECT sum(totalpln) FROM handel ');
$cartpricepln->execute();
$cartpricepln = $cartpricepln->fetchColumn();
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?
/*UPDATE TERAZ PRZY KAŻDYM ZAŁADOWANIU STRONY SKRYPT UMIESZCZA W BAZIE AKTUALNE CENY*/
$updateprices = $conn->prepare("UPDATE handel SET
atcecnapln= :atcecnapln,
atcecnausd= :atcecnausd
WHERE
id = :id");
$updateprices->bindParam(':id', $id);
$updateprices->bindParam(':atcecnausd', $atcenausd);
$updateprices->bindParam(':atcecnapln', $atcenapln);
$updateprices->execute();
Powyższe oczywiście w pętli umieszczone odpowiednio

A poniższe to po prostu suma z kolumny
$acartpriceusd = $conn->prepare('SELECT sum(atcecnausd) FROM handel '); /* w taki sposób sumuję całą kolumnę */
$acartpriceusd->execute();
$acartpriceusd = $acartpriceusd->fetchColumn();
$acartpricepln = $conn->prepare('SELECT sum(atcecnapln) FROM handel ');
$acartpricepln->execute();
$acartpricepln = $acartpricepln->fetchColumn();
Ten post edytował maneanaroore 5.09.2017, 14:04:23