több dimenziós session tömböl eltünik az adat
Szevasztok..
Van egy weblapom amiben egy táblázat adatait SESSION tömbökben tárolom..
$_SESSION["1"]["type"] formában ahol az első dimenzió a sor száma, a második pedig az adott oszlop neve.
egy linket nyomogatva lehet létrehozni új sorokat, amikoris métrehozom az új session tömböt aminek minden dimenziójénak null értéket adok.
ha rákatintok az egyik sorra akkor tudom módosítani az aktuális sor adatait egy form-on keresztül. amikor elküldöm az adatokat akkor elöször az adatok eltárolódnak a session tömb megvelelő dimenzióiban, majd megint kilistázza a z adatokat (lsd. lejebb)
A gond az hogy amikor a listázás megtörténik még látom az előzöleg felvitt adatokat, amiket a már lemetet session tömböl nyerek vissza, viszont ezután akármit csinálok (új sor, másik sor adatmódosítása, vagy akár egy másik menüre kattintok...) minden elözőleg felvitt adat eltünik a dimenziókból.. viszont meguk a SESSION-nok megmaradnak mert a sorok nem tünnek el.. szóval maga a $_SESSION["1"]["type"] mint változó megmarad, csak a tartalma tünik el...
ha tudtok plz segítsetek mert már 3 hete itt vagyunk elakadva :(
jah olvastam olyanról hogy a sessionok csak akkor mentődnek ténylegessen el ha lefut az adott script de ez megtörténik, ill biztos ami biztos beraktam session_write_close-t de ez sem segítet...
jah és itt a kód:bye Tomi
■ Van egy weblapom amiben egy táblázat adatait SESSION tömbökben tárolom..
$_SESSION["1"]["type"] formában ahol az első dimenzió a sor száma, a második pedig az adott oszlop neve.
egy linket nyomogatva lehet létrehozni új sorokat, amikoris métrehozom az új session tömböt aminek minden dimenziójénak null értéket adok.
ha rákatintok az egyik sorra akkor tudom módosítani az aktuális sor adatait egy form-on keresztül. amikor elküldöm az adatokat akkor elöször az adatok eltárolódnak a session tömb megvelelő dimenzióiban, majd megint kilistázza a z adatokat (lsd. lejebb)
A gond az hogy amikor a listázás megtörténik még látom az előzöleg felvitt adatokat, amiket a már lemetet session tömböl nyerek vissza, viszont ezután akármit csinálok (új sor, másik sor adatmódosítása, vagy akár egy másik menüre kattintok...) minden elözőleg felvitt adat eltünik a dimenziókból.. viszont meguk a SESSION-nok megmaradnak mert a sorok nem tünnek el.. szóval maga a $_SESSION["1"]["type"] mint változó megmarad, csak a tartalma tünik el...
ha tudtok plz segítsetek mert már 3 hete itt vagyunk elakadva :(
jah olvastam olyanról hogy a sessionok csak akkor mentődnek ténylegessen el ha lefut az adott script de ez megtörténik, ill biztos ami biztos beraktam session_write_close-t de ez sem segítet...
jah és itt a kód:
if (isset($_POST["details"])) {
$id2 = $_POST["details"];
$_SESSION[$id2]["type"] = $_POST["type"];
$_SESSION[$id2]["pagename"] = $_POST["pagename"];
$_SESSION[$id2]["codename"] = $_POST["codename"];
$_SESSION[$id2]["value"] = $_POST["value"];
session_write_close();
print "valami".session_cache_expire();
$_SESSION["tomi"] = "valami";
}
if (!isset($_SESSION["db"])) {
$_SESSION["db"] = 0;
}
if (isset($_GET["funct"])) {
$testarr = explode("-", $_GET["funct"]);
hely_csere($testarr[0], $testarr[1]);
}
if (isset($_GET["f_in"])) {
f_insert($_GET["f_in"]);
}
if (isset($_GET["f_add"])) {
f_add();
}
if (isset($_GET["f_del"])) {
f_del($_GET["f_del"]);
}
for($i=1; $i<=$_SESSION["db"]; $i++){
$fel = $i-1;
$le = $i+1;
print "
<tr class=\"".$szin."\">
<td height=\"15\"><a href=\"".$PHP_SELF."?page=details&id=".$i."\">".$i."</a></td>
<td><a href=\"".$PHP_SELF."?page=modul1_2&f_in=".$i."\">O</a></td>
<td>";
if ($fel>0) {//fel
print "<a href=\"".$PHP_SELF."?page=modul1_2&funct=".$i."-".$fel."\"><</a>";
} else {print "<span class=\"disabled\"><</span>";}
print "</td><td>";
if ($_SESSION["db"]>=$le) {
print "<a href=\"".$PHP_SELF."?page=modul1_2&funct=".$i."-".$le."\">></a>"; //le
} else {print "<span class=\"disabled\">></span>";}
print "</td>
<td><a href=\"".$PHP_SELF."?page=modul1_2&f_del=".$i."\">X</a></td>
<td>";
switch($_SESSION[$i]["type"]){
case "text" : print "Text Field"; break;
case "hidden" : print "Hidden Field"; break;
case "textarea" : print "Textarea"; break;
case "checkbox" : print "Checkbox"; break;
case "radio" : print "Radio Group"; break;
case "select" : print "Select/Menu"; break;
case "file" : print "File Field"; break;
case "submit" : print "Submit Button"; break;
case "reset" : print "Reset Button"; break;
case "button" : print "Button"; break;
default: print "N/A"; break;
} // switch
print "</td>
<td>".$_SESSION[$i]["pagename"]."</td>
<td>".$_SESSION[$i]["codename"]."</td>
<td>".$_SESSION[$i]["value"]."</td>
</tr>";
if ($szin == "lightgray") {
$szin="darkgray";
}
else{
$szin="lightgray";
}
}
Hmm...lehet, hogy még nem
Ha félreértettem valamit, akkor bocsánat, és akkor kérnék még egy kis magyarázatot, de ez így nekem eléggé furcsa.
Azt az előbb még kifelejtettem, hogy ha így van, akkor a $id2 = $_GET["id"] kéne, hogy legyen.
Ja, és ha esetleg mégsem így van, akkor megmutathatnád azt a kódrészletet is, ahonnan POST-olsz. (Lassan olyan lesz a hozzászólásom, mint egy folytatásos regény... ;))
Az egy hidden field... :)
a lényeg az hogy mikor a details.php elküldi a POST tömbbe a cuccait, akkor az aktuális pl: session['1']['type'] tömbben eltárolódnak az adatok (az 1es jeln esetben az második sor ) , ezt a letárolást végzi az első hozzászólásomban lévő
várom a további ötleteket.. jah és bocsi hogy ilyen későn reagáltam, de csak most jutottam géphez...
bye Tomi
Numerikus index
$_SESSION["admin"][1]["stb"]
Eddig azt hittem, hogy csak helyi jelenség, de ezek szerint más is belefutott már. Esetleg probáld meg stringként indexelni:
$_SESSION["1"]...
Lehet, hogy a hiba máshol van és ez csak tüneti kezelés, de működik és nem törődtem vele többet.
üldözlek a sírig :)
Nagyon szépen köszönöm a segítséget.
bye Tomi