Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyświetlanie ogólnej wartości
colinQ
post
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


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

Ten post edytował colinQ 30.10.2007, 20:31:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
drPayton
post
Post #2





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


$_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ą...

Ten post edytował drPayton 30.10.2007, 20:37:35
Go to the top of the page
+Quote Post
colinQ
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


fakt, powinno być bez tego [$nowy] ale to nie zmienia faktu że wyświetla 0.00 :/
Go to the top of the page
+Quote Post
drPayton
post
Post #4





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


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. ?>


Ten post edytował drPayton 30.10.2007, 20:55:36
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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. ?>
Go to the top of the page
+Quote Post
colinQ
post
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


$produkt->$cena
zmieniłem na
$produkt->cena

i śmiga (IMG:http://forum.php.pl/style_emoticons/default/biggrin.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: 23.08.2025 - 13:51