Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] zmienne sesji
krzysiek_raven
post 6.12.2007, 16:15:17
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 28.09.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował krzysiek_raven 6.12.2007, 16:16:08
Go to the top of the page
+Quote Post
Cezar708
post 6.12.2007, 16:23:04
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
krzysiek_raven
post 6.12.2007, 16:39:47
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 28.09.2007

Ostrzeżenie: (0%)
-----


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;)
Go to the top of the page
+Quote Post
drPayton
post 6.12.2007, 16:47:50
Post #4





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
krzysiek_raven
post 6.12.2007, 17:01:09
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 28.09.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował krzysiek_raven 6.12.2007, 17:01:38
Go to the top of the page
+Quote Post
drPayton
post 6.12.2007, 17:03:54
Post #6





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Nie nie, idTowaru to klucz, a inkrementujesz tutaj wartość pod tym kluczem - czyli ilość towaru o danym id.
Go to the top of the page
+Quote Post
krzysiek_raven
post 6.12.2007, 17:08:12
Post #7





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 28.09.2007

Ostrzeżenie: (0%)
-----


Acha, dzięki za wyjaśnienia, już teraz wszystko jasne.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 2.07.2025 - 11:01