[PHP & MySQL] reserverings systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedenavond,

Ik zit een beetje met een probleempje.

Ik wil graag een soort van reserverings systeem maken met de volgende functionaliteiten.

A je hebt een X aantal kamers (zeg 100)
B je kan de kamers reserveren voor een X aantal dagen vanaf datum X tot datum X

Zodra je een kamer gereserveerd van bijvoorbeeld 1 november tot 10 november kun je die kamer uiteraard niet meer boeken gedurende die periode.
Maar er zijn nog wel 99 andere kamers vrij in die periode.

Nu wil ik graag een systeem bouwen die bijhoud of er nog kamers vrij zijn in de vooraf ingegeven periode.
Daar de periode's dat de kamers vrij zijn niet vastliggen bij voorbaat vraag ik me af hoe ik dit nou kan maken.

Want ik heb echt geen flauw maar ook flauw benul waar ik hier moet starten om zoiets dergelijks op te zetten.

Voor elke reservering moet ik uiteraard een entry aanmaken neem ik aan.
Maar hoe ga ik nu checken welke periode's vrij zijn?

Ik heb al op Google gezocht maar echt éénvoudige scripts hiervoor zijn er niet.
Het lijkt wel bijna of dit bijna nooit gebruikt word. :?

Heeft er hier iemand hier ervaring mee?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Start-datum en einddatum noteren bij een reservering, hoeveelheid kamers is dan alle kamers minus de kamers die een start-datum voor en een einddatum na de reservering hebben.

Zo moeilijk is dat toch niet...

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
code:
1
2
3
4
SELECT kamer
FROM kamers
WHERE '20-10-2009' NOT BETWEEN geboekt_van AND geboekt_tot
AND '27-10-2009' NOT BETWEEN geboekt_van AND geboekt_tot


Zoiets? Met 20 oktober als startdatum en 27 oktober als einddatum van een eventuele boeking.

