Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sesja a tablica
Forum PHP.pl > Forum > Przedszkole
matyskiewicz
Witam,
Obecnie piszę koszyk do sklepu internetowego:
wchodzę w kategorię produktu i mam formularz:
  1. <form action="index.php?module=add" method="post">
  2. <input type="hidden" name="id" value="{$item.id}" /> //pobieram id produktu
  3. <input type="text" name="ilosc" value="1" /> //ilosc domyslna to 1 szt
  4. <input type="submit" value="dodaj do koszyka" />
  5. </form>

przesyłam to do funkcji która ma za zadanie dopisać do sesji tablice 2 wymiarową
  1. <?php
  2. $_SESSION['cart']= $cartArray[$zamId][$zamIlosc];
  3. ?>

Z pewnością popełniam gdzieś błąd, ponieważ albo nie zapisuje tablicy do sesji albo nie umiem jej wyświetlić (użyłem do tego funkcji print_r())

Może również przedstawię dalszą cześć mojego rozumowania:
1. zapisuje do tablicy wartość id i ilości, to przekazuje do sesji.
2. tablice dowolnie powiększam o kolejne towary
3. wchodząc do zawartości koszyka pobieram dane z tablicy i porównuję danymi z bazy danych

zastanawiam się również nad wprowadzeniem licznika, w celu późniejszej modyfikacji zamówienia (np zmiany ilości sztuk).

Proszę o wsparcie merytoryczne, oraz ewentualną pomoc w kodzie.
Pozdrawiam
sticker
a nie lepiej mieć coś w tablicy a nie pustą wartośc pod zestawem kluczy ?
  1. <?php
  2. $_SESSION['cart']= $cartArray[$zamId]= $zamIlosc;
  3. ?>
matyskiewicz
Głupi błąd... wstydnis.gif

Już wypełniam klucze lecz teraz inny problem się wkradł:
1. w tej chwili zamiast dodawać do tablicy aktualizuje ostatni wpis :/
  1. <?php
  2. function addToCart($zamId, $zamIlosc)
  3. {
  4.  
  5.    $_SESSION['cart'] = Array('item' => $item, 'id' => $zamId, 'ilosc' => $zamIlosc);
  6.    echo $_SESSION['cart']['item'];    
  7. }
  8. ?>

2. inkrementacja licznika:
  1. <?php
  2. function addToCart($zamId, $zamIlosc)
  3. {
  4.    $item = isset($_SESSION['cart']['item']) ? $_SESSION['cart']['item'] : null;
  5.    $item++;
  6.    
  7.    $_SESSION['cart'] = Array('item' => $item, 'id' => $zamId, 'ilosc' => $zamIlosc);
  8.    echo $_SESSION['cart']['item'];    
  9. }
  10. ?>
Gdzie popełniam błąd?
sticker
kod:
  1. <?php
  2. $_SESSION['cart'] = Array('item' => $item, 'id' => $zamId, 'ilosc' => $zamIlosc);
  3. ?>

jest rozumiany jako:
Weź tablice SESSION i znajdź w niej element który odpowiada kluczowi 'cart'. Wynikiem jest tablica:
Array('item' => $item, 'id' => $zamId, 'ilosc' => $zamIlosc);
Następnie wpisujesz w miejsce starej tablicy nową Array('item' => ++$item, 'id' => $zamId, 'ilosc' => $zamIlosc);


Żeby nie napisywac musisz zapisać je do innej zmiennej. Może przeorganizuj kod wg następującego wzoru:
  1. <?php
  2. $_SESSION['cart'][$item] = Array('id' => $zamId, 'ilosc' => $zamIlosc);
  3. ?>


W takim przypadku nie nadpiszesz sobie zmiennych
sidkoz
Widząc podobny temat mam pytanie ja w przeciwieństwie do kolegi chciałem sobie zastąpić taką całą tablice w sesji inną tablicą
Kod
if(isset($_POST['remember'])) {//jesli opcja jest zaznaczona
    $_SESSION['dane'] = $cookies;//ustawia wartosci
    $_SESSION['ilewierszy'] = $w_M2;//ustawia wiersze
    $_SESSION['ilekolumn'] = $k_M2;//ustawia kolumny
    }

za każdym razem gdy wcisnę przycisk zapamiętaj
singles
Jeśli Cię dobrze zrozumiałem, chcesz ustawić całą tablicę sesji na nowo z tamtymi wartościami. To będzie tak.
  1. <?php
  2. $_SESSION = array('dane' => $cookies, 'ilewierszy' => $w_M2, 'ilekolumn' => $k_M2);
  3. ?>
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.