Autor Zpráva
houbín
Profil
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
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
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
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
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
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
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í.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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