Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie opcji do koszyka na zakupy
Forum PHP.pl > Forum > PHP
sQQuil
Witajcie !


tworze sklep internatowy, zaszła potrzeba poszerzenia asortymentu o dodatkowe opcje jakiegoś produktu.

Wygląda to tak

Mamy stronę przedstawiającą kartę produktu a w niej konfiguratot gdzie możemy wybrać szerość, kolor i opcję produktu.

o ile szerokość i kolor nie stanowią problemu bo znajdują się w tej samej tabeli przez co produkt w tej konkretnej konfiguracji to tak naprawdę wpis w bazie danych to opcja znajduje się w osobnej tabeli. Posiłkując sie Vadamecum programisty z Heliona swtorzyłem sobie funkcję która tworzy mi koszyk na zkaupy a wygląda tak :

  1. function stworzKoszyk()
  2. {
  3. @$product = $_POST['product'];
  4. @$sides = $_POST['sides'];
  5.  
  6. if($product)
  7. {
  8. if(!isset($_SESSION['koszyk']))
  9. {
  10. $_SESSION['koszyk'] = array();
  11. $_SESSION['produkty'] = 0;
  12. $_SESSION['warotsc'] = '0.00';
  13. }
  14.  
  15. if(isset($_SESSION['koszyk'][$product]))
  16. {
  17. $_SESSION['koszyk'][$product]++;
  18. }
  19. else
  20. {
  21. echo '<div class="return_information_correct">';
  22. echo '<img src="/gfx/correct_ico.png" id="info_ico">';
  23. echo '<span>Pozycja dodana do koszyka</span>';
  24. echo '</div>';
  25. $_SESSION['koszyk'][$product] = 1;
  26. }
  27. $_SESSION['wartosc'] = obliczWartosc(@$_SESSION['koszyk']);
  28. $_SESSION['produkty'] = obliczProdukty(@$_SESSION['koszyk']);
  29.  
  30. }
  31.  
  32. if(isset($_POST['zapisz']))
  33. {
  34. foreach ($_SESSION['koszyk'] as $product => $ilosc) {
  35. if($_POST[$product] == '0')
  36. {
  37. unset($_SESSION['koszyk'][$product]);
  38. }
  39. else
  40. {
  41. $_SESSION['koszyk'][$product] = $_POST[$product];
  42. }
  43. }
  44. $_SESSION['wartosc'] = obliczWartosc(@$_SESSION['koszyk']);
  45. $_SESSION['produkty'] = obliczProdukty(@$_SESSION['koszyk']);
  46. }
  47.  
  48. if((@$_SESSION['koszyk']) && (array_count_values(@$_SESSION['koszyk'])))
  49. {
  50. pokazKoszyk($_SESSION['koszyk']);
  51. }
  52. else
  53. {
  54. echo '<div class="return_information">';
  55. echo '<img src="/gfx/incorrect_ico.png" id="info_ico">';
  56. echo '<span>Koszyk jest pusty</span>';
  57. echo '</div>';
  58. }
  59. }


udało mi się uzyskać połowiczny sukces tzn. stworzyłem pole hidden w formularzu, który przesyłał mi wartość opcji i przez co pokazywał poprawnie w koszyku. Jednak, kiedy chciałem przeliczyć koszyk nie było już wartości $_POST i wywalało błędy.

Czy może mi ktoś powiedzieć w jaki sposób zapisać poprawnie wartość z posta w sesji tak żeby później nie musieć jej przesyłam milion razy przy każdym przeliczeniu koszyka ?
nospor
Cytat
u bo znajdują się w tej samej tabeli przez co produkt w tej konkretnej konfiguracji to tak naprawdę wpis w bazie danych to opcja znajduje się w osobnej tabeli.
Nie ma znaczenia czy dana jest w tej samej tabeli czy nie. Jesli tylko jest powiązanie miedzy tabelami, to łaczysz jest przy pomocy JOIN i po sprawie. Nie ma sensu tych wartosci przesylac do pol ukrytych, skoro i tak wyliczenia robisz po stronie php
sQQuil


Właśnie nie jest powiązana, myslałem o tym jednak nie bardzo wiem jak to zrobić

jedna tabela jest wyłącznie tabelą produktowa :

ID, Nazwa, Opis, Zdjęcie ....

Druga tabela jest tabelką Opcji tego produktu a w niej

ID, nazwa opcji, cena opcji

generalnie potrzebuje zapisać do sesji ID opcji które jest wybierane podczas kupowania produktu tak, żeby potem jednym zapytaniem pobrać wszystkie dane produktu wraz z opcją obrobić i obliczyć.

Opcja jest przekazywana zmienną $side, pokazaną w moim pierwszym poście.
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.