Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Koszyk zakupowy dla nie zalogowanych
Forum PHP.pl > Forum > Przedszkole
pawel06281990
Witam,

Tworze koszyk dla nie zalogowanych użytkowników na sesjach wszystko pięknie działa ale jak wyjdę z koszyka to towaru nie ma w koszyku jak mam zrobić żeby dane były w koszu tak wygląda mój skrypt w koszyku.

  1. if(!isset($_SESSION['koszyk'])) $_SESSION['koszyk']=array(); //sprawdzam czy jest koszyk
  2. echo'<div class="card-header">
  3. <h3 class="card-title">'.__('Twoje wybrane produkty:','opieka').'</h3>
  4.  
  5. </div>
  6. <div class="card-body">';
  7.  
  8. if(isset($_POST['numer_zamowienia'])){
  9. $tmp=array('podglad_nazwa'=>$_POST['podglad_nazwa'],'podglad_czas_palenia'=>$_POST['podglad_czas_palenia'], 'podglad_ilosc'=> $_POST['podglad_ilosc'],'podglad_cena'=>$_POST['podglad_cena'] );
  10.  
  11. if(array_key_exists($_POST['numer_zamowienia'], $_SESSION['koszyk'])){
  12. echo 'Istnieje już w koszyku gra o podanym id'.'<br>';
  13. }else {
  14. $_SESSION['koszyk'][$_POST['numer_zamowienia']]=$tmp;
  15. }
  16. }
  17.  
  18. foreach ($_SESSION['koszyk'] as $sub => $key)
  19. echo 'identyfikator gry: '.$sub.' nazwa: '.$key['podglad_nazwa'].' ilosc: '.$key['podglad_ilosc'].'<font color="red">'.' cena: '.'</font>'.$key['podglad_cena'].'';
  20.  
  21.  
  22.  
  23. //zliczam ile zostało produktów w koszyku
  24. foreach ($_SESSION['koszyk'] as $sub => $key){
  25. $iloscproduktow++;
  26. }
  27.  
  28. // obliczam sumę produktów
  29. $suma=0;
  30. foreach ($_SESSION['koszyk'] as $sub => $key);
  31. echo 'Łączna suma do zapłaty: ';
  32. $format_suma = number_format($key['podglad_ilosc']*$key['podglad_cena'], 2, '.', '');
  33. echo $format_suma.'<br>';
  34. echo 'Ilość produktów w koszyku: ';
  35.  
  36. if($iloscproduktow==0){
  37. echo 'brak produktów'.'<br>';
  38. $_SESSION['podglad_ilosc']=$iloscproduktow;
  39. }else{
  40. echo $iloscproduktow;
  41. $_SESSION['podglad_ilosc']=$iloscproduktow;
  42. }


Proszę o pomoc bo nie wiem co dalej zrobić ze by użytkownik nie zalogowany jak wejdzie i doda towar do koszyka i chce robić dalej zakupy żeby ten towar był w koszyku.

z góry dziękuję za pomoc
lolson
Witam serdecznie,
"jak wyjdę z koszyka to towaru nie ma" - nie wiem co to oznacza?
To bardzo ważne, bowiem dane zapisujesz w sesji. Sesja jest "powiązana" z przeglądarką do momentu jej zamknięcia - nie zamknięcia zakładki! Innymi słowy póki nie zamkniesz przeglądarki możesz korzystać z danych w sesji - session_start(). Kiedy zamkniesz przeglądarkę do danych już nie masz dostępu - powstaje inna, nowa sesja. Może umieszczaj produkty w ciastku/storeag'u po stronie klienta?

Pozdrawiam
Maciej
Tomplus
@pawel06281990
Sprawdź czy nie gdzieś nie tworzysz nowej sesji na stronie.

Zrób sobie jakiś plik logów, albo zapisuj do bazy danych czynności jakie dzieją się na stronie.
Dowiesz się w jakim momencie ginie koszyk.
pawel06281990
Koszyk znika ja odświeżę stronę koszyka lub jak z niego wyjdę
gino
dzieje się tak dlatego, że do koszyka przypisujesz ciągle zmienne z tablicy $_POST, które giną po zamknięciu strony koszyka, albo przy odświeżeniu strony przez kliknięcie w adres (nie powinno się to dziać po kliknięciu w odśwież).
Plik koszyk.php rozbij na dwa pliki: pierwszy do którego prowadzi formularz a w nim:

Kod
session_start();
if(!isset($_SESSION['koszyk'])) $_SESSION['koszyk']=array();        //sprawdzam czy jest koszyk @ nie wiem gdzie wrzucasz go wcześniej questionmark.gif
if(isset($_POST['numer_zamowienia'])){
$tmp=array('podglad_nazwa'=>$_POST['podglad_nazwa'],'podglad_czas_palenia'=>$_POST['podglad_czas_palenia'], 'podglad_ilosc'=> $_POST['podglad_ilosc'],'podglad_cena'=>$_POST['podglad_cena'] );

if(array_key_exists($_POST['numer_zamowienia'], $_SESSION['koszyk'])){
echo 'Istnieje już w koszyku gra o podanym id'.'<br>';
}else {
$_SESSION['koszyk'][$_POST['numer_zamowienia']]=$tmp;
}
}
headre("location:koszyk.php");


oraz drugi plik koszyk.php z pozostała resztą twojego kodu, oprócz tego co wyciąłem.

@lolson
Cytat
Sesja jest "powiązana" z przeglądarką do momentu jej zamknięcia - nie zamknięcia zakładki! Innymi słowy póki nie zamkniesz przeglądarki możesz korzystać z danych w sesji - session_start().....

Jesteś pewien tego co napisałeś? To zrób sobie mały eksperyment: zaloguj się do forum.php.pl, zamknij przeglądarkę i otwórz ją na nowo. Możesz się zdziwić.

emillo91
A może masz gdzieś sprawdzanie po drodze, czy użytkownik nie jest zalogowany i robisz session_destroy()?
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.