IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: php nový záznam do pole

Aktivity
Avatar
user
Tvůrce
Avatar
user:29.4.2012 21:26

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 Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:29.4.2012 22:02

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
New kid back on the block with a R.I.P
Avatar
user
Tvůrce
Avatar
user:29.4.2012 23:16

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 Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:29.4.2012 23:26

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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na user
Kit:30.4.2012 8:54

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.