[ vatri @ 12.08.2009. 12:43 ] @
Da li je uopste moguce u PHP 5 cuvati multi dim. niz u sessiju?

Kod mene je slucaj ovako:

imam index.php na kojoj imam Ajax skriptu koja zove stranu rezultati.php sa sledecim formatom "query string-a"

rezultati.php?pitanje=3&vrijeme=5&daljina=14

Zatim taj query uzimam:
Code:

$pitanje = $_GET['pitanje'];
$vrijeme = $_GET['vrijeme'];
$daljine = $_GET['daljina'];


i onda trebam to sacuvat u sesiju, a to sam ovako pokusao:

Code:

$_SESSION[$pitanje]['vrijeme'] = $vrijeme;
$_SESSION[$pitanje]['daljina'] = $daljina;


Kad uradim var_dump $_SESSION varijable na index.php strani, ispise array(0) (ili kako vec).

Pokusao sam sacuvati podatke u klasicni niz $_SESSION['vrijeme'] = $vrijeme; i tada mi var_dump vrati pravilan niz.

Molim vas za pomoc i ako nisam nesto jasno napisao recite da objasnim bolje.

Hvala unapred!

[ Man-Wolf @ 12.08.2009. 13:27 ] @
Citat:
vatri: Da li je uopste moguce u PHP 5 cuvati multi dim. niz u sessiju?


Naravno. $_SESSION i jeste najobicniji niz, samo sto je svuda vidljiv (Super-Global) ...

Elem:

Code:

$pitanje = 1;
$vrijeme = 2;
$daljina = 3;

$_SESSION[$pitanje]['vrijeme'] = $vrijeme;
$_SESSION[$pitanje]['daljina'] = $daljina;

print_r($_SESSION);

//Array
//(
//    [1] => Array
//        (
//            [vrijeme] => 2
//            [daljina] => 
//        )
//)


Btw, primeti da si definisao promenljivu:
Code:

$daljine = ....; // daljinE


A onda si pisao:

Code:

$_SESSION[$pitanje]['daljina'] = $daljina; // daljinA

[ Nikola Poša @ 12.08.2009. 13:56 ] @
Citat:
vatri: Da li je uopste moguce u PHP 5 cuvati multi dim. niz u sessiju?

Čak je i preporučljivo, jer na taj način možeš da praviš neke svoje namespace-ove u okviru sesije, kako bi izbegao moguće kolizije.
[ Miroslav Ćurčić @ 12.08.2009. 14:11 ] @
Možda će ti biti lakše da ga spakuješ sa serialize() pre toga ?
[ Nikola Poša @ 12.08.2009. 14:31 ] @
Proveri i da slučajno za metod slanja tog AJAX zahteva nisi stavio POST, jer bi onda te promenljive u handler-u dohvatao iz $_POST, a ne iz $_GET.

A i nadam se da si negde startovao sesiju (session_start()), jer i to ljudi često zaboravljaju...
[ vatri @ 12.08.2009. 15:06 ] @
Sa Ajaxom i imenom varijabli je 100% u redu. session_start() se nalazi na pocetku i index.php i rezultati.php.

Nakon koda gdje se pune varijable
Code:

$_SESSION[$pitanje]['vrijeme'] = $vrijeme 
....


... sam stavio var_dump($_SESSION) i tu se pravilno ispise. To se izvrsava znaci u okviru ajax-a u skripti rezultati.php i taj var dump se ispisuje u index.php.
Medjutim nize tog div-a gdje se prikazuje ajax responsetext sam isto stavio taj var_dump, ali tu je samo prazan array.

Kao da mi ne radi na indexu sesija..

Miroslav: prije cega da uradim serialize, prije var_dump? Sta mi to znaci?
[ japan @ 12.08.2009. 15:23 ] @
ako sam dobro shvatio, ti ocekujes da ti var_dump ispise sadrzaj varijable na strani koja se renderuje pre nego sto se pozove ajax, koji puni varijablu?
[ vatri @ 12.08.2009. 16:19 ] @
Tako nekako...
U pitanju je neki kviz: na prvom pitanju je normalno da ispise prazan array jer nije jos 'popunjena' sesija. Kada se odgovori na pitanje ajax salje podatke u rezultati.php koji treba to sacuvat u sesiju. Na sledecem pitanju ne bi trebalo da je prazan array.

Kao sto sam vec rekao, kada radim sa normalnim (jednodimenzionalnim) nizom radi dobro, ali kad pokusam multi dim, ne.
[ vatri @ 12.08.2009. 16:40 ] @
Evo sad sam testirao samo stranu rezultati.php, a evo koda da ne pricamo napamet:

Code:


<?php
session_start();
$referer = $_SERVER['HTTP_REFERER'];
$host = $_SERVER['HTTP_HOST'];

$pitanje_br = $_GET['pitanje'];
$vrijeme = $_GET['vrijeme'];
$daljina = $_GET['daljina'];

if(isset($pitanje_br,$vrijeme,$daljina)){
    $_SESSION[$pitanje_br] = array('vrijeme'=> "$vrijeme", 'daljina'=> "$daljina");
}
var_dump($_SESSION);
?>



Evo recimo u ovom slucaju:
ako upisem u url:

rezultati.php?pitanje=1&vrijeme=3&daljina=10

ispise sledece:

array(1) { [1]=> array(2) { ["vrijeme"]=> string(1) "3" ["daljina"]=> string(2) "10" } }

I nakon toga upisem samo rezultati.php vrati: array(0) { }

Znaci uopste ne sacuva sesiju
[ Tudfa @ 12.08.2009. 17:30 ] @
Probaj ovako da stavis:

Code:
<?php
session_start();
$referer = $_SERVER['HTTP_REFERER'];
$host = $_SERVER['HTTP_HOST'];

$pitanje_br = $_GET['pitanje'];
$vrijeme = $_GET['vrijeme'];
$daljina = $_GET['daljina'];

if(isset($pitanje_br,$vrijeme,$daljina)){
 //ovaj red sam izmenio da ti kljuc bude 'q1' umesto '1'
    $_SESSION['q'.$pitanje_br] = array('vrijeme'=> "$vrijeme", 'daljina'=> "$daljina");
}
var_dump($_SESSION);
?>


A jel si ukljucio error_reporting, jel se tu buni ? Ako nisi, stavi error_reporting(E_ALL | E_STRICT) dok traje razvojna faza.
[ vatri @ 12.08.2009. 17:56 ] @
Tudfa svaka cast, upravo to je rjesilo problem. Ocigledno se broj ne moze stavit kao kljuc :s

Kad sam ukljucio error reporting, ispisalo je ovo:

"Notice: Unknown: Skipping numeric key 1. in Unknown on line 0"

Hvala puno svima na trudu!