Avatar
user
Redaktor
Avatar
user:

Zdravím,
bohužel mám opět problém :(
mohli byste mi s ním pomoci?
při zpracování formuláře ukládám textový řetězec do pole, jeho index je ten samý textový řetězec bez diakritiky. (Při každém zpracování formuláře se do pole přidá záznam s textovým řetězcem) Poté pole vložím do sessions a přes něj přistupuji k poli...

//zpracování formuláře

$jmena = array();
$_SESSION["zaznam_jmen"] = $jmena;

$name_s_diakritikou = ucfirst($_POST["name_kategory"]);
          $name_bez_diakritiky = bez_DK($_POST["name_kategory"]);
          $jmena[$name_bez_diakritiky] = $name_s_diakritikou;

// poté někde jinde vypisuji určitou hodnotu pole podle indexu
// $nazev = textový řetězec bez diakritiky

echo "<li><a href=\"index.php?gal=$nazev\">".$_SESSION['zaznam_jmen'][$nazev]."</a></li>";

Problém je v tom, že při každém zavolání zpracování formuláře nový textový řetězec přepíše ten starý... (potřebuji aby hodnoty byli uloženy v poli trvale, takže nemohu zapisovat přímo to sessions)

 
Odpovědět 29.4.2012 21:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

A co kutíš, nebyla by lepší databáze? Do session můžeš uložit přeci cokoli, tedy i pole a potom to do děj přidávat, PHP má něco jako array_append nebo to snad jde i jako $pole[] = ... (teď si nejsem jistý).

Nahoru Odpovědět 29.4.2012 22:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
user
Redaktor
Avatar
user:

dělám takovou malou osobní galerii takže databáze by lepší určitě byla. Když už bych se do ní pouštěl tak by bylo záhodno tu galerii předělat na "databázovou" tzn.: většinu předělat. Jelikož to mám skoro hotový a přál bych si to už dodělat, tak jsem se uchýlil k uložení dat do pole.( Na databázový systém to předělám určitě někdy v budoucnu.) No ale k problému... Nemám problém uložit něco do sessions, špatně si mě pochopil, nebo spíše jsem se blbě vyjádřil :)
Pokud uložím hned pole do sessions a budu do něj přidávat další záznamy tak mi v tom poli ty záznamy vydrží jen do zavření prohlížeče... Já potřebuji aby tam byli furt. Tzn. ukládat řetězce s jejich indexy do pole a až pak jako výsledné pole "vložit" do sessions (pro dostupnost všude). Než jsem sem psal udělal jsem tohle:

if(!isset($_SESSION["zaznam_jmen"])) {
    $_SESSION["zaznam_jmen"] = array();
}

$name_s_diakritikou = ucfirst($_POST["name_kategory"]);
          $name_bez_diakritiky = bez_DK($_POST["name_kategory"]);
          $_SESSION["zaznam_jmen"][$name_bez_diakritiky] = $name_s_diakritikou;


// výpis hodnoty pole
echo "<li><a href=\"index.php?gal=$nazev\">".$_SESSION['zaznam_jmen'][$nazev]."</a></li>";

teď to funguje ale právě jen do doby než zavřu prohlížeč, což je jasný...

V kódu prvního příspěvku jsem se to snažil udělat tak aby data v poli zůstala "furt". Výsledkem ale bylo že se data neustále v poli přepisovala... Právě s tímhle si nevím rady, nechápu proč se přepisují...

 
Nahoru Odpovědět 29.4.2012 23:16
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

Session je vázána na jednotlivé uživatele a po zavření prohlížeče o relaci přijdeš, takhle prostě funguje, nic s tím nenaděláš. Není to nějaké globální pole na serveru, je to pole pro jednu otevřenou relaci s jedním uživatelem a jeho prihlížečem, který když zavře, zmizí.

Nahoru Odpovědět 29.4.2012 23:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na user
Kit:

Session je dočasná proměnná (resp. pole), která je určena k dočasnému uchování informace o přihlášeném uživateli. Její životnost je obvykle nastavena na 25 minut, ale je možné ji zkrátit.

Na ukládání permanentních dat se vůbec nehodí už kvůli tomu, že každý návštěvník má svou vlastní session. Obvykle se do ní ukládá jen číslo přihlášeného uživatele plus nějaká ochrana proti odcizení.

Permanentní data patří do databáze.

Nahoru Odpovědět 30.4.2012 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.