Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zrobić koszyk?
Cliassi
post 23.09.2012, 12:14:19
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 29.04.2012

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


Witam, pliku add_cart.php mam taki kod
  1. $productInfo = array('id'=>"$productId",'numer_wymiaru'=>"$numer_wymiaru",'amount'=>"$ilosc",'productKey'=>"$productKey");
  2. $_SESSION['cart'][$productKey] = $productInfo;


problem polega na tym że nie wiem jak zrobić aktualizację koszyka. w pliku view_cart.php mam kod który w pętli wyswietla wszystkie produkty jednak nie wiem jak jak zrobić aby wartość value która jest uzupełniana z danych z tablicy cart była do zmiany bo do pliku refresh_cart.php wysyłam dane strong jako
  1. $ilosc_produktu=$ilosc_produktu."/";
więc z tego wychodzi że pwisanie wartości nic nie da bo ciąg jest już przypisany. Macie jakieś prykładowe rozwiązania jak aktualizować koszyk ? Może JavaScript ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
adbacz
post 23.09.2012, 12:23:53
Post #2





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Jaką wartość value? Gdzie ją przechowujesz? Bo w kodzie, który podałeś nie ma takiego indeksu.

Dlaczego do $ilosc_produktu dodajesz slash na końcu? Ilość produktu jest liczbą czy nie? W takim razie, idąc Twoim tokiem rozumowania jak dodam następny produkt jeśli w koszyku mam już 19/ (tak, ze slashem na końcu).

Jeśli chcesz przykładowy koszyk, to polecam zaglądnięcie w kod koszyka Frameworka CodeIgniter. Tam jest to jedna klasa, która zarządza tym.

EDIT:
Jak posiadasz wartość (z pierwszego listingu) $productKey, to co za problem pobrać całą tą tablicę z sesji i wykonywać na niej operacje? Tylko nie doklejaj tego slasha do ilości produktu, błagam ;/

