Autor Zpráva
gigin
Profil *
Dělám eshop, a dělám ho sám, bez nějakých šablon nebo předpřipravených řešení.

Mám tento problém. Člověk přijde, vybere položku, zadá parametry a de facto přidá do košíku. V tabulce obrazně řečeno přibyde nový nákup a v jiné tabulce jedna položka tohoto nákupu. Nakonec člověk vloží svou adresu a tím se změní stav nákupu na Potvrzený a vidí ho prodejce.

Co když ale zákazník v průběhu nákupu skončí? Mám existující session, v tabulce rozpracovaný nákup.
Nevím jak odchytit, že člověk opravdu vycouval a hotovo. Session neskončí ani zavřením prohlížeče. Mám hlídat dobu nečinnosti? To bych myslím zvládl platností té session. Řekněme, že za hodinu vyprší platnost session a člověk přišel o rozdělaný nákup.

Jak ale vyčistit ty tabulky?
Joker
Profil
gigin
No jednoduše, v tabulce bude sloupec, kde bude čas načtení poslední stránky.
Platné záznamy jsou jenom ty, kde čas načtení poslední stránky > (teď - doba pro automatické odhlášení). Ani není nutné průběžně odmazávat záznamy z tabulky.

edit: předpokládám teda, že informace o relaci (session) se ukládají i do databáze. Samotný košík by pak byl platný v případě, že je svázaný s platnou relací.
gigin
Profil *
Joker
To by pak znamenalo, že budu mít de facto čtyři stavy objednávky
- nová, zákazník ji právě vytváří
- vytvořená, vidí ji obchodník
- dokončená
- zákazník se na ni vykašlal

ten čtvrtý stav bych tam nechtěl nechávat a cron jsem nikdy nepoužil, takže jednak neumím a jednak nevím jestli se dá spolehnout na to, že na každém hostingu běží.
Takže bych ty staré promáznul třeba když vzniká nová session.

Myslíš že ta úvaha je rozumná?
Mastodont
Profil
Co když ale zákazník v průběhu nákupu skončí?
No, třeba u některého zboží nemá jistotu a chce si dohledat nějaké informace apod. ... já jsem tedy zvyklý na to, že obsah košíku je uchován do dalšího přihlášení, pokud bych narazil na e-shop, který mi košík vymaže, tak tam bych prostě nekupoval.
Joker
Profil
ad Mastodont: Samozřejmě, pokud je zákazník přihlášený na nějaké svoje ID, je lepší navázat košík na to ID a potom nehraje roli, zda je zákazník přihlášený a v jaké relaci.
V některých e-shopech je ale možné založit košík i bez přihlášení (a potom by byl předpokládám navázaný na session ID) a pak bych postupoval tak jak jsem psal.
gigin
Profil *
jasně, vytvořím relaci, a ta de facto už přiskočí do databáze jako nová zakázka a na její ID se začnou věšet v jiné tabulce ty položky - zboží.

Po potvrzení se jen změní stav zakázky z rozpracovaná na potvrzená.
gigin
Profil *
Mastodont
Já to mám ale tak, že zákazník se namusí vůbec přihlašovat. Mám představu, že až komplet vymyslí nákup, tak vyplní údaje pro poštu a volitelně zadá login a heslo - pro případ, že by ještě někdy chtěl přijít a nechtěl by vypisovat.


Já tu session samozřejmě nemusím mazat vůbec. Proto se na to ptám.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: