Autor | Zpráva | ||
---|---|---|---|
houbín Profil |
#1 · Zasláno: 14. 11. 2016, 16:59:05
Zdravím,
začal jsem tvořit rezervační systém stolů na ples, už jsem si něco rozpracoval, ale postupně se dostávám k problému, jak vyřešit následující: chtělo by to nějaký obrázek se stoly, který bude ukazovat, které jsou již obsazené. Může nastat samozřejmě situace, že ve stejný čas se podaří zabrat stejná místa, což se nesmí stát. To by šlo asi řešit zamykáním tabulek, ale otázka je, jak vytvořit onen obrázek se stoly, který by byl stále aktuální. |
||
Tomášeek Profil |
#2 · Zasláno: 14. 11. 2016, 17:02:39
Aktuální po načtení/refershi stránky to není problém, ne? Pokud chceš aktualizovat stoly i v čase, hledej AJAX - pravidelně v časovém intervalu třeba 5-10s koukej do DB, jestli se něco změnilo a případně zaktualizuj stav na front-endu.
Spousta rezervačních portálů toto neřeší a pokud se dané místo v čase mezi načtením stránky a kliknutím na místo obsadí, vyhodí hlášku, že místo je již obsazeno a vyber si jiné. Jestli to vadí/nevadí je na tobě, mě to nikterak neobtěžuje, protože zpravidla místo nevybírám hodinu, aby nastaly velké změny (pohled uživatele). |
||
houbín Profil |
#3 · Zasláno: 14. 11. 2016, 17:22:21
No minulý rok byl nasazen nějaký systém, a stalo se právě to, že byl dvakrát rezervován stejný stůl.
AJAX by asi nebyl nutný, tolik komfortu pro uživatele není nutné, vzhledem k tomu, že nemám tolik času si s rezervačním systémem více pohrát. Právě zamykání tabulek jsem nikdy nepoužil, stejně tak transakce, ale problém to nebude, nějak na to přijdu. Jen bych potřeboval prvotní nakopnutí. Stránka vypadá tak, že je tam formulář se jménem atd. kde bude zároveň obrázek s volnými místy. Uživatel klikne na nějaké místo a následně formulář odešle i s dalšími údaji. Po této akci se udělá kontrola, jestli je dané místo stále volné a pokud ano, uživatel se uloží do databáze a zvolené místo se zablokuje. Je tedy nutné v tomto případě použít transakce/zamykání tabulek? |
||
pcmanik Profil |
#4 · Zasláno: 14. 11. 2016, 17:45:50
houbín:
V čase keď ukladáš rezerváciu zároveň over, či je termín voľný. Všetko rob v transakcii a máš po probléme. |
||
TomášK Profil |
#5 · Zasláno: 14. 11. 2016, 17:56:39
Jednodušší řešení je udělat unikátní index nad stoly v tabulce rezervace. Pak nejsou potřeba transakce, stačí zjistit, jestli se vložení povedlo nebo ne.
|
||
pcmanik Profil |
TomášK:
A keď ten stôl bude niekto chcieť zarezervovať o mesiac? Tak už ho nebude môcť zarezervovať... |
||
TomášK Profil |
#7 · Zasláno: 14. 11. 2016, 18:16:12
pcmanik
Z dotazu mám pocit, že se stůl rezervuje pro ples, ne od-do. Tedy unikátní index by byl nad dvojicí (stul, ples). Možná i jenom stůl, mám dojem, že autor ten ples pořádá jednou za rok a nepřekvapilo by mě, kdyby každý rok jen promazal tabulky. Nechť si doladí dle své struktury. |
||
houbín Profil |
pcmanik:
Dobrá díky :) TomášK: ano, přesně tak to funguje, žádný náročný systém Jak lze pak ověřit, že trasakce fungují správně? |
||
Keeehi Profil |
#9 · Zasláno: 14. 11. 2016, 19:28:40
houbín:
„Jak lze pak ověřit, že trasakce fungují správně?“ Těžko. Jedině si spustit dva paralelní scripty, které by odesílaly požadavky na rezervaci stejných stolů. Pokud se ti v databázi objeví dvojitá rezervace, víš, že máš problém. Pokud se neobjeví, tak nevíš nic (zrovna se třeba nepotkali tak, aby vznikla chyba). Když to dostatečně častokrát zopakuješ, můžeš předpokládat, že tam chyba s největší pravděpodobností není. |
||
Časová prodleva: 7 let
|
0