Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Zapisywanie tablicy w sesji
Forum PHP.pl > Forum > Przedszkole
ensim
Witam, mam problem z zapisaniem tablicy do zmiennej sesyjnej.
Na głównej stronie na samej górze inicjalizuję sobie ziemnną sesyjną która jest tablicą:

$_SESSION['mainBasket'] = array();

Z jakiejś podstrony wysyłam tablicę elementów 'zarejestrujStrony[]' i wrzucam za pomocą array_push:

array_push($_SESSION['mainBasket'], $zarejestrujStrony[0], $zarejestrujStrony[1]);

Pod array pushem sprawdzam sobie co zawiera $_SESSION['mainBasket'];

print_r($_SESSION['mainBasket'];

Niby wszystko do tej pory jest ok, teoretycznie mainBasket jest sesją więc dane powinny w niej siedzieć, ale tak nie jest :-/ Jak kliknę sobie w pasku adresu i dam Enter, nie F5 (nie chcę żeby znowu POST wysyłał dane, a jedynie print_r wyswietlił obecnie istniejące) to niestety print_r zwraca mi array(); zamiast np:
[0] => 'cos.pl', [1] => 'nic.pl'. Tak jakby z jakiegoś powodu array_push dodawał te wartości do zmiennej sesyjnej ale po odświezeniu już ich tam nie ma ;(
230005
Może to banalne pytanie, ale wiele było podobnych problemów na forum, więc je zadam: czy na każdej stronie masz session_start() snitch.gif?
Gryf
przecież wchodząc na główną stronę za każdym razem czyścisz koszyk przez
$_SESSION['mainBasket'] = array();
ensim
Dzięki faktycznie czyściło to koszyk, dałem !isset i jest ok.

ale kolejny podobny problem, po dodaniu do tablicy mainBasket pozycji, robię unset($_POST['zarejestrujStrony']) niestety jak ktoś da sobie F5, to te same pozycje powielają się w $_SESSION['mainBasket'] da się to jakoś obejść?
franki01
Jeżeli ktoś dodaje coś do koszyka, zrób
  1. header('Location: '.$_SERVER['REQUEST_URI']);
  2. exit();

Przekieruje to na stronę o tym samym adresie, ale nie będzie możliwości odświeżenia. Jeżeli masz informację typu "Dodano do koszyka", to zapisz ją w sesji:
  1. $_SESSION['response'] = 'Dodano do koszyka';
  2. header('Location: '.$_SERVER['REQUEST_URI']);
  3. exit();

A potem już po przeładowaniu strony:
  1. if(isset($_SESSION['response']) echo '<div>'.$_SESSION['response'].'</div>';
  2. $_SESSION['response'] = null;
ensim
Dzięki wielkie smile.gif
Nie wyświetlam żadnych informacji więc 1 rozwiązanie w zupełności wystarcza:)
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.