[ Voor 5% gewijzigd door HuHu op 20-10-2009 19:49 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Als je geen flauw idee hebt over hoe en wat, is het dan niet te hoog gegrepen :? Ik krijg ook gezien je laatste paar zinnen de indruk dat je het niet zelf wilt maken maar iets kant en klaars zoekt, klopt dat?

Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 12:29
Verwijderd schreef op dinsdag 20 oktober 2009 @ 19:27:
Voor elke reservering moet ik uiteraard een entry aanmaken neem ik aan.
Maar hoe ga ik nu checken welke periode's vrij zijn?

Ik heb al op Google gezocht maar echt éénvoudige scripts hiervoor zijn er niet.
Het lijkt wel bijna of dit bijna nooit gebruikt word. :?
Het lijkt me dat zulke meuk vrij veel in gebruik is, en ik krijg ook genoeg hits op Google, al zal zoiets wel eerder op maat gemaakt worden lijkt me.

Ophalen welke kamer welke periode al dan niet vrij is lijkt me goed te doen, op vele manieren, icm. MySQL. Stel dat je een tabel 'kamer' en een tabel 'reservering' hebt dan kun je een lijst van bezette kamers opvragen door een join te doen van reserveringen en kamers en condities te stellen aan de begin/einddatum.

Er zijn nog wel meer geavanceerde manieren te verzinnen gok ik, maar op die manier kun je iig de belangrijkste data krijgen.

[ Voor 0% gewijzigd door Leftblank op 20-10-2009 20:23 . Reden: Oke, spuit11, meer F5en :( ]


Acties:
  • 0 Henk 'm!

  • antonboonstra
  • Registratie: Augustus 2002
  • Laatst online: 17-09 16:17

antonboonstra

8815Wp | WP | Tesla | Zero

Het klinkt alsof PHPScheduleIt hiervoor gemaakt is.

📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cartman! schreef op dinsdag 20 oktober 2009 @ 19:53:
Als je geen flauw idee hebt over hoe en wat, is het dan niet te hoog gegrepen :? Ik krijg ook gezien je laatste paar zinnen de indruk dat je het niet zelf wilt maken maar iets kant en klaars zoekt, klopt dat?
Nee totaal niet zelfs.

Het zou natuurlijk makkelijk zijn.
Als het wiel niet opnieuw uitgevonden hoeft te worden.

Maar ik heb al redelijk wat systeempjes gemaakt maar nog nooit zoiets.

Alles moet een eerste keer zijn.
Maar waar ik moet beginnen weet ik eigenlijk niet.

Ik denk dat het punt van start en einddatum wel wat heeft.
Is eigenlijk wel een goeie van meerdere entry's en dan kijken of je wat overhoud als de begin en einddatum

Maar dan zou het wel moeten zijn:

code:
1
2
3
SELECT kamer FROM kamers
WHERE '20-10-2009' BETWEEN geboekt_van AND geboekt_tot
AND '27-10-2009' BETWEEN geboekt_van AND geboekt_tot


En als het aantal kamers dat geselecteerd is op een bepaalde datum 99 is dan is er nog één vrij.
Denk dat het zo klopt :-o

Wat ik hiermee hoop te bereiken is dat ik een idee heb hoe ik dit op kan gaan bouwen.
Want voor deze post was ik zo clueless als de vriendin van Jochem Meijer waar hij het ooit over had. :p

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Verwijderd schreef op dinsdag 20 oktober 2009 @ 20:08:
Maar dan zou het wel moeten zijn:

code:
1
2
3
SELECT kamer FROM kamers
WHERE '20-10-2009' BETWEEN geboekt_van AND geboekt_tot
AND '27-10-2009' BETWEEN geboekt_van AND geboekt_tot


En als het aantal kamers dat geselecteerd is op een bepaalde datum 99 is dan is er nog één vrij.
Denk dat het zo klopt :-o
Nee, die klopt niet. Je eist nu dat de hele vraagperiode binnen al gereserveerde periodes liggen. Maar de vraag is al niet meer geldig als ook maar 1 dag van de gevraagde periode overlapt.

Om nog een andere denkrichting te geven (moeilijker om te implementeren maar mogelijk efficiënter in kamergebruik): Als je de kamernummers meteen bij reservering vrij geeft is er een redelijke kans dat er gaten vallen waarin een kamer niet verhuurt wordt, omdat een reservering ver van te voren is gedaan, en het gat ervoor niet meer precies is op te vullen voor die kamer. Als je pas een kamernummer geeft op de dag dat de klant aankomt, dan kun je je kamers mogelijk efficiënter indelen, maar dan moet je elke keer wanneer je kijkt of er nog kamers beschikbaar zijn een zo efficiënt mogelijke indeling voor de kamers maken (bin packing).

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
_js_ schreef op dinsdag 20 oktober 2009 @ 22:00:
[...]
Om nog een andere denkrichting te geven (moeilijker om te implementeren maar mogelijk efficiënter in kamergebruik): Als je de kamernummers meteen bij reservering vrij geeft is er een redelijke kans dat er gaten vallen waarin een kamer niet verhuurt wordt, omdat een reservering ver van te voren is gedaan, en het gat ervoor niet meer precies is op te vullen voor die kamer. Als je pas een kamernummer geeft op de dag dat de klant aankomt, dan kun je je kamers mogelijk efficiënter indelen, maar dan moet je elke keer wanneer je kijkt of er nog kamers beschikbaar zijn een zo efficiënt mogelijke indeling voor de kamers maken (bin packing).
???

Lijkt me logisch dat je kamernummers pas geeft als de klant voor je neus staat ( of hij moet een speciale kamer aanvragen, daar moet je ook rekening mee houden ).
Een redelijke standaard implementatie die ik ken is dat je je kamers verdeeld in zones / soorten ( met uitzicht / zonder uitzicht etc ). Een klant kan een voorkeur opgeven binnen een zone, of geen voorkeur opgeven.

Het enige wat een beetje tricky kan zijn is dat iemand die geen voorkeur heeft wel een zone kan vullen, waardoor de volgende gast die een voorkeur voor die zone in de problemen kan komen.

Simplistisch gezegd heb je rekening te houden met 3 soorten reserveringen :
1 - een kamer op nummer ( de klant vraagt er specifiek om, of hij zat vorige week in die kamer )
2 - een kamer op soort ( met uitzicht etc. )
3 - een willekeurige kamer

Implementatie kan een beetje tricky zijn, vanwege de wild-cards van 1 en 3 ( en de mogelijkheid tot verlengen uiteraard )

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dan heb ik niks gezegd, excuus :)

Bovenstaande query lijkt me sowieso erg onhandig omdat een kamer vaker dan 1 keer geboekt kan zijn. Ik zou eerder werken met twee tabellen, 1 voor welke kamers er zijn en 1 voor de reserveringen. Ook het idee om niet direct een kamernummer toe te wijzen vind ik wel n goede, bij de meeste hotels wordt je immers ook gewoon ingedeeld waar nu plek is. Vaak kun je ter plekke nog extra nachten bijboeken en dat klopt dan niet meer met je reserveringtabel.

Acties:
  • 0 Henk 'm!

Verwijderd

tankeriv, je noemt in je voorbeeld een hotel van zeg 100 kamers.
De kans dat een hotel van die omvang nog niet is voorzien van een PMS (property management system) is denk ik gering, en de kans dat zo'n hotel genoeg zal hebben aan een simpele vervanger voor het roomrack dat ze op papier of in een spreadsheet zouden kunnen bijhouden is nog veel kleiner.

Bij een klein papa-mama-hotel (zeg 20 kamers) is een kamergebaseerd systeem nog wel bruikbaar, en is 't niet erg dat de rest van de administratie elders gebeurt, maar zelfs dan is zo'n electronisch kaartenbakje niet iets waar de eindgebruiker uiteindelijk op zit te wachten.

Hierboven zijn al een hoop dingen genoemd waar je op moet letten, maar als je nu nog op 't niveau zit waarbij je niet weet hoe je om moet gaan met iets simpels als dat het hotel leeg is totdat je reserveringen binnen krijgt, denk ik dat je way over your head zit te denken. En dat heeft niks met PHP en MySQL te maken, een gedegen hotelsysteem kun je ook schrijven in BASIC met textfiles of COBOL met ISAM bestanden om maar wat te noemen.

Mocht het (fictieve?) hotel op zoek zijn naar een oplossing op maat, dan raad ik ze aan om 's te informeren bij bv. Koninklijke Horeca Nederland naar wat collega's gebruiken.

Mocht jij bezig zijn met een webshop-achtige oplossing voor online boekingen voor dat hotel, prima, maar zorg er dan wel eerst voor dat je weet hoe een hotel werkt en waar en op welke manier daar iets in geautomatiseerd moet worden. De taal en de opslag zijn volstrekt ondergeschikt.
Veel bestaande online booking engines bieden al een (beperkte) intranet oplossing voor het bijhouden van beschikbaarheid, en vaak is het systeem dat het hotel gebruikt al te koppelen met die online systemen (al dan niet via OTA standaarden).

De afgelopen jaren ben ik er steeds meer achter gekomen dat een hotel reserveringssysteem uit veel meer bestaat dan een x-aantal kamers en een y-aantal reserveringen, en die denkfout kom ik dagelijks tegen bij booking sites die denken dat een hotel yet another webshop is, dus vergeef me dat ik wat sceptisch over kan komen.

Maar als je (of dat hotel) specifieke vragen hebt die niet PRG gerelateerd zijn, PM me maar.
offtopic:
Ik verdien m'n boterham met het schrijven van software voor de hotelbranche

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op woensdag 21 oktober 2009 @ 22:54:


Maar als je (of dat hotel) specifieke vragen hebt die niet PRG gerelateerd zijn, PM me maar.
Nee, niet PM-en, maar verplaatsen naar Software Engineering & Architecture dan. Want het is ook interessant voor andere mensen.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op woensdag 21 oktober 2009 @ 22:54:
offtopic:
Ik verdien m'n boterham met het schrijven van software voor de hotelbranche
offtopic:
de meesten hier verdienen hun boterham met het schrijven van software


Geen reden dus om dit via PM te doen.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17-09 21:27

Creepy

Tactical Espionage Splatterer

Dat wat hierboven gezegd wordt dus ;) Liever hier of in een nieuw topic zodat meer mensen er wat aan heben.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

HuHu schreef op donderdag 22 oktober 2009 @ 08:49:
Nee, niet PM-en, maar verplaatsen naar Software Engineering & Architecture dan. Want het is ook interessant voor andere mensen.
Goed plan, en in SEA wil ik er ook graag op ingaan.
Maar wanneer 't om vragen als "welke bestaande opties ken je om dit hotel online boekbaar te krijgen?" of "welk PMS systeem is geschikt voor dit hotel met deze eisen/wensen?" gaat (en daar doelde ik op) lijkt me PM geschikter.
En Cartman!, TS vroeg wie hier ervaring mee had, vandaar mijn OT regeltje.

[ Voor 6% gewijzigd door Verwijderd op 22-10-2009 21:09 ]

Pagina: 1