[php] Tablice i sesja

0

Witam. Cały dzień męcze sie już nad zapisaniem tablicy do sesji..

Postać w jakim ją zapisuje wyglada tak:

produkty[0]['id'] = "37"
produkty[0]['wartosc'] = "123"

produkty[1]['id'] = "22"
produkty[1]['wartosc'] = "asd"

itd.

ustawiam to takim skryptem(oczywiscie wstawilem tylko część kodu):

for($i=0;$i<$ilosc_produktow;$i++)
{
  $nazwa_zmiennej_sesji = "produkty[".$i."]";	
  $_SESSION[$nazwa_zmiennej_sesji]['id'] = $id;		
  $_SESSION[$nazwa_zmiennej_sesji]['wartosc'] = $wartosc;	
}

I teraz gdy chce zrobić:
count($_SESSION['produkty']);
to mi to nie dziala...

najdziwniejsze że nawet isset($_SESSION['produkty']) nie działa

Nie mam pojęcia co jest nie tak, podejrzewam że to jakiś prosty błąd. Prosze o pomoc [glowa]

0
$produkty[0]['id'] = "37"
$produkty[0]['wartosc'] = "123"

$produkty[1]['id'] = "22"
$produkty[1]['wartosc'] = "asd"
foreach($produkty as $key => $produkt){
  $nazwa_zmiennej_sesji = "produkty[".$key."]";       
  $_SESSION[$nazwa_zmiennej_sesji]['id'] =  $produkt['id'];               
  $_SESSION[$nazwa_zmiennej_sesji]['wartosc'] =  $produkt['wartosc']; 
}

??

0

No dzięki, tak powinno działać, tylko pytanie jak sprawdzić czy tablica PRODUKTY w ogóle jest zapisana w sesji. Bo nie chce sprawdzac kazdego pola tzn:

isset($_SESSION('produkty[0]')

aha i jeszcze pytanie czy jest jakaś funkcja która z takiej tablicy wyciągnie mi ilość elementów tzn. jeśli mam

$produkty[0]['id'] = "37"
$produkty[0]['wartosc'] = "123"

$produkty[1]['id'] = "22"
$produkty[1]['wartosc'] = "asd"

to wynikiem funkcji będzie 2(czyli dwa elementy [0] i [1])?

tak samo jak bym zrobil count ale dla tablicy niewielowymiarowej

0

Czemu zapisujesz pod kluczami "produkty[0]", "produkty[1]", jeśli można zapisać jedną tablicę pod kluczem "produkty"?

$_SESSION['produkty'][$i']['...']

wtedy cały foreach nie jest potrzebny.

0

No opanowałem to.

Tylko pytanie

dlaczego jak zrobie taki kod to wyskakuje mi błąd
"Cannot use string offset as an array"

$_SESSION['produkty'][$i]['id'] = $id;

a jak zrobie tak

$sesja[$i] = array('id'=>$id);
$_SESSION['produkty'] = $sesja;

to wszystko jest OK?

0

strzelam, że na starcie (lub po wczesniejszych zabawach) w $_SESSION['produkty'] lub $_SESSION['produkty'][$i] jest jakiś string.

1 użytkowników online, w tym zalogowanych: 0, gości: 1