Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Sumowanie produktów w koszyku
misteroous
post 16.11.2019, 14:21:18
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Witam serdecznie wszystkich użytkowników.
Jestem nowy na forum i od razu zaznaczę że dopiero zaczynam przygodę z PHP.

Wracając jednak do tematu, potrzebuję pomocy w przerobieniu skryptu aby po dodaniu jednego produktu do koszyka zmieniał tylko liczbę z ilości:1 na 2, 3 itd. ponieważ póki co, zapisuję produkt jeden pod drugim po prostu w ilości:1.

Jeżeli źle się wyraziłem lub nie do końca jest jest jasne to co napisałem, to chętnie odpowiem na wszystkie pytania.

Poniżej przedstawiam skrypt i liczę na pomoc.

  1. <?php
  2. do_koszyka(false);
  3. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  4.  
  5. echo '<br />';
  6. if (count($akcesoria)===0)
  7. {
  8. echo 'Twoje zamówienie jest puste!';
  9. return;
  10. }
  11.  
  12. $suma=0;
  13.  
  14. if (count($akcesoria)>0)
  15. {
  16. echo '<br /> <br />';
  17. for($k=0;$k<count($akcesoria);$k++)
  18. {
  19. $suma+=$akcesoria[$k]['cena']*$akcesoria[$k]['ilosc'];
  20. echo ($k+1).'. <strong>'.$akcesoria[$k]['opis'].'</strong>, cena: <strong><span style="color:brown">'.$akcesoria[$k]['cena'].'</span> zł</strong>'.', ilość: '.$akcesoria[$k]['ilosc'].'<br />'."\n";
  21. }
  22. }
  23. ?>


Próbowałem już na różne sposoby ale co najwyżej udawało mi się zliczyć liczbę wszystkich produktów...

Ten post edytował misteroous 16.11.2019, 14:28:10
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2019, 16:59:10
Post #2





Grupa: Zarejestrowani
Postów: 1 831
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Chcesz liczbę unikalnych produktów w koszyku?

To chyba u Ciebie ta linia rozwiązuje ten problem: count($akcesoria)
Go to the top of the page
+Quote Post
misteroous
post 16.11.2019, 17:04:58
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Tylko, że gdy dodam dwa razy produkt po 1 to wyświetla mi je jako oddzielne produkty po 1 a nie sumuje jako jeden produkt w ilości: 2

Przykład:

Czerwona koszulka, cena: 15 zł, ilość: 1
Czerwona koszulka, cena: 15 zł, ilość: 1

Zamiast:

Czerwona koszulka, cena: 15 zł, ilość: 2
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2019, 17:21:58
Post #4





Grupa: Zarejestrowani
Postów: 1 831
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


To zamiast $akcesoria[$k] używaj $akcesoria[$produkId]
Zamiast for() użyj foreach()

Posortuj sobie wg klucza przed foreach() a następnie:

  1. $iloscProduktow = 0;
  2. foreach($akcesoria as $produktId => $var)
  3.  
  4. if($ostatniProdukt != $produkId) {
  5. $iloscProduktow++;
  6. }
  7. $ostatniProdukt = $produktId;
  8. /* resta danych pętli np .$var['cena'] */
  9.  
  10. }


Tak swoją drogą, zapisujesz coś w bazie danych?
Bo z bazy danych też możesz uzyskać taki wynik, jedyn zapytaniem.
Go to the top of the page
+Quote Post
misteroous
post 16.11.2019, 19:36:36
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Niestety nie - wszystko odbywa się w php.
Dziękuje za odpowiedź.
Spróbuje pokombinować według twojego przykładu.

Niestety jakoś nie mogę tego ogarnąć... Może to dlatego, że próbuje to zrobić cały dzień wink.gif

