startdatum en einddatum in reservering
In de database wil ik per reservering de startdatum en de einddatum plaatsen.
Het resultaat moet zijn dat in een kalender wordt getoond welke dagen de accomodatie al is gereserveerd, dus ook de dagen tussen de start en einddatum moeten als gereserveerd aangemerkt worden.
Heeft iemand een idee hoe ik dit het beste kan aanpakken?
Jawel, maar wat verwacht je nu van ons?
Je geeft zelf het antwoord al: maak een database met een tabel met "reserveringen" en geef het de kolommen "startdatum" en "einddatum". Vervolgens handel je die data af in PHP zoals je wilt.
Daarnaast is het slim om wel een datamodel te plaatsen en aan te geven hoeveel accommodaties er in moeten komen te staan. (bij 1 huisje kán, is alleen niet aan te raden, het datamodel er anders uit komen te zien)
Daarnaast heb je natuurlijk een kalender nodig. Probeer ook eens een kalender te vinden, waarin je afspraken kan plaatsen, wellicht dat je dan al een paar dingen ziet die je kan gebruiken. (een kalender heeft ook altijd start/ einddatum!)
Mijn database ziet er als volgt uit
reservering_id
reservering_nummer
reservering_nawgegevens etc
reservering_begindatum
reservering_einddatum
het gaat om 1 huisje
Ik heb al een kalenderscript, zie onderstaand. Daar waar de mysql-query staat moet een code gemaakt worden die dan de data per reservering genereerd.
Ik hoop dat mijn vraag zo duidelijker is.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?/* definieren variabelen en arrays voor de kalender *******************************************/
//Allereerst gaan we alle maanden defineren
$maanden = array(1 => 'januari', 2 => 'februari', 3 => 'maart', 4 => 'april', 5 => 'mei', 6 => 'juni', 7 => 'juli', 8 => 'augustus', 9 => 'september', 10 => 'oktober', 11 => 'november', 12 => 'december');
//De dagen in een week
$weekdagen = array('maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag');
//En de jaren die we willen toestaan, in dit geval van 2006 tot 2010.
$jaren = range(date('Y'), date('Y')+16);
//Wat als er een maand in de url staat?
if(isset($_GET['maand']))
{
//Eerst kijken we of die maand wel bestaat
if(array_key_exists($_GET['maand'], $maanden))
{
$maand = $_GET['maand'];
}else{
$maand = date('n');
}
}else{
$maand = date('n');
}
//Wat als er een jaar in de url staat?
if(isset($_GET['jaar']))
{
//Eerst kijken we of we dat jaar wel goedkeuren
if(in_array($_GET['jaar'],$jaren))
{
$jaar = htmlentities($_GET['jaar']);
}else{
$jaar = date('Y');
}
}else{
$jaar = date('Y');
}
//Omdat we nu het jaar en de maand weten kunnen we vaststellen welke dagen zijn toegestaan
$dagen = range(1,date('t', mktime(0,0,0,$maand,1,$jaar)));
//Wat als er een dag in de url staat?
if(isset($_GET['dag']))
{
//Bestaat deze dag wel?
if(in_array($_GET['dag'], $dagen))
{
$dag = htmlentities($_GET['dag']);
}else{
$dag = 1;
}
}else{
//Wat als er geen dag is geselecteerd? Dan kijken we of het vandaag dezelfde maand is als wat er is opgevraagd en selecteren we vandaag!
if($maand == date('n'))
{
$dag = date('j');
}else{
$dag = 1;
}
}
//**********************************************einde definieren variabelen***********************************************
?>
//Allereerst gaan we alle maanden defineren
$maanden = array(1 => 'januari', 2 => 'februari', 3 => 'maart', 4 => 'april', 5 => 'mei', 6 => 'juni', 7 => 'juli', 8 => 'augustus', 9 => 'september', 10 => 'oktober', 11 => 'november', 12 => 'december');
//De dagen in een week
$weekdagen = array('maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag');
//En de jaren die we willen toestaan, in dit geval van 2006 tot 2010.
$jaren = range(date('Y'), date('Y')+16);
//Wat als er een maand in de url staat?
if(isset($_GET['maand']))
{
//Eerst kijken we of die maand wel bestaat
if(array_key_exists($_GET['maand'], $maanden))
{
$maand = $_GET['maand'];
}else{
$maand = date('n');
}
}else{
$maand = date('n');
}
//Wat als er een jaar in de url staat?
if(isset($_GET['jaar']))
{
//Eerst kijken we of we dat jaar wel goedkeuren
if(in_array($_GET['jaar'],$jaren))
{
$jaar = htmlentities($_GET['jaar']);
}else{
$jaar = date('Y');
}
}else{
$jaar = date('Y');
}
//Omdat we nu het jaar en de maand weten kunnen we vaststellen welke dagen zijn toegestaan
$dagen = range(1,date('t', mktime(0,0,0,$maand,1,$jaar)));
//Wat als er een dag in de url staat?
if(isset($_GET['dag']))
{
//Bestaat deze dag wel?
if(in_array($_GET['dag'], $dagen))
{
$dag = htmlentities($_GET['dag']);
}else{
$dag = 1;
}
}else{
//Wat als er geen dag is geselecteerd? Dan kijken we of het vandaag dezelfde maand is als wat er is opgevraagd en selecteren we vandaag!
if($maand == date('n'))
{
$dag = date('j');
}else{
$dag = 1;
}
}
//**********************************************einde definieren variabelen***********************************************
?>
<table celpadding="0" celspacing="0" border="0" width="235">
<tr>
<td colspan="7">
<table border="0">
<tr>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?//Uiteraard willen we een vorige maand...
if($maand == 1)
{
echo '<td style="text-align:left;"><a href="'.$link.'agenda/12/'.($jaar-1).'"><img src="'.$link.'images/ontwerp/vorige.png"/></a></td>';
}else{
echo '<td style="text-align:left;"><a href="'.$link.'agenda/'.($maand-1).'/'.$jaar.'"><img src="'.$link.'images/ontwerp/vorige.png"/></a></td>';
}?>
if($maand == 1)
{
echo '<td style="text-align:left;"><a href="'.$link.'agenda/12/'.($jaar-1).'"><img src="'.$link.'images/ontwerp/vorige.png"/></a></td>';
}else{
echo '<td style="text-align:left;"><a href="'.$link.'agenda/'.($maand-1).'/'.$jaar.'"><img src="'.$link.'images/ontwerp/vorige.png"/></a></td>';
}?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?//... en volgende maand knopje! Als het Januari of December is doen er uiteraard 1 jaar eraf of erbij.
if($maand == 12)
{echo '<td align="right"><a href="'.$link.'agenda/1/'.($jaar+1).'"><img src="'.$link.'images/ontwerp/volgende.png"/></a></td>';
}else{
echo '<td align="right"><a class="maandnummers" href="'.$link.'agenda/'.($maand+1).'/'.$jaar.'"><img src="'.$link.'images/ontwerp/volgende.png"/></a></td>';
}?>
if($maand == 12)
{echo '<td align="right"><a href="'.$link.'agenda/1/'.($jaar+1).'"><img src="'.$link.'images/ontwerp/volgende.png"/></a></td>';
}else{
echo '<td align="right"><a class="maandnummers" href="'.$link.'agenda/'.($maand+1).'/'.$jaar.'"><img src="'.$link.'images/ontwerp/volgende.png"/></a></td>';
}?>
</tr>
</table>
</td>
</tr>
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<? echo "<tr><td style='text-align:center;'><strong>ma</strong></td><td style='text-align:center;'><strong>di</strong></td><td style='text-align:center;'><strong>wo</strong></td><td style='text-align:center;'><strong>do</strong></td><td style='text-align:center;'><strong>vr</strong></td><td style='text-align:center;'><strong>za</strong></td><td style='text-align:center;'><strong>zo</strong></td></tr><tr>";
//Wat is de eerste dag van de maand?
$eerstedag = date('w', mktime(0,0,0,$maand,1,$jaar));
//Deze hebben we nodig om wat lege ruimte te vullen als de week niet begint op maandag.
for($nummer = 1; $nummer <= 6; $nummer += 1)
{
if($nummer != $eerstedag)
{
echo '<td></td>';
}else{
$nummer = 7;
}
}
//Voor iedere dag in de week gaan we nu een loopje beginnen!
foreach($dagen as $dag2)
{
//Welke weegdag is het?
$dagindeweek = date('w', mktime(0,0,0,$maand,$dag2,$jaar));
//Als het 1 is (maandag) begint er een nieuwe rij!
if($dagindeweek == 1)
{
echo '<tr>';
}
$q=mysql_query("select * from reservering");
while ($rec=mysql_fetch_array($q))//haalt alle hoofdmenuitems op
{ // hier moet nu de code komen die per reservering de begindatum, einddatum en tussenliggende data oproept en dan elke datum omzet naar $adag en $amaand en $ajaar die dan in de onderstaande if een cirkel om de datum zet
//Stel dat de datum al gereserveerd is dan willen we een cirkel!
if(($dag2 == $adag) && ($maand == $amaand) && ($jaar == $ajaar)){
echo '<td style="height:30px; width:34px;text-align:center;background-image:url('.$link.'images/ontwerp/gereserveerd.png);background-repeat:no-repeat;background-position: right top">
<a style="color: #77A022;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'"><strong>'.$dag2.'</strong></a>
</td>';
}else{
//Stel dat het toevallig dezelfde datum als vandaag is? Dan willen we een veet groen cijfer!
if(($dag2 == date('j')) && ($maand == date('n')) && ($jaar == date('Y')))
{
echo '<td style="text-align:center;height:30px; width:34px;">
<a style="color: #77A022;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'"><strong>'.$dag2.'</strong></a>
</td>';
}else{
echo '<td style="text-align:center;height:30px; width:34px;"><a style="color: #000000;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'">'.$dag2.'</a>
</td>';
}
}
}}
//Als het dag 0 is (zondag) willen we de rij eindigen!
if($dagindeweek == 0)
{
echo '</tr>';
}
echo '<tr><td colspan="7">
<table celpadding="10" border ="0" width="180">
<tr>';
echo'</tr></table></td></tr></table>';
echo'</td></tr></table>';
?>
//Wat is de eerste dag van de maand?
$eerstedag = date('w', mktime(0,0,0,$maand,1,$jaar));
//Deze hebben we nodig om wat lege ruimte te vullen als de week niet begint op maandag.
for($nummer = 1; $nummer <= 6; $nummer += 1)
{
if($nummer != $eerstedag)
{
echo '<td></td>';
}else{
$nummer = 7;
}
}
//Voor iedere dag in de week gaan we nu een loopje beginnen!
foreach($dagen as $dag2)
{
//Welke weegdag is het?
$dagindeweek = date('w', mktime(0,0,0,$maand,$dag2,$jaar));
//Als het 1 is (maandag) begint er een nieuwe rij!
if($dagindeweek == 1)
{
echo '<tr>';
}
$q=mysql_query("select * from reservering");
while ($rec=mysql_fetch_array($q))//haalt alle hoofdmenuitems op
{ // hier moet nu de code komen die per reservering de begindatum, einddatum en tussenliggende data oproept en dan elke datum omzet naar $adag en $amaand en $ajaar die dan in de onderstaande if een cirkel om de datum zet
//Stel dat de datum al gereserveerd is dan willen we een cirkel!
if(($dag2 == $adag) && ($maand == $amaand) && ($jaar == $ajaar)){
echo '<td style="height:30px; width:34px;text-align:center;background-image:url('.$link.'images/ontwerp/gereserveerd.png);background-repeat:no-repeat;background-position: right top">
<a style="color: #77A022;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'"><strong>'.$dag2.'</strong></a>
</td>';
}else{
//Stel dat het toevallig dezelfde datum als vandaag is? Dan willen we een veet groen cijfer!
if(($dag2 == date('j')) && ($maand == date('n')) && ($jaar == date('Y')))
{
echo '<td style="text-align:center;height:30px; width:34px;">
<a style="color: #77A022;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'"><strong>'.$dag2.'</strong></a>
</td>';
}else{
echo '<td style="text-align:center;height:30px; width:34px;"><a style="color: #000000;" href="?p=agenda&dag='.$dag2.'&maand='.$maand.'&jaar='.$jaar.'">'.$dag2.'</a>
</td>';
}
}
}}
//Als het dag 0 is (zondag) willen we de rij eindigen!
if($dagindeweek == 0)
{
echo '</tr>';
}
echo '<tr><td colspan="7">
<table celpadding="10" border ="0" width="180">
<tr>';
echo'</tr></table></td></tr></table>';
echo'</td></tr></table>';
?>
Gewijzigd op 11/10/2010 20:59:11 door erna alting