reserveringsysteem met maandoverbrugging
dit is het gedeelte: http://www.innederlandopvakantie.nl/index.php?id=1
Ik hoop dat jullie me verder kunnen helpen!
Als het niet duidelijk is vragen staat vrij :)
wat is je tabelstructuur van de tabel met reserveringen?
id
text
day
month
year
Quote:
Dat hoef helemaal geen probleem te zijn, mits je uiteraard met een goed datamodel werkt.hoe ik het reserveren kan doen zodra er een maandoverbrugging is
Een reservering heeft een begindatum en een einddatum. Of die data nu in dezelfde maand of niet liggen, dat maakt natuurlijk niet uit. Zolang jij de data opslaat in velden van het type DATE is er niets aan de hand.
Dat jij het hebt over 'maandoverbrugging' doet mij vermoeden dat er iets niet klopt in je datamodel. Heb je wel genormaliseerd?
ps. Die velden 'day', 'month' en 'year' mag jij dus gewoon samenvoegen tot 1 veld van het type DATE waarin je een datum in het formaat 'yyyy-mm-dd' opslaat. Dan heb je helemaal geen probleem meer...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
- NOW (mogelijk gebruik je liever SYSDATE)
- DATE_FORMAT
@Blache heb jij een goed datamodel voor me dan?...
id INT
startdate DATE
enddate DATE
userid INT
..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `reservations` (
`uniqueid` int(11) NOT NULL auto_increment,
`resvno` int(11) NOT NULL,
`houseid` int(11) NOT NULL,
`from` date NOT NULL,
`till` date NOT NULL,
`userid` int(11) NOT NULL,
`status` varchar(10) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`uniqueid`)
`uniqueid` int(11) NOT NULL auto_increment,
`resvno` int(11) NOT NULL,
`houseid` int(11) NOT NULL,
`from` date NOT NULL,
`till` date NOT NULL,
`userid` int(11) NOT NULL,
`status` varchar(10) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`uniqueid`)
Gebruik ik ook voor het verhuren van huizen. En dan gebruik onderstaand stukje om een array te vullen met de bezette dagen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
while ($result = mysql_fetch_array($executequery)) {
// Get the year, startmonth, endmonth, startday, endday.
$year = substr($result['from'],0,4);
$startmonth = substr($result['from'],5,2);
$startday = substr($result['from'],8,2);
$endmonth = substr($result['till'],5,2);
$endday = substr($result['till'],8,2);
if ($startmonth < $endmonth) {
for ($y = intval($startmonth); $y < intval($endmonth); $y++) {
$startmonthlatestday = date("d", mktime(0, 0, 0, $y + 1, 0, $year));
for ($x = intval($startday); $x <= $startmonthlatestday; $x++) {
$reservation[$y][$x] = $result['status'];
}
$startday = 1;
}
for ($x = intval($startday); $x <= $endday; $x++) {
$reservation[$y][$x] = $result['status'];
}
} elseif ($startmonth == $endmonth) {
for ($x = intval($startday); $x <= $endday; $x++) {
$y = intval($startmonth);
$reservation[$y][$x] = $result['status'];
}
}
}
[/php]
// Get the year, startmonth, endmonth, startday, endday.
$year = substr($result['from'],0,4);
$startmonth = substr($result['from'],5,2);
$startday = substr($result['from'],8,2);
$endmonth = substr($result['till'],5,2);
$endday = substr($result['till'],8,2);
if ($startmonth < $endmonth) {
for ($y = intval($startmonth); $y < intval($endmonth); $y++) {
$startmonthlatestday = date("d", mktime(0, 0, 0, $y + 1, 0, $year));
for ($x = intval($startday); $x <= $startmonthlatestday; $x++) {
$reservation[$y][$x] = $result['status'];
}
$startday = 1;
}
for ($x = intval($startday); $x <= $endday; $x++) {
$reservation[$y][$x] = $result['status'];
}
} elseif ($startmonth == $endmonth) {
for ($x = intval($startday); $x <= $endday; $x++) {
$y = intval($startmonth);
$reservation[$y][$x] = $result['status'];
}
}
}
[/php]
Dat script ziet er goed uit.. maar ik snap niet helemaal hoe het nou werkt..
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$dBegin = $_REQUEST['dag'];
$dag = $_REQUEST['dag'];
$dEind = $_REQUEST['dag2'];
$mBegin = $_REQUEST['maand'];
$maand = $_REQUEST['maand'];
$mEind = $_REQUEST['maand2'];
$jBegin = $_REQUEST['jaar'];
$jEind = $_REQUEST['jaar2'];
$dag = $_REQUEST['dag'];
$dEind = $_REQUEST['dag2'];
$mBegin = $_REQUEST['maand'];
$maand = $_REQUEST['maand'];
$mEind = $_REQUEST['maand2'];
$jBegin = $_REQUEST['jaar'];
$jEind = $_REQUEST['jaar2'];
dit is wat ik uitlees... wat ik wil is dat ie even een echo geeft van alle dagen die 'ie tegen komt dus als je invult:
van: 10 05 2008
tot: 15 07 2008
dat 'ie dan geeft (dagen):
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
en (maanden:
5 6 7
Als je dan bij het weergeven van je agenda per dag bekijkt, of dat deze waarde bestaat in de array, zo ja vul de dag met die afspraak, zo nee toon de dag als een vrijedag.
in iedergeval kan ik er niets mee