Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlanie ogólnej wartości
Forum PHP.pl > Forum > PHP
colinQ
Próbuję zrobić obliczanie ogólnej wartości w sklepie int. i nie wyświetla

funkcja która podlicza
  1. <?php
  2. function oblicz_wartosc($koszyk)
  3. {
  4.  $wartosc = 0.0;
  5.  if(is_array($koszyk))
  6.  {
  7. foreach($koszyk as $nr => $ilosc)
  8. {
  9.  $zapytanie = "select cena from produkty where nr='$nr'";
  10.  $wynik = mysql_query($zapytanie);
  11.  if ($wynik)
  12.  {
  13.  $produkt = mysql_fetch_object($wynik);
  14.  $cena_produktu = $produkt->$cena;
  15.  $wartosc += $cena_produktu*$ilosc;
  16.  }
  17. }
  18.  }
  19.  return $wartosc;
  20. }
  21. ?>



tutaj wywołanie tej funkcji
  1. <?php
  2. $nowy = $_GET['nowy'];
  3.  
  4. if($nowy) {
  5.  
  6. if(empty($_SESSION['koszyk']))
  7. {
  8. $_SESSION['koszyk'] = array();
  9. $_SESSION['produkty'] = 0;
  10. }
  11.  
  12. if(isset($_SESSION['koszyk'][$nowy]))
  13. $_SESSION['koszyk'][$nowy]++;
  14. else {
  15. @ $_SESSION['koszyk'][$nowy] = 1;
  16. }
  17.  
  18. $_SESSION['calkowita_wartosc'] = oblicz_wartosc($_SESSION['koszyk'][$nowy]);
  19. ?>


wyswietla 0.00 a mam produkt co kosztuje 45.00

Jak potrzebujecie jeszcze czegoś to piszcie
drPayton
$_SESSION['koszyk'][$nowy] podawane jako parametr do funkcji obliczającej, to pojedyncza wartość (id produktu? ilość?).
Funkcja liczy tylko wówczas, jeśli będzie on tablicą, więc nie liczy tylko zwraca wartość początkową...
colinQ
fakt, powinno być bez tego [$nowy] ale to nie zmienia faktu że wyświetla 0.00 :/
drPayton
Przed:
  1. <?php
  2. $_SESSION['calkowita_wartosc'] = oblicz_wartosc($_SESSION['koszyk']);
  3. ?>

daj
  1. <?php
  2. echo '<pre'>; var_dump($_SESSION['koszyk']);
  3. ?>
i zobacz jak wygląda ta tablica (czy poprawnie). Jeżeli uznasz że tak, wklej wynik działania tego var_dumpa

added:
Dopiero zauważyłem:
Nie wiem, czy to błąd, bo nie korzystam z fetch_object, ale wg manuala, nie:
  1. <?php
  2. $cena_produktu = $produkt->$cena;
  3. ?>

tylko
  1. <?php
  2. $cena_produktu = $produkt->cena;
  3. ?>
phpion
Taka moja uwaga nie związana z problemem, ale może Ci się przyda. Nie pobieraj cen towarów z koszyka w pętli! Przy 2 produktach masz 2 pętle, ale przy 20 już 20 (złożoność liniowa). Zdecydowanie lepiej zrobić to w jednym zapytaniu:
  1. <?php
  2. // tworzymy tylko jedno zapytanie np. 'SELECT ... IN (1, 3, 17)'
  3. $q = 'SELECT nr, cena FROM produkty WHERE nr IN ('.implode(', ', array_keys($koszyk).')';
  4. $q = mysql_query($q);
  5.  
  6. while ($r = mysql_fetch_row($q)) {
  7. // o ile sie nie machnalem to ilosc * cena
  8. $wartosc += $koszyk[$r[0]] * $r[1];
  9. }
  10. ?>
colinQ
$produkt->$cena
zmieniłem na
$produkt->cena

i śmiga biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.