Du kan sätta en flagga i databasen att tillfället är låst.
Sen kan du lägga in kod som tar bort låsningen i Session_OnEnd i global.asa.
4 svar · 600 visningar · startad av MickeA.com
Hej!
Jag har byggt ett hyfsat avancerat boknings system, där personer kan boka in sig på kurser i en simskole verksamhet.
I varje grupp som finns tillgänglig för bokning kan man som administratör sätta ett max antal som får boka in sig i en grupp.
Det här har fungerat klockrent i tre år, men imorse upptäckte vi ett problem, att det gick att överboka dessa kurser.
Tidigare så har det fungerat så att max antal bokning till en grupp sparas i tabellen med "grupper".
När grupperna visas på hemsidan ser man max antal bokningar / per grupp minus antalet bokningar som redan är gjorda.
I det läget låses inga platser temporärt och det är det stora felet.
Imorse bokades 14 platser i en grupp mellan klockan 08:01:47 och 08:07:57, alltså på 6 minuter och 10 sekunder. Det här bör ha berott på att bokning 1 inte blev klar förran bokning 2 påbörjades osv.
Jag skulle därför behöva "låsa" platser temporärt på något sätt, men har inga bra idéer alls.
Om dessa låses och bokningen avbryts (användaren stänger webbläsaren tex.) så ska en plats återgå som "ledig".
Hur löser man det här på bästa sätt?
Sajten är i nuläget skriven i ASP, men kommer under våren att skrivas om till PHP.
Tacksam för era idéer och förslag ang. det här, tack!
Du kan sätta en flagga i databasen att tillfället är låst.
Sen kan du lägga in kod som tar bort låsningen i Session_OnEnd i global.asa.
Vad använder du för databas? Om databasen har stöd för transaktioner så kan det lösa ditt problem.
I nuläget är sidan skriven i ASP / MySQL, men kommer bygga om allt från scratch under våren, då i PHP med MySQL.
Antar att detta är en liknade funktion som man har på sf.se. En viss tid på sig att välja sittplatser? Om så är fallet så har jag kanske en lösning:
Vid "temporär bokning" som sparas i databasen sparar man också när den senast måste vara "bokad" (och också låst). Så fort någon går in på sidan och vill se just den kursne gör man en sökning på i databasen på om det finns platser som inte är låsta men som gått över tiden. Dessa platser anser man då vara lediga.
För användaren som håller på att boka kan man lägga in ett litet javascript som tickar ner på hur lång tid dom har på sig.