Skrypt w którym odbywa się ta funkcja dodawania wygląda tak:
  1. function do_koszyka($ksiazki)
  2. {
  3. if (!isset($_POST['do_koszyka'])) return;
  4. if (count($_POST['towary'])===0) return;
  5. $towary=$_POST['towary'];
  6. foreach($towary as $towar)
  7. {
  8. $id=(int)(substr($towar,0,6));
  9. $klucz_cena='cena'.$id;
  10. $klucz_ilosc='ile'.$id;
  11. if ($ksiazki)
  12. {
  13. $count=count($_SESSION['koszyk']['ksiazki']);
  14. $_SESSION['koszyk']['ksiazki'][$count]['opis']=substr($towar,6);
  15. $_SESSION['koszyk']['ksiazki'][$count]['cena']=$_POST[$klucz_cena];
  16. $_SESSION['koszyk']['ksiazki'][$count]['ilosc']=$_POST[$klucz_ilosc];
  17. }
  18. else
  19. {
  20. $count=count($_SESSION['koszyk']['akcesoria']);
  21. $_SESSION['koszyk']['akcesoria'][$count]['opis']=substr($towar,6);
  22. $_SESSION['koszyk']['akcesoria'][$count]['cena']=$_POST[$klucz_cena];
  23. $_SESSION['koszyk']['akcesoria'][$count]['ilosc']=$_POST[$klucz_ilosc];
  24. }
  25. }
  26. }


Domyślam się, że to gdzieś tutaj powinienem to zmienić ale gdzie i co dokładnie to nie wiem. Mógłbyś jakoś pomóc?

Ten post edytował misteroous 16.11.2019, 18:42:56
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2019, 20:24:52
Post #6





Grupa: Zarejestrowani
Postów: 1 831
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Jakbyś podał jeszcze przykładową zawartość $_POST bo wygląda to tak jakbyś miał nazwę produktu: 123456DługopisBezbarwny


Wiesz że warto pomyśleć o nie używaniu powtórzeń tego samego kodu?
np. linie 11-24 powyższego kodu można zamienić na:

  1. $typProduktu = $ksiazki ? 'ksiazki' : 'akcesoria';
  2.  
  3. $count = count($_SESSION['koszyk'][$typProduktu]);
  4. $_SESSION['koszyk'][$typProduktu][$count]['opis'] = substr($towar,6);
  5. $_SESSION['koszyk'][$typProduktu][$count]['cena'] = $_POST[$klucz_cena];
  6. $_SESSION['koszyk'][$typProduktu][$count]['ilosc'] = $_POST[$klucz_ilosc];


W ogóle co ma zmienna $ksiazki oraz jak wygląda też $_SESSION['koszyk'][$typProduktu] bo nie ogarniam zamysłu.
Go to the top of the page
+Quote Post
misteroous
post 18.11.2019, 15:53:41
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Masz rację zmienna $ksiazki nie jest potrzebna.

Pokierowałem się twoim przykładem i kod działa bez zarzutu:
  1. function do_koszyka($akcesoria)
  2. {
  3. if (!isset($_POST['do_koszyka'])) return;
  4. if (count($_POST['towary'])===0) return;
  5. $towary=$_POST['towary'];
  6. foreach($towary as $towar)
  7. {
  8. $id=(int)(substr($towar,0,6));
  9. $klucz_cena='cena'.$id;
  10. $klucz_ilosc='ile'.$id;
  11. $typProduktu = 'akcesoria';
  12.  
  13. $count=count($_SESSION['koszyk'][$typProduktu]);
  14. $_SESSION['koszyk'][$typProduktu][$count]['opis'] = substr($towar,6);
  15. $_SESSION['koszyk'][$typProduktu][$count]['cena'] = $_POST[$klucz_cena];
  16. $_SESSION['koszyk'][$typProduktu][$count]['ilosc'] = $_POST[$klucz_ilosc];
  17. }
  18. }


Spróbuję teraz zsumować te artykuły idąc za twoją poprzednią wskazówką, zobaczymy czy mi się uda smile.gif
Go to the top of the page
+Quote Post
Tomplus
post 18.11.2019, 21:45:23
Post #8





Grupa: Zarejestrowani
Postów: 1 831
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Teraz patrząc po Twoim kodzie to nie potrzebna jest w funkcji argument $akcesoria.

Go to the top of the page
+Quote Post
misteroous
post 21.11.2019, 04:03:51
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


