Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP objektování

Dobrý den,

začal jsem se učit objekty a zajímá mě téma "udržení vlastností během chodu stránky". Potřebuji po objektu, aby si stále pamatoval údaje z tabulky (abych to nemusel neustále zapisovat do databáze) i když se na něco klikne.

Konkrétně:

class vykreslit_hdd_tabulku{

  public $HDD_pole = array(50);

... funkce...

Zde si tedy vytvořím pole, jež po prvním proběhnutí stránky bude mít na indexech aktuální status tlačítka... Např:

$HDD_pole[1] = "OK"
$HDD_pole[2] = "DM"
$HDD_pole[3] = "LS"

Logika je zhruba takováto:

první načtení stránky -> získání statusu z databáze, vykreslení tlačítek podle statusu, uložení aktuálního statusu do $HDD_pole.

kliknutí na změnu statusu -> změna statusu $HDD_pole[$ID] = aktualni_status -> vykreslení tlačítek podle statusu. Níže je právě ošetření změny statusu

  for ($pomocna = 1; $pomocna<= $_SESSION["Count_rows"]; $pomocna++){
  
    if ($_POST["Damaged"] == $pomocna . "_DM"){ $hdd_table->HDD_pole[$pomocna] = "DM"; }
  
  }

Stránka se načte, tlačítko na které kliknu opravdu změní status tak, jak potřebuji, ale jakmile kliknu kamkoli jinam tak už jsou všechny hodnoty $HDD_pole zapomenuty. Což dává smysl, nicméně bych potřeboval, aby se mi v $HDD_pole udržel status tak, jako je to třeba u $_SESSION. A trochu jsem doufal, že od toho objekty jsou. Tak kdybyste mi někdo mohl vysvětlit kde jsem se spletl tak budu moc vděčný - neznám moc konvence, většinou jsem v PHP potřeboval jenom drobnosti...

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ak si chceš uchovať nejaké informácie behom chodu stránok (t.j. v rámci session), tak si ich ulož do…
los 26.05.2014 11:20
los
Myslím, že v tomto případě je lepší ukládat stav do $_SESSION. Protože v té databázi by stejně musel… nový
hynajs 26.05.2014 11:42
hynajs
Z popisu mi skôr vychádza to, že len mení stav položiek, ktoré už má uložené v databáze. nový
los 26.05.2014 12:16
los
Aha, v tom případě by to byla databáze jednoznačně. Pokud by šlo o nějakou barvu knoflíku, která se… nový
hynajs 26.05.2014 12:27
hynajs
Moc díky, tady se ukazuje, jak když je člověk nezkušený, tak neví, co je úzus pro takovouto práci...… poslední
Nanadrb 26.05.2014 13:25
Nanadrb

Ak si chceš uchovať nejaké informácie behom chodu stránok (t.j. v rámci session), tak si ich ulož do $_SESSION. Pokiaľ si chceš ukladať do $_SESSION celé objekty, tak ich musíš pri zápise serializovať (serialize) a pri čítaní deserializovať (unserialize).

Z toho popisu, ktorý si sem dal, mi ale vychádza, že najlepšie by bolo to zapisovať priamo do databázy. Nerozumiem, prečo sa tomu snažíš vyhnúť.

Edit: Pole, ktoré si chceš pamätať v session, nie je ani objekt, takže tam nepotrebuješ robiť nič špeciálne.

Myslím, že v tomto případě je lepší ukládat stav do $_SESSION.
Protože v té databázi by stejně musel být nějaký klíč, jímž se rozpozná, ke které návštěvě se uložený stav vztahuje (např. session id). Nic nemožného, ale databáze by se musela později promazávat, aby v ní nestrašily staré zbytečné záznamy.

Zpět do poradny Odpovědět na původní otázku Nahoru