Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
misteroous
post 21.11.2019, 15:47:00
Post #2





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

Posty w temacie
- misteroous   [PHP]Sumowanie produktów w koszyku   16.11.2019, 14:21:18
- - Tomplus   Chcesz liczbę unikalnych produktów w koszyku? To ...   16.11.2019, 16:59:10
- - misteroous   Tylko, że gdy dodam dwa razy produkt po 1 to wyświ...   16.11.2019, 17:04:58
- - Tomplus   To zamiast $akcesoria[$k] używaj $a...   16.11.2019, 17:21:58
- - misteroous   Niestety nie - wszystko odbywa się w php. Dziękuje...   16.11.2019, 19:36:36
- - Tomplus   Jakbyś podał jeszcze przykładową zawartość $_...   16.11.2019, 20:24:52
- - misteroous   Masz rację zmienna $ksiazki nie jest potrzebn...   18.11.2019, 15:53:41
- - Tomplus   Teraz patrząc po Twoim kodzie to nie potrzebna jes...   18.11.2019, 21:45:23
- - misteroous   No dobrze udało mi się to zrobić w taki sposób, że...   21.11.2019, 04:03:51
|- - Lord   Cytat(misteroous @ 21.11.2019, 06:03...   21.11.2019, 08:17:22
- - Tomplus   Przemyśl czy jest sens tworzyć treści w postaci: I...   21.11.2019, 09:01:53
- - dublinka   [PHP] pobierz, plaintext $tablica = array('Jan...   21.11.2019, 10:20:46
- - misteroous   Dziękuję wszystkim za zainteresowanie. @Lord prób...   21.11.2019, 12:49:45
|- - Lord   Cytat(misteroous @ 21.11.2019, 14:49...   21.11.2019, 15:14:52
- - misteroous   Dobrze, poprawiłem to tak: [PHP] pobierz, plaintex...   21.11.2019, 15:25:29
- - nospor   Po grzyba tworzysz tablice w tablicy? nie $t...   21.11.2019, 15:30:01
- - misteroous   @nospor Kiedy robię tak jak napisałeś, otrzymuje: ...   21.11.2019, 15:35:02
- - nospor   Ja napisalem, caly ten kod jest do 4 liter - bez o...   21.11.2019, 15:37:25
- - prz3kus   wklej kod co Ty tam robisz teraz   21.11.2019, 15:38:38
- - misteroous   Nie obrażam się, napisałem, że jestem początkujący...   21.11.2019, 15:47:00
- - nospor   czy w tablicy $ksiazki jest w ogole jakis jej...   21.11.2019, 16:02:09
- - misteroous   A dokładnie o jaki identyfikator ci chodzi i jak m...   21.11.2019, 16:32:29
- - nospor   Bo teoretycznie opis moze byc taki sam dla roznych...   21.11.2019, 16:37:13
- - misteroous   U mnie opis jest unikalny dla każdego produktu wię...   21.11.2019, 16:51:24
- - nospor   To ze ktos nie odpisuje, nie znaczy ze nie ma pomy...   22.11.2019, 11:41:25
- - Tomplus   IDENTYFIKATOR - w skrócie `id` - zwykle un...   22.11.2019, 14:02:14
- - misteroous   Dziękuję ci nospor Skrypt działa temat można zamk...   24.11.2019, 17:54:41


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: 20.04.2024 - 04:47