No dobrze udało mi się to zrobić w taki sposób, że kiedy

  1. <?php
  2. $text=[
  3. "1||Kurczak Kung Pao",
  4. "1||Kurczak Kung Pao",
  5. "1||Wołowina w czerwonym curry",
  6. "1||Wołowina w czerwonym curry",
  7. ];
  8. $sum = [];
  9. foreach($text as $row)
  10. {
  11. list($value,$name) = explode("||", $row);
  12.  
  13. if(!isset($sum[$name])){
  14. $sum[$name] = 0;
  15. }
  16.  
  17. $sum[$name] += $value;
  18. }
  19. var_dump($sum);
  20. ?>

skrypt działa i wyświetla:
  1. array(2) { ["Kurczak Kung Pao"]=> int(2) ["Wołowina w czerwonym curry"]=> int(2) }

czyli zlicza i dobrze...

Ale kiedy wkrypt wygląda tak:
  1. <?php
  2. $text=[
  3. array_map(function ($var) {
  4. echo "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  5. }, $arr)
  6. ];
  7.  
  8.  
  9. $sum = [];
  10. foreach($text as $row)
  11. {
  12. list($value,$name) = explode("||", $row);
  13.  
  14. if(!isset($sum[$name])){
  15. $sum[$name] = 0;
  16. }
  17.  
  18. $sum[$name] += $value;
  19. }
  20. var_dump($sum);
  21. ?>

skrypt już nie działa pomimo tego, że
  1. array_map(function ($var) {
  2. echo "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  3. }, $arr);
daję identyczną wartość co:
  1. "1||Kurczak Kung Pao",
  2. "1||Kurczak Kung Pao",
  3. "1||Wołowina w czerwonym curry",
  4. "1||Wołowina w czerwonym curry",

I wyświetla taki błąd:
  1. Warning: explode() expects parameter 2 to be string, array given in

Proszę o pomoc, co robię źle i jak to naprawić?
Pozdrawiam

Ten post edytował misteroous 21.11.2019, 04:06:00
Go to the top of the page
+Quote Post
Lord
post 21.11.2019, 08:17:22
Post #10





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(misteroous @ 21.11.2019, 06:03:51 ) *
  1. <?php
  2. $text=[
  3. array_map(function ($var) {
  4. echo "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  5. }, $arr)
  6. ];


Cytat(misteroous @ 21.11.2019, 06:03:51 ) *
  1. <?php
  2. $text=[
  3. array_map(function ($var) {
  4. return "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  5. }, $arr)
  6. ];

Go to the top of the page
+Quote Post
Tomplus
post 21.11.2019, 09:01:53
Post #11





Grupa: Zarejestrowani
Postów: 1 831
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Przemyśl czy jest sens tworzyć treści w postaci:
Ilosc||Nazwa

bo dużo wygodniejsze jest praca na tablicy:
korzystając z funkcji json_encode($array) i json_decode($stringJson, true)
Go to the top of the page
+Quote Post
dublinka
post 21.11.2019, 10:20:46
Post #12





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. $tablica = array('Jan Serce',
  2. 'Maria Dąbrowska',
  3. 'Bolesław Chrobry',
  4. 'Zygmunt III Waza',
  5. 'Bolesław Chrobry',
  6. 'Maria Dąbrowska',
  7. 'Fryderyk Chopin',
  8. 'Jan Serce',
  9. 'Zygmunt III Waza',
  10. 'Bolesław Chrobry',
  11. 'Fryderyk Chopin',
  12. 'Zygmunt III Waza',
  13. 'Roman Wilhelmi');
  14.  
  15. $tbl = array_count_values($tablica);
  16. arsort($tbl);
  17. foreach($tbl as $kl => $val)
  18. {
  19.  
  20. echo 'Nazwa <b>' . $kl . '</b> występuje <b>' . $val . '</b> raz/y.<br>';
  21.  
  22. }


--------------------
Go to the top of the page
+Quote Post
misteroous
post 21.11.2019, 12:49:45
Post #13





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Dziękuję wszystkim za zainteresowanie.

@Lord próbując twoim przykładem wyskakuję mi błąd:
  1. Parse error: syntax error, unexpected ','

właśnie w linii w której zamieniłem echo na return

@Tomplus
Mógłbyś pokazać na przykładzie?

@dublinka
Dalej nie wiem jak zaimplementować ten skrypt do wartości $text
  1. array_map(function ($var) {
  2. echo "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  3. }, $arr);
Go to the top of the page
+Quote Post
Lord
post 21.11.2019, 15:14:52
Post #14





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(misteroous @ 21.11.2019, 14:49:45 ) *
@Lord próbując twoim przykładem wyskakuję mi błąd:
  1. Parse error: syntax error, unexpected ','


  1. array_map(function ($var) {
  2. echo "<br />", "\n",'"' .$var['ilosc'], "||", $var['opis']. '"',",";
  3. }, $arr);


bo stringi w php łaczysz . a nie ,


  1. $a. ' - '.$b
Go to the top of the page
+Quote Post
misteroous
post 21.11.2019, 15:25:29
Post #15





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Dobrze, poprawiłem to tak:
  1. $text=[
  2. array_map(function ($var) {
  3. return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.",";
  4. }, $arr)
  5. ];

Ale wciąż wywala mi błąd:
  1. Warning: explode() expects parameter 2 to be string, array given in

  1. $text=[
  2. array_map(function ($var) {
  3. return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.",";
  4. }, $arr)
  5. ];
  6.  
  7. $sum = [];
  8. foreach($text as $row)
  9. {
  10. list($value,$name) = explode("||", $row); <========== TUTAJ
  11.  
  12. if(!isset($sum[$name])){
  13. $sum[$name] = 0;
  14. }
  15.  
  16. $sum[$name] += $value;
  17. }
  18. var_dump($sum);


Ten post edytował misteroous 21.11.2019, 15:26:02
Go to the top of the page
+Quote Post
nospor
post 21.11.2019, 15:30:01
Post #16





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Po grzyba tworzysz tablice w tablicy?

nie
$text=[
array_map(function ($var) {
return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.",";
}, $arr)
];

a:

$text=
array_map(function ($var) {
return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.",";
}, $arr)
;



A tak w ogole po grzyba przeksztalcasz tablice na tekst, tylko po to by pare linijek nizej ten tekst przeksztalcic na te sama tablice? Przeciez to nie ma zadnego sensu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
misteroous
post 21.11.2019, 15:35:02
Post #17





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


@nospor
Kiedy robię tak jak napisałeś, otrzymuje:
  1. Warning: A non-numeric value encountered in

dla każdej z wartości
Go to the top of the page
+Quote Post
nospor
post 21.11.2019, 15:37:25
Post #18





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Ja napisalem, caly ten kod jest do 4 liter - bez obrazy.Nie ma zadnej logiki anie sensu.

Zamiast zamieniac $arr na tablice tekstow, to iteruj bezposrednio po $arr i sobie sumuj co masz sumowac. Nie ma sensu poprawiac tego co tu teraz stworzyles bo to tylko marnowanie czasu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
prz3kus
post 21.11.2019, 15:38:38
Post #19





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

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


wklej kod co Ty tam robisz teraz smile.gif
Go to the top of the page
+Quote Post
misteroous
post 21.11.2019, 15:47:00
Post #20





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

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


Nie obrażam się, napisałem, że jestem początkujący i to bardzo. Ten skrypt nie jest mój, ja tylko staram się go przerobić.
Wkleję wam oryginalny skrypt a wy postarajcie się może w miarę swoich możliwości podpowiedzieć co mam zrobić żeby działało tak jak trzeba...
  1. Plik php.php:
  2.  
  3. <?php
  4. function poczatek_sesji()
  5. {
  6. if (!isset($_SESSION['koszyk']))
  7. {
  8. $_SESSION['koszyk']=array('ksiazki'=>array(),'akcesoria'=>array());
  9. }
  10. }
  11.  
  12. function do_koszyka($ksiazki)
  13. {
  14. if (!isset($_POST['do_koszyka'])) return;
  15. if (count($_POST['towary'])===0) return;
  16. $towary=$_POST['towary'];
  17. foreach($towary as $towar)
  18. {
  19. $id=(int)(substr($towar,0,6));
  20. $klucz_cena='cena'.$id;
  21. $klucz_ilosc='ile'.$id;
  22. if ($ksiazki)
  23. {
  24. $count=count($_SESSION['koszyk']['ksiazki']);
  25. $_SESSION['koszyk']['ksiazki'][$count]['opis']=substr($towar,6);
  26. $_SESSION['koszyk']['ksiazki'][$count]['cena']=$_POST[$klucz_cena];
  27. $_SESSION['koszyk']['ksiazki'][$count]['ilosc']=$_POST[$klucz_ilosc];
  28. }
  29. else
  30. {
  31. $count=count($_SESSION['koszyk']['akcesoria']);
  32. $_SESSION['koszyk']['akcesoria'][$count]['opis']=substr($towar,6);
  33. $_SESSION['koszyk']['akcesoria'][$count]['cena']=$_POST[$klucz_cena];
  34. $_SESSION['koszyk']['akcesoria'][$count]['ilosc']=$_POST[$klucz_ilosc];
  35. }
  36. }
  37. }
  38.  
  39. function pusty_koszyk()
  40. {
  41. if (!isset($_POST['pusty_koszyk'])) return;
  42. $_SESSION['koszyk']['ksiazki']=array();
  43. $_SESSION['koszyk']['akcesoria']=array();
  44. echo '<br />Koszyk jest pusty!';
  45. }
  46.  
  47. function pokaz_koszyk()
  48. {
  49. if (!isset($_POST['pokaz_koszyk'])) return;
  50. $ksiazki=$_SESSION['koszyk']['ksiazki'];
  51. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  52.  
  53. echo '<br />';
  54. if (count($ksiazki)===0 && count($akcesoria)===0)
  55. {
  56. echo 'Koszyk jest pusty!';
  57. return;
  58. }
  59.  
  60. $suma=0;
  61. if (count($ksiazki)>0)
  62. {
  63. echo 'Książki:<br />';
  64. for($k=0;$k<count($ksiazki);$k++)
  65. {
  66. $suma+=$ksiazki[$k]['cena']*$ksiazki[$k]['ilosc'];
  67. echo ($k+1).'. '.$ksiazki[$k]['opis'].', cena: '
  68. .$ksiazki[$k]['cena'].', ilość: '.$ksiazki[$k]['ilosc'].'<br />'."\n";
  69. }
  70. }
  71.  
  72. if (count($akcesoria)>0)
  73. {
  74. echo '<br />Akcesoria:<br />';
  75. for($k=0;$k<count($akcesoria);$k++)
  76. {
  77. $suma+=$akcesoria[$k]['cena']*$akcesoria[$k]['ilosc'];
  78. echo ($k+1).'. '.$akcesoria[$k]['opis'].
  79. ', cena: '.$akcesoria[$k]['cena'].', ilość: '.$akcesoria[$k]['ilosc'].'<br />'."\n";
  80. }
  81. }
  82. echo '<br />Wartość towarów w koszyku: '.$suma;
  83. }
  84. ?>
  85. Plik sklep.php
  86.  
  87. <?php
  88. include('php.php');
  89. poczatek_sesji();
  90. ?>
  91. <!doctype html>
  92. <html>
  93. <head>
  94. <title>Testowanie skryptów PHP</title>
  95. <meta charset="utf-8" />
  96. </head>
  97. <body>
  98. <h1>Sklep internetowy</h1>
  99. <p><a href="ksiazki.php">Książki</a></p>
  100. <p><a href="akcesoria.php">Akcesoria</a></p>
  101. <br />
  102. <form action="sklep.php" method="post">
  103. <input type="submit" name="pusty_koszyk" value="Pusty koszyk" />
  104. <input type="submit" name="pokaz_koszyk" value="Pokaż koszyk" />
  105. </form>
  106. <?php
  107. pusty_koszyk();
  108. pokaz_koszyk();
  109. ?>
  110. </body>
  111. </html>
  112. Plik ksiazki.php
  113.  
  114. <?php
  115. include('php.php');
  116. poczatek_sesji();
  117. ?>
  118. <!doctype html>
  119. <html>
  120. <head>
  121. <title>Testowanie skryptów PHP</title>
  122. <meta charset="utf-8" />
  123. </head>
  124. <body>
  125. <h1>Książki</h1>
  126. <p><a href="sklep.php">Sklep</a></p>
  127. <p><a href="akcesoria.php">Akcesoria</a></p>
  128. <br />
  129. <form action="ksiazki.php" method="post">
  130. <p>
  131. <label><input type="checkbox" name="towary[]"
  132. value="000000Jak zdać egzamin, autor: Józef Nauczyciel" />
  133. Jak zdać egzamin, autor: Józef Nauczyciel
  134. </label>
  135. , cena<input type="text" name="cena0" value="20" style="width:30px;" />
  136. , ilość<input type="text" name="ile0" style="width:30px;" />
  137. </p>
  138. <p>
  139. <label><input type="checkbox" name="towary[]"
  140. value="000001Podstawy PHP, autor: Jan Mądry" />
  141. Podstawy PHP, autor: Jan Mądry
  142. </label>
  143. , cena<input type="text" name="cena1" value="40" style="width:30px;" />
  144. , ilość<input type="text" name="ile1" style="width:30px;" />
  145. </p>
  146. <p>
  147. <label><input type="checkbox" name="towary[]"
  148. value="000002HTML 5, autor: Piotr Programista" />
  149. HTML 5, autor: Piotr Programista
  150. </label>
  151. , cena<input type="text" name="cena2" value="60" style="width:30px;" />
  152. , lość<input type="text" name="ile2" style="width:30px;" />
  153. </p>
  154.  
  155. <input type="submit" name="do_koszyka" value="Do koszyka" />
  156. <input type="submit" name="pusty_koszyk" value="Pusty koszyk" />
  157. <input type="submit" name="pokaz_koszyk" value="Pokaż koszyk" />
  158. </form>
  159. <?php
  160. do_koszyka(true);
  161. pusty_koszyk();
  162. pokaz_koszyk();
  163. ?>
  164. </body>
  165. </html>
  166. Plik akcesoria.php
  167.  
  168. <?php
  169. include('php.php');
  170. poczatek_sesji();
  171. ?>
  172. <!doctype html>
  173. <html>
  174. <head>
  175. <title>Testowanie skryptów PHP</title>
  176. <meta charset="utf-8" />
  177. </head>
  178. <body>
  179. <h1>Akcesoria</h1>
  180. <p><a href="sklep.php">Sklep</a></p>
  181. <p><a href="ksiazki.php">Książki</a></p>
  182. <br />
  183. <form action="akcesoria.php" method="post">
  184. <p>
  185. <label><input type="checkbox" name="towary[]"
  186. value="000000Płyta główna" />
  187. Płyta główna
  188. </label>
  189. , cena<input type="text" name="cena0" value="200" style="width:30px;" />
  190. , ilość<input type="text" name="ile0" style="width:30px;" />
  191. </p>
  192. <p>
  193. <label><input type="checkbox" name="towary[]"
  194. value="000001Procesor" />
  195. Procesor
  196. </label>
  197. , cena<input type="text" name="cena1" value="300" style="width:30px;" />
  198. , ilość<input type="text" name="ile1" style="width:30px;" />
  199. </p>
  200. <p>
  201. <label><input type="checkbox" name="towary[]"
  202. value="000002Karta graficzna" />
  203. Karta graficzna
  204. </label>
  205. , cena<input type="text" name="cena2" value="120" style="width:30px;" />
  206. , lość<input type="text" name="ile2" style="width:30px;" />
  207. </p>
  208.  
  209. <input type="submit" name="do_koszyka" value="Do koszyka" />
  210. <input type="submit" name="pusty_koszyk" value="Pusty koszyk" />
  211. <input type="submit" name="pokaz_koszyk" value="Pokaż koszyk" />
  212. </form>
  213. <?php
  214. do_koszyka(false);
  215. pusty_koszyk();
  216. pokaz_koszyk();
  217. ?>
  218. </body>
  219. </html>


Problem polega na tym, że gdy dwa razy dodam produkt po 1 zamiast zsumować te produkty to dodaje jeden pod drugim po 1.
zamiast:
  1. Akcesoria:
  2. 1. Płyta główna, cena: 200, ilość: 2
  3.  
  4. Wartość towarów w koszyku: 400


To otrzymuję:
  1. Akcesoria:
  2. 1. Płyta główna, cena: 200, ilość: 1
  3. 2. Płyta główna, cena: 200, ilość: 1
  4.  
  5. Wartość towarów w koszyku: 400


Może teraz coś pomożecie smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 20:24