Ten post edytował adbacz 23.09.2012, 12:25:15
Go to the top of the page
+Quote Post
Cliassi
post 23.09.2012, 12:58:54
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 29.04.2012

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


  1. <?
  2. $cart = $_SESSION['cart'];
  3. if(empty($cart))
  4. echo"<div class=\"msg_info\">Brak produktów w koszyku</div>";
  5. else{
  6. echo"Wpisanie \"0\" usuwa produkt z koszyka
  7. <br><br>
  8. <table width=\"670\" border=\"0\">
  9. <tr height=\"40\" bgcolor=\"#7F7F7F\">
  10. <td width=\"50\" align=\"center\">Nr Kat</td>
  11. <td align=\"center\">Nazwa</td>
  12. <td width=\"90\" align=\"center\">Cena</td>
  13. <td width=\"60\" align=\"center\">Ilość</td>
  14. <td width=\"90\" align=\"center\">Razem</td>
  15. </tr>";
  16. $total=0;
  17. echo" <form action=\"index.php?v=refresh_cart\" method=\"POST\">";
  18. foreach($cart as $product){
  19.  
  20. $id_produktu=$product['id'];
  21. $numer_wymiaru_produktu=$product['numer_wymiaru'];
  22. $ilosc_produktu=$product['amount'];
  23. $productKey=$product['productKey'];
  24. $q="SELECT * FROM products WHERE id='$id_produktu'";
  25. $r=$dbc->query($q);
  26. $row=$r->fetch_assoc();
  27.  
  28.  
  29. if($numer_wymiaru_produktu=="brak_wymiaru"){
  30.  
  31. $cena=$row['cena'];
  32. $razem=$cena*$ilosc_produktu;
  33.  
  34. <tr bgcolor=\"#BFBFBF\" height=\"60\">
  35. <td align=\"center\">$id_produktu</td>
  36. <td align=\"center\">".$row['nazwa']."</td>
  37. <td align=\"center\">".number_format((($cena)/100), 2, ',', ' ')." PLN</td>
  38. <td align=\"center\">
  39. <input type=\"text\" name=\"$productKey\" value=\"$ilosc_produktu\" size=\"3\" onBlur=\"if(this.value=='') this.value='$ilosc_produktu';\" onFocus=\"if(this.value=='$ilosc_produktu') this.value='';\">
  40. </td>
  41. <td align=\"center\">".number_format((($razem)/100), 2, ',', ' ')." PLN</td>
  42. </tr>";
  43. }
  44. else{
  45.  
  46. $cena=$row['cena_wym'];
  47. $cena = explode("/", $cena);
  48. $cena=$cena[$numer_wymiaru_produktu];
  49. $razem=$cena*$ilosc_produktu;
  50.  
  51.  
  52. $wymiary=$row['wymiary'];
  53. $wymiary = explode("/", $wymiary);
  54. $wymiary=$wymiary[$numer_wymiaru_produktu];
  55.  
  56. echo"<tr bgcolor=\"#BFBFBF\" height=\"60\">
  57. <td align=\"center\">$id_produktu</td>
  58. <td align=\"center\">".$row['nazwa']." o wymiarach $wymiary</td>
  59. <td align=\"center\">".number_format((($cena)/100), 2, ',', ' ')." PLN</td>
  60. <td align=\"center\">
  61. <input type=\"text\" name=\"$productKey\" value=\"$ilosc_produktu\" size=\"3\" onBlur=\"if(this.value=='') this.value='$ilosc_produktu';\" onFocus=\"if(this.value=='$ilosc_produktu') this.value='';\">
  62. </td>
  63. <td align=\"center\">".number_format((($razem)/100), 2, ',', ' ')." PLN</td>
  64. </tr>";
  65. }
  66.  
  67. $total=$total+$razem;//suma wartosci towaru
  68.  
  69. $id_produktu=$id_produktu."/";
  70. $numer_wymiaru_produktu=$numer_wymiaru_produktu."/";
  71. $ilosc_produktu=$ilosc_produktu."/";
  72.  
  73. $total_id=$total_id.$id_produktu;
  74. $total_wymiarow=$total_wymiarow.$numer_wymiaru_produktu;
  75. $total_ilosci=$total_ilosci.$ilosc_produktu;
  76.  
  77. echo"<input type=\"hidden\" value=\"$total_ilosci\" name=\"total_ilosci\">
  78. <input type=\"hidden\" value=\"$total_id\" name=\"total_id\">
  79. <input type=\"hidden\" value=\"$total_usun\" name=\"total_usun\">";
  80. }//koniec petli
  81.  
  82. $kosztwysylki=0000;
  83. $DoZaplaty=$kosztwysylki+$total;
  84. echo"</table>";
  85. echo"<Br><input type=\"submit\" value=\"Aktualizuj Koszyk\"></form><br><br>";
  86. echo"<br><a href=\"index.php?v=wyczysc\"><div id=\"button\">Wyczyść koszyk</div></a><br><br>";
  87. echo"<br><strong>Wartość produktów: ".number_format((($total)/100), 2, ',', ' ')." PLN</strong><Br>";
  88. echo"<br><strong>Koszt wysyłki: ".number_format((($kosztwysylki)/100), 2, ',', ' ')." * PLN</strong><Br>";
  89. echo"<br><strong>Razem do zapłaty: ".number_format((($DoZaplaty)/100), 2, ',', ' ')." PLN</strong><Br><br>";
  90.  
  91. $q="SELECT id FROM orders ORDER BY id DESC LIMIT 1";
  92. $r=@mysqli_query($dbc,$q);
  93. $rekord = mysqli_fetch_assoc($r);
  94. $last_id = $rekord['id'];
  95. $nowe_id=$last_id+1;
  96.  
  97. <form action=\"index.php?v=order_veryfication\" method=\"POST\">
  98. <input type=\"hidden\" value=\"$total_ilosci\" name=\"total_ilosci\">
  99. <input type=\"hidden\" value=\"$total_id\" name=\"total_id\">
  100. <input type=\"hidden\" value=\"$total_wymiarow\" name=\"total_wymiarow\">
  101. <input type=\"hidden\" value=\"$nowe_id\" name=\"id\">
  102. <input type=\"hidden\" value=\"$dozaplaty_przecinek\" name=\"dozaplaty_przecinek\">
  103. <input type=\"hidden\" value=\"$wysylka_przecinek\" name=\"wysylka_przecinek\">
  104. <input type=\"hidden\" value=\"$total\" name=\"total\">
  105.  
  106. <br>Rodzaj przesyłki: Poczta polska lub kurier ";//<select><option>Przesyłka kurierska</option></select>
  107. echo"<Br>
  108. <br>Rodzaj płatności: <select><option>Przedpłata</option></select>
  109. <br><Br>
  110. <input type=\"submit\" value=\"Potwierdź zamówienie\">
  111. </form>
  112. ";


tutaj jest cały skrypt koszyka który jest do poprawki ale nie wiem jak to rozwiązać
Go to the top of the page
+Quote Post
adbacz
post 23.09.2012, 13:19:08
Post #4





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Już wcześniej napisałem. Posiadając wartość $productKey pobierasz produkt z sesji (najpierw sprawdzasz, czy istnieje), czyli $_SESSION['cart'][$productKey], i na tej tablicy operujesz. Uaktualniasz nazwę, ilość produktu, czy nawet cenę i zapisujesz pod tym samym indeksem, czyli $_SESSION['cart'][$productKey]. To nie jest taka wielka filozofia. Sam musisz troszkę pomyśleć nad tym, jak chcesz aby to działało, bo to Ty będziesz na tym pracował - zrób to dobrze, żeby w przyszłości się na Tobie nie zemściło.

PS. Nie dodawaj tego slasha do ilości produktu wink.gif
Go to the top of the page
+Quote Post
Cliassi
post 23.09.2012, 13:21:20
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 29.04.2012

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


tzn moj problem polega na tym że nie wiem jak przesłać nowe lub stare dane do refresh_cart.php bo juz uproscilem ze 0 kasuje produkt.
Go to the top of the page
+Quote Post
CuteOne
post 23.09.2012, 17:22:04
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. Zamiast bawić się sesją nie lepiej przerzucić odpowiedzialność za składowanie danych na bazę MySQL?
2. Rozdziel kod HTML od PHP bo to co pokazałeś przypomina pastafariańskiego boga.
3. Wysłanie danych formularzem = odbiór danych za pomocą POST i poprawnej walidacji nadpisanie nimi danych SESSION.
4. W jakim celu tworzysz aż tyle ukrytych pól? Wszystko masz zapisane w sesji
5. Dla wszystkich zmiennych zmień
  1. //coś takiego
  2. $total_ilosci=$total_ilosci.$ilosc_produktu;
  3. //na coś takiego
  4. $total_ilosci=$ilosc_produktu;

6. co to $ilosc_produktu = $id_produktu.'/' questionmark.gif

Ten post edytował CuteOne 23.09.2012, 17:24:01
Go to the top of the page
+Quote Post
Cliassi
post 23.09.2012, 17:39:11
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 29.04.2012

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


Tzn nie wiem jak wysłać dane do pliku refresh_cart.php i robie to ukrytymi polami. / używam po to że potem za pomocą funkcji explode dane te otrzynuje w tablicy. wiem ze to chyba z ły pomysł
Go to the top of the page
+Quote Post
CuteOne
post 23.09.2012, 17:47:41
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. <form>
  2. <?php
  3. foreach($carts as $cart) {
  4.  
  5. echo '<input type="text" name="ilosc_['.$cart['product_id'].']" value="'.$cart['product_ilosc'].'" />';
  6. echo '<input type="text" name="blabla_['.$cart['product_id'].']" value="'.$cart['product_ilosc'].'" />';
  7. }
  8. ?>
  9. </form>


refresh_card.php
  1. echo '<pre>';print_r($_POST);


Ten post edytował CuteOne 23.09.2012, 17:48:07
Go to the top of the page
+Quote Post
Cliassi
post 24.09.2012, 15:54:56
Post #9





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 29.04.2012

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


identyfikacja jest po productKey a nie productid

dobra już sobie poradziłem. Temat do zamknięcia Dzięki wielkie za podpowiedzi!
Go to the top of the page
+Quote Post

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.07.2025 - 08:27