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...

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… nový
los 26.05.2014 11:20
los
Zdravím, jestli se to nedá udělat tak, že objekt drží hodnotu nějak jednoduše, tak určitě zápis do… nový
Nanadrb 26.05.2014 11:29
Nanadrb
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.

Zdravím,

jestli se to nedá udělat tak, že objekt drží hodnotu nějak jednoduše, tak určitě zápis do databáze je jasná volba. Hlavně mi šlo o to, aby nebyla příliš vysoká zátěž na server... a taky aby to nebyla úplná prasárna.

Každopádně díky za tip :) mějte se tu pěkně...

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