Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić koszyk?
Forum PHP.pl > Forum > PHP
Cliassi
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 ?
adbacz
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 ;/
Cliassi
  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ć
adbacz
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
Cliassi
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.
CuteOne
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
Cliassi
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ł
CuteOne
  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);
Cliassi
identyfikacja jest po productKey a nie productid

dobra już sobie poradziłem. Temat do zamknięcia Dzięki wielkie za podpowiedzi!
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.