Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zmienne sesji
Forum PHP.pl > Forum > Przedszkole
krzysiek_raven
Witam.

Robie sklep internetowy i mam problem z koszykiem. Koszyk chce oprzeć na sesjach. I chciałbym przechowywać takie wartości w zmiennej sesyjnej: lista towarów dodanych do koszyka, ilość towaru w koszyku, wartość zamówienia i całkowita ilość.
Normalnie zrobił bym tablice dwuwymiaową, która miała by w pierwszej kolumnie numerID towaru a w drugiej ilość tych towarów. Nie potrafie jednak zapisać tego za pomocą zmiennej sesji... Może jest jakiś łatwiejszy sposób na to, a może ktoś pomógł by mi zapisać to w tablicy 2D?
Obecnie mam coś takiego:
  1. <?php
  2. if ($op == 'koszyk'){ // obsługa sesji dla koszyka
  3.  require('tresc/funkcjeKoszyka.php'); // funkcje operujące na sesji koszyka
  4.  
  5.  
  6.  $towID = $_GET['towID'];
  7.  
  8.  if ($towID){ // gdy dodajemy towar do koszyka
  9. if (!isset($_SESSION['towary'])){ // gdy nie ma sesji
  10.  $_SESSION['towary'] = array();
  11.  $_SESSION['ilosc'] = array();
  12.  $_SESSION['calkowita_ilosc'] = 0;
  13.  $_SESSION['calkowita_wartosc'] = 0;
  14. }
  15. if (isset($_SESSION['towary'])){ // gdy jest sesja
  16.  //if (isset($_SESSION['towary'][$towID])) // gdy jest w koszyku
  17.  
  18.  $_SESSION['towary'][] = $towID; // dodajemy towar na końcu tablicy
  19. }
  20.  }
  21.  else{ // gdy wyświetlamy koszyk
  22.  
  23.  }
  24. }
  25. ?>

ale jak mam towary i ilość towarów w oddzielnych tablicach to nie bardzo jest wiadomo, która ilość do którego towaru... Ma ktoś jakiś pomysł jak to zrobic??

Z góry dzięki za pomoc.
Cezar708
Proponuję wydzielić tablice specjlnie na koszyk, ja nazwę ją `koszyk` tongue.gif

  1. <?php
  2. // wrzucanie do koszyka, towaru, którego id jest w zmeinnej $idTowaru
  3. if ( isset($_SESSION['koszyk'][$idTowaru]) ){
  4. // jesli juz taki towar kupowany byl to:
  5. $_SESSION['koszyk'][$idTowaru] ++;
  6. } else {
  7. // jesli nie byl kupowany to:
  8. $_SESSION['koszyk'][$idTowaru] = 1;
  9. }
  10.  
  11. // wyswietlanie zawartosci koszyka:
  12. foreach ( $_SESSION['koszyk'] as $idTowaru => $liczba ){
  13. echo "towar $idTowaru jest w $liczba egzemplarzu(ach)";
  14. }
  15. ?>
krzysiek_raven
Dzieki za pomoc!
Ale jeszcze jak byś mógł mi wytłumaczyć co sie dzieje w tej instrukcji:
  1. <?php
  2. $_SESSION['koszyk'][$idTowaru] ++;
  3. ?>

i w pętli to:
  1. <?php
  2. $_SESSION['koszyk'] as $idTowaru => $liczba
  3. ?>

bo php ucze sie od niedawna i nie kapuje jeszcze niektórych sztuczek;)
drPayton
1. Inkrementacja = zwiększenie wartości o jeden
  1. <?php
  2. $wynik++;
  3. // To to samo co:
  4. $wynik = $wynik + 1;
  5. ?>


2. "Jedziesz" pętlą po tablicy biorąc zarówno klucze jak i wartości:
  1. <?php
  2. $tablica = array(
  3. 'klucz1' => 'wartosc1',
  4. 'klucz2' => 'wartosc2',
  5. 'klucz3' => 'wartosc3',
  6. 'klucz4' => 'wartosc4'
  7. );
  8.  
  9. foreach($tablica AS $element) {
  10. echo $element; // dostaniesz 'wartosc1' w pierwszym obiegu, 'wartosc2' w drugim etc
  11. }
  12. foreach($tablica AS $key => $value) {
  13. echo 'Pod kluczem' . $key . ' jest wartość ' . $value; // 'Pod kluczem klucz1 jest wartość wartosc1' w pierwszym obiegu pętli, 'Pod kluczem klucz2 jest wartość wartosc2' w drugim etc
  14. }
  15. ?>


Innymi słowy dostajesz dostęp nie tylko do wartości ale i do kluczy tablicy.

Pozdrawiam!
krzysiek_raven
Ok dzieki, z pętlą już rozumiem! Inkrementacje niby też, ale jak odnieść to do tego przypadku

  1. <?php
  2. $_SESSION['koszyk'][$idTowaru] ++;
  3. ?>


Bo w tablicy 'koszyk' są numery ID towaru, a ++ powoduje zwiększenie ilości tych towarów? Bo wygląda to jakby numerID był zwiększny o 1 winksmiley.jpg
drPayton
Nie nie, idTowaru to klucz, a inkrementujesz tutaj wartość pod tym kluczem - czyli ilość towaru o danym id.
krzysiek_raven
Acha, dzięki za wyjaśnienia, już teraz wszystko jasne.
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.