Vertrek datum, aankomst datum en wat er tussen zit
Ik moet een klein boeking systeempje maken voor een bed and breakfast. Nu ben ik al een eind op weg, maar loop nog tegen 1 dingetje aan. Misschien is het iets simpels misschien is het wel heel ingewikkeld. Maar de vraag is: Ik heb een veld met een aankomst datum en een veld met een Vertrek datum. Stel dat is 7-3-2012 en 9-3-2012. Die zit ik in een database. Dat is geen probleem. Maar ik heb nu als volgt een kalender, en op die kalander wil ik aangeven hoeveel plaatsen per dag nog over zijn. nu krijg ik dus alleen maar 7-3-2012 en 9-3-2012, hoe zorg ik ervoor dat ik ook 8-3-2012 meeneem?
SELECT id FROM bab WHERE '2012-03-08' NOT BETWEEN aankomst AND vertrek
Toevoeging op 07/03/2012 10:55:34:
hmm NOT BETWEEN, zal dat is een proberen.
als je alleen maar het aantal vrije plaatsen wilt weten:
naja dat moet per datum aangeven worden in een kalender, dat je dus per dag ziet hoeveel plaatsen er nog over zijn.
Als je bijvoorbeeld een boeking hebt van 2012-03-07 tot 2012-03-08 dan selecteert MySQL dat voor beide dagen, terwijl het natuurlijk maar een nacht is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sql = "
SELECT DATE(NOW()) AS datum, count(id) AS aantalvrij FROM bab
WHERE DATE(NOW()) NOT BETWEEN aankomst AND
DATE_ADD(vertrek INTERVAL -1 DAY)" . PHP_EOL;
for ($i=1, $1<7, $i++) {
$sql .= "UNION". PHP_EOL .
"SELECT DATE(DATE_ADD(NOW() INTERVAL " . $i .
" DAY) AS datum, count(id) AS aantalvrij FROM bab
WHERE DATE(DATE_ADD(NOW() INTERVAL " .$i .
" DAY) NOT BETWEEN
aankomst AND DATE_ADD(vertrek INTERVAL -1 DAY)" . PHP_EOL;
}
?>
$sql = "
SELECT DATE(NOW()) AS datum, count(id) AS aantalvrij FROM bab
WHERE DATE(NOW()) NOT BETWEEN aankomst AND
DATE_ADD(vertrek INTERVAL -1 DAY)" . PHP_EOL;
for ($i=1, $1<7, $i++) {
$sql .= "UNION". PHP_EOL .
"SELECT DATE(DATE_ADD(NOW() INTERVAL " . $i .
" DAY) AS datum, count(id) AS aantalvrij FROM bab
WHERE DATE(DATE_ADD(NOW() INTERVAL " .$i .
" DAY) NOT BETWEEN
aankomst AND DATE_ADD(vertrek INTERVAL -1 DAY)" . PHP_EOL;
}
?>
Gewijzigd op 07/03/2012 12:06:56 door Ger van Steenderen
Of je kan gewoon een dag aftrekken van de vertrek datum in je query.
Lol, heb het zojuist gewijzigd
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$vertrek = '7-3-2012';
$aankomst = '10-3-2012';
/*magische functie hiero die ineens alle 4 de datums produceert.
uitkomst:
$datum1 = '7-3-2012';
$datum2 = '8-3-2012';
$datum3 = '9-3-2012';
$datum4 = '10-3-2012';
*/
?>
$vertrek = '7-3-2012';
$aankomst = '10-3-2012';
/*magische functie hiero die ineens alle 4 de datums produceert.
uitkomst:
$datum1 = '7-3-2012';
$datum2 = '8-3-2012';
$datum3 = '9-3-2012';
$datum4 = '10-3-2012';
*/
?>
en dan nu dus zonder sql.
Gewijzigd op 07/03/2012 12:41:35 door Teun Hesseling
Code (php)
edit: niet goed opgelet, je wilt ze allemaal
Gewijzigd op 07/03/2012 13:39:32 door Ger van Steenderen
Code (php)
krijg ik als uitkomst:
3
8
9
maar je was met net voor
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Alleen met maandenwisselingen moet je nog even kijken naar $verschil->m. En ik denk dat je dit veeel beter met mysql kan doen.
Gewijzigd op 07/03/2012 14:57:16 door gerhard l
gerhard, je moet voor de date functies die jij gebruikt wel PHP 5.3 .x of hoger hebben.