Php kalender functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

M E

M E

01/10/2013 16:58:50
Quote Anchor link
Ik ben een systeem aan het maken om kamers te reserveren aan de hand van een kalender.

Invoegen bewerken en alles lukt wel, alleen loop ik toch tegen een probleem aan.

Ik wil:
Kalender op weekbasis(weeknummer), in de breedte maandag tot en met zondag, en vertikaal alle kamernummers. In de vakken die ontstaan wil ik indien een kamer gereserveerd is de klantnaam zien (en erop klikken voor meer info en aanpassingen, dat lukt me wel).

Probleem:
Hoe zorg ik dat de kalender weet wanneer een kamer bezet is, oftewel hoe sla ik efficient de bezette dagen op en haal ik die eenvoudig op.

Ik heb een mysqltabel waarin ik de reserveringen opsla.



Geen van alle werkt makkelijk en weet ik niet goed hoe ik dit oplos.
Gewijzigd op 01/10/2013 17:00:18 door M E
 
PHP hulp

PHP hulp

22/12/2024 17:31:56
 
Kris Peeters

Kris Peeters

01/10/2013 17:16:30
Quote Anchor link
Om te beginnen; er is een tutorial die je alles leert over datum en tijd in mySQL.
http://phphulp.jorendewit.nl/view/1/

Lees die grondig; je zal spontaan al een aantal antwoorden zien. Vooral dan bij "Rekenen met data en tijden".

---
Ik zou dus eerst zien dat je een goed database model hebt.

bv. een tabel 'reserveringen', met velden id (INT), user (INT: id van de user tabel), kamer (INT of een kleine string), binnen (DATETIME), buiten (DATETIME), ...

Trek je nog niets aan van hoe je het wil tonen; eerst moeten de gegevens goed zitten.

---
Het berekenen van welke kamer wanneer gereserveerd is, gebeurt telkens met de SELECT; dus telkens ad hoc berekend, op basis van begin- en eindpunten.

Vergelijkbaar aan de berekeningen die je in die tutorial ziet.
 
M E

M E

01/10/2013 17:29:33
Quote Anchor link
De tabel reserveringen ziet er exact zo uit als jij aangeeft, dat princiepe is mij duidelijk :)

Waar ik mee zit is mijn select query waarmee ik per dag check of de kamer wel of niet bezet is.

stel ik check binnen op vandaag 1 oktober en ga weg op 3 oktober.

Welke query is van toepassing om in de kalender het klantid te tonen?

In de toturial staat bijvoorbeeld dit:

SELECT afspraak
FROM agenda
WHERE tijdstip BETWEEN '2007-07-15 11:00:00' AND '2007-07-15 12:00:00'

Maar ik heb nu natuurlijk 1 veld met inchecktijd en 1 veld met de uitchecktijd. Hoe check ik bijvoorbeeld de datum 2 oktober?

Bedankt!
Mike
Gewijzigd op 01/10/2013 17:30:56 door M E
 
Kris Peeters

Kris Peeters

01/10/2013 17:42:26
Quote Anchor link
Iedereen moet voor 12u 's middags uitgecheckt zijn, ja?
Misschien zal dat in die berekening moeten komen.


maar de basis is dat je een lus afloopt van elke dag die op de kalender voorkomt. (voor een weekkalender dus slechts 7 iteraties)

Mijn idee zou zijn om met vlaggen te werken in de query.
Iets als (bv. voor deze week, beginnende op maandag)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT afspraak,
('2013-09-30' BETWEEN incheck AND uitcheck) AS maandag,  
('2013-10-01' BETWEEN incheck AND uitcheck) AS dinsdag,  
('2013-10-02' BETWEEN incheck AND uitcheck) AS woensdag
...
FROM agenda
WHERE tijdstip BETWEEN '2007-07-15 11:00:00' AND '2007-07-15 12:00:00'


Dan krijg je in de while dus $row['maandag'], $row['dinsdag'], ...
als zijnde 1 (voor true) of 0 (voor false)

We zijn er nog niet volledig, maar ik denk dat je hiermee al wat kan uitproberen
Gewijzigd op 01/10/2013 17:45:54 door Kris Peeters
 
M E

M E

01/10/2013 19:03:16
Quote Anchor link
Hiermee ben ik al gigantisch veel verder. Ontzettend bedankt!

Waar ik nu mee zit:

Ik heb een weeknummer + jaartal, hoe zet ik die om in data's, ik wil:
$maandag = 2013-09-30
$dinsdag = 2013-10-01

ect.



Toevoeging op 01/10/2013 19:37:42:

Of anders: Hoe zorg ik dat ik door de weken kan lopen? Weeknummer mag, data's is ook goed.
Gewijzigd op 01/10/2013 19:03:50 door M E
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/10/2013 19:39:09
Quote Anchor link
In een ander topic een vraag van ongeveer dezelfde aard.

Je hoeft dan alleen datum van de eerste dag van de week in php te generen. dat kan vrij simpel met DateTime::setIsoDate() -(c)Erwin H.-
Gewijzigd op 01/10/2013 19:42:30 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.