Reservering script
Ik ben bezig met een opdracht voor school een vakantiehuisjes systeem nou heb ik de hele website al klaar maar mijn reserverings script werkt niet na behoren.
De fout die het script maakt is:
Wanneer ik huisje 1 op datum 04-10-2010 reserveer tot 04-11-2010 werkt het.
Maar wil ik huisje 1 op datum 03-10-2010 reserveren tot 04-11-2010 werkt het ook dan
----------------------------------------------------------------------
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?php
session_start();
// controleerd als je ingelogt bent of niet.
if (!isset ($_SESSION["gebruikersnaam"])){
header("location: login.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Vakantiehuizen Verhuur</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<div id="container">
<div id="banner">
<h1> Vakantiehuizen Verhuur</h1>
</div>
<div class="clear"></div>
<div id="sidebar">
<div class="menu">
<ul>
<li class="links">Menu</li>
<li><a href="index.php">Startpagina</a></li>
<li><a href="vakantiehuizen.php">Vakantiehuizen</a></li>
<li><?php
// wanneer je ingelogt bent laat hij alleen zien van uitloggen en als je nog niet ingelogt bent zie je de knoppen inloggen en registeren.
if ($_SESSION['gebruikersnaam'] <> TRUE){ echo '
<li><a href="login.php">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>';}
else { echo '
<li><a href="logoff.php">Uitloggen</a></li>';}
?></li>
<li><a href="/contact.php">Contact</a></li>
<li><a href="/admin">Adminpaneel</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="Content">
<center>
<form method="post" action="<?php echo ($_SERVER["PHP_SELF"]);?>">
<?php
// verbinding maken met database.
include("mysqlconnect2.php");
// als je niet via reserveren.php een huis kiest krijg je de fout melding dat je eerst een huisje moet kiezen.
if ($_SESSION['huis'] <> TRUE) {echo "Kies a.u.b. een vakantie woning";}
else {
// via de $_SESSION wordt mee gegeven uit de vorige pagina welk huis er gekozen is.
$huis = $_SESSION['huis'];
$huisplaats = $_SESSION['huisplaats'];
// met $jaar wordt standaart voor de klant ingevult welke jaar tal het nu is.
$jaar = date ("Y");
//hier worden de data ingevult in 6 velden en die worden later weer omgezet naar 2 velden.
if (!empty($_POST)){
$adag = $_POST["adag"];
$amaand = $_POST["amaand"];
$ajaar = $_POST["ajaar"];
$vdag = $_POST["vdag"];
$vmaand = $_POST["vmaand"];
$vjaar = $_POST["vjaar"];
// hier wordt gecontroleerd als de velden voor maand en dag al ingevult zijn want jaar hoeft tenslotte niet die wordt al standaard ingevult daar de varriable $jaar.
if ($adag == NULL){echo "<p> U heeft geen datum ingevult.<br><input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
if ($vdag == NULL){echo "<p> U heeft geen datum ingevult.<br><input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($amaand == NULL){echo "<p> U heeft geen datum ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($vmaand == NULL){echo "<p> U heeft geen datum ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
}}
// hier wordt gecontroleerd als er een getal is ingevult en niet een letter of iets dergelijks.
if (is_numeric($adag) == true){if (is_numeric($amaand) == true){$adatum = "TRUE";};};
if (is_numeric($vdag) == true){if (is_numeric($vmaand) == true){$vdatum = "TRUE";};};
// hier wordt gezegt wanneer de datums niet goed zijn ingevult.
if ($adatum <> TRUE){echo "<p>De datums zijn niet goed ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($vdatum <> TRUE){echo "<p>De datums zijn niet goed ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
// hier worden de datums inelkaar gedraait aangezien ze boven in 6 losse velden zijn gezet.
$aankomstdatum = "$adag/$amaand/$ajaar";
$vertrekdatum = "$vdag/$vmaand/$vjaar";
$aankomstdatum2 = "$amaand/$adag/$ajaar";
$vertrekdatum2 = "$vmaand/$vdag/$vjaar";
// hier converteren we de datums zodat mysql het ook snapt.
$myinput=$aankomstdatum2;
$sqldate=date('Y-m-d',strtotime($myinput));
$myinput2=$vertrekdatum2;
$sqldate2=date('Y-m-d',strtotime($myinput2));
$myinput3=$day;
$sqldate3=date('Y-m-d',strtotime($myinput3));
// hier wordt het aantal dagen berekent tussen de aankomst_datum en de vertrek_datum.
function dateDiff($dformat, $endDate, $beginDate)
{
$date_parts1=explode($dformat, $beginDate);
$date_parts2=explode($dformat, $endDate);
$start_date=gregoriantojd($date_parts1[0], $date_parts1[1], $date_parts1[2]);
$end_date=gregoriantojd($date_parts2[0], $date_parts2[1], $date_parts2[2]);
return $end_date - $start_date;
}
// hier wordt het bovenstaande uitgevoerd.
$Dagen = dateDiff("/", $vertrekdatum2, $aankomstdatum2);
// hier wordt gecontroleerd als de dagen niet minder dan 0 zijn dus bijvoorbeeld niet van 5 mei 2010 tot 4 mei 2010.
if ($Dagen < 0){echo "<p>De aankomst- en vertrek data zijn niet goed ingevult!<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
// hier wordt de controle uitgevoerd als er geen overlappende datums zijn.
$check = TRUE;
// hier wordt de query gecontroleerd op het gekozen huis
$checksql="SELECT aankomst_datum, vertrek_datum FROM reserveren WHERE huis =$huis";
//De gekozen datums van het gekozen vakantiehuis worden door gecontrolleerd als de aankomst_datum en vertrek_datum niet al ergens anders tussen vallen of gekozen zijn.
$sql2=mysql_query($checksql) ;
while($data2=mysql_fetch_array($sql2))
{
$aankomst_datum=$data2['aankomst_datum'];
$vertrek_datum=$data2['vertrek_datum'];
while ($aankomst_datum <> $vertrek_datum) {
if ($aankomst_datum == $sqldate)
{$check = false; $aankomst_datum = $vertrek_datum;}
else {$aankomst_datum = date( "Y-m-d", strtotime( "$aankomst_datum +1 day" ) );}
}
while ($aankomst_datum <> $vertrek_datum) {
if ($aankomst_datum == $sqldate2)
{$check = false; $aankomst_datum = $vertrek_datum;}
else {$aankomst_datum = date( "Y-m-d", strtotime( "$aankomst_datum +1 day" ) );}
}}
// als het gekozen datums wel tussen andere gekozen datums vallen wordt dat hier vermeld.
if ($check <> TRUE){echo "<p> Onze exucesses maar het huisje op $huisplaats is al verhuurt tussen deze data. <br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
// zo niet wordt hier alles weg geschreven naar de database velden.
$klantnummer = $_SESSION['klantnummer'];
$insert ="INSERT INTO reserveren(klantnummer, huis, aankomst_datum, vertrek_datum)
VALUES ('".$klantnummer."', '".$huis."', '".$sqldate."', '".$sqldate2."')";
$result = mysql_query($insert)or die ("INSERT FOUT: " .mysql_error());
echo "<p>De reservering is succesvol verlopen,<br> Uw aankomstdatum is : $aankomstdatum <br>uw verterkdatum is : $vertrekdatum.";
}}}}}}
else {
//een klein overzichtje wordt weer gegeven voordat de datums zijn ingevoerd.
$query=" SELECT * FROM huisjes WHERE huis = $huis";
$sql=mysql_query($query) or die ("FOUT ; " .mysql_error());
while($data=mysql_fetch_array($sql))
$afbeelding=$data['afbeelding'];
$huisplaats= $_SESSION['huisplaats'];
$prijs = $_SESSION['prijs'];
echo ("<p><img src='$afbeelding' alt='Vakantiehuis' width='200' height='160' /><br><br>
<p> U heeft gekozen voor $huisplaats . <br>
De kosten zijn €$prijs,- per dag. </p><br>
<p>
Boeking:<br />
Gewenste aankomst datum:
<input size='2' type='text' name='adag'> - <input size='2' type='text' name='amaand'> - <input size='4' type='text' name='ajaar' value='$jaar'><br>
Gewenste vertrek datum :
<input size='2' type='text' name='vdag'> - <input size='2' type='text' name='vmaand'> - <input size='4' type='text' name='vjaar' value='$jaar'><br>
<input type='submit' name='submit' value='Reserveer Nu!'>
");
}}
?>
</form>
</center>
</div>
</div>
<div id="footer">
<p> Copyright by Patrick Stel</p></div>
</div>
</body>
</html>
session_start();
// controleerd als je ingelogt bent of niet.
if (!isset ($_SESSION["gebruikersnaam"])){
header("location: login.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Vakantiehuizen Verhuur</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<div id="container">
<div id="banner">
<h1> Vakantiehuizen Verhuur</h1>
</div>
<div class="clear"></div>
<div id="sidebar">
<div class="menu">
<ul>
<li class="links">Menu</li>
<li><a href="index.php">Startpagina</a></li>
<li><a href="vakantiehuizen.php">Vakantiehuizen</a></li>
<li><?php
// wanneer je ingelogt bent laat hij alleen zien van uitloggen en als je nog niet ingelogt bent zie je de knoppen inloggen en registeren.
if ($_SESSION['gebruikersnaam'] <> TRUE){ echo '
<li><a href="login.php">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>';}
else { echo '
<li><a href="logoff.php">Uitloggen</a></li>';}
?></li>
<li><a href="/contact.php">Contact</a></li>
<li><a href="/admin">Adminpaneel</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="Content">
<center>
<form method="post" action="<?php echo ($_SERVER["PHP_SELF"]);?>">
<?php
// verbinding maken met database.
include("mysqlconnect2.php");
// als je niet via reserveren.php een huis kiest krijg je de fout melding dat je eerst een huisje moet kiezen.
if ($_SESSION['huis'] <> TRUE) {echo "Kies a.u.b. een vakantie woning";}
else {
// via de $_SESSION wordt mee gegeven uit de vorige pagina welk huis er gekozen is.
$huis = $_SESSION['huis'];
$huisplaats = $_SESSION['huisplaats'];
// met $jaar wordt standaart voor de klant ingevult welke jaar tal het nu is.
$jaar = date ("Y");
//hier worden de data ingevult in 6 velden en die worden later weer omgezet naar 2 velden.
if (!empty($_POST)){
$adag = $_POST["adag"];
$amaand = $_POST["amaand"];
$ajaar = $_POST["ajaar"];
$vdag = $_POST["vdag"];
$vmaand = $_POST["vmaand"];
$vjaar = $_POST["vjaar"];
// hier wordt gecontroleerd als de velden voor maand en dag al ingevult zijn want jaar hoeft tenslotte niet die wordt al standaard ingevult daar de varriable $jaar.
if ($adag == NULL){echo "<p> U heeft geen datum ingevult.<br><input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
if ($vdag == NULL){echo "<p> U heeft geen datum ingevult.<br><input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($amaand == NULL){echo "<p> U heeft geen datum ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($vmaand == NULL){echo "<p> U heeft geen datum ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
}}
// hier wordt gecontroleerd als er een getal is ingevult en niet een letter of iets dergelijks.
if (is_numeric($adag) == true){if (is_numeric($amaand) == true){$adatum = "TRUE";};};
if (is_numeric($vdag) == true){if (is_numeric($vmaand) == true){$vdatum = "TRUE";};};
// hier wordt gezegt wanneer de datums niet goed zijn ingevult.
if ($adatum <> TRUE){echo "<p>De datums zijn niet goed ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
if ($vdatum <> TRUE){echo "<p>De datums zijn niet goed ingevult.<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else {
// hier worden de datums inelkaar gedraait aangezien ze boven in 6 losse velden zijn gezet.
$aankomstdatum = "$adag/$amaand/$ajaar";
$vertrekdatum = "$vdag/$vmaand/$vjaar";
$aankomstdatum2 = "$amaand/$adag/$ajaar";
$vertrekdatum2 = "$vmaand/$vdag/$vjaar";
// hier converteren we de datums zodat mysql het ook snapt.
$myinput=$aankomstdatum2;
$sqldate=date('Y-m-d',strtotime($myinput));
$myinput2=$vertrekdatum2;
$sqldate2=date('Y-m-d',strtotime($myinput2));
$myinput3=$day;
$sqldate3=date('Y-m-d',strtotime($myinput3));
// hier wordt het aantal dagen berekent tussen de aankomst_datum en de vertrek_datum.
function dateDiff($dformat, $endDate, $beginDate)
{
$date_parts1=explode($dformat, $beginDate);
$date_parts2=explode($dformat, $endDate);
$start_date=gregoriantojd($date_parts1[0], $date_parts1[1], $date_parts1[2]);
$end_date=gregoriantojd($date_parts2[0], $date_parts2[1], $date_parts2[2]);
return $end_date - $start_date;
}
// hier wordt het bovenstaande uitgevoerd.
$Dagen = dateDiff("/", $vertrekdatum2, $aankomstdatum2);
// hier wordt gecontroleerd als de dagen niet minder dan 0 zijn dus bijvoorbeeld niet van 5 mei 2010 tot 4 mei 2010.
if ($Dagen < 0){echo "<p>De aankomst- en vertrek data zijn niet goed ingevult!<br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
// hier wordt de controle uitgevoerd als er geen overlappende datums zijn.
$check = TRUE;
// hier wordt de query gecontroleerd op het gekozen huis
$checksql="SELECT aankomst_datum, vertrek_datum FROM reserveren WHERE huis =$huis";
//De gekozen datums van het gekozen vakantiehuis worden door gecontrolleerd als de aankomst_datum en vertrek_datum niet al ergens anders tussen vallen of gekozen zijn.
$sql2=mysql_query($checksql) ;
while($data2=mysql_fetch_array($sql2))
{
$aankomst_datum=$data2['aankomst_datum'];
$vertrek_datum=$data2['vertrek_datum'];
while ($aankomst_datum <> $vertrek_datum) {
if ($aankomst_datum == $sqldate)
{$check = false; $aankomst_datum = $vertrek_datum;}
else {$aankomst_datum = date( "Y-m-d", strtotime( "$aankomst_datum +1 day" ) );}
}
while ($aankomst_datum <> $vertrek_datum) {
if ($aankomst_datum == $sqldate2)
{$check = false; $aankomst_datum = $vertrek_datum;}
else {$aankomst_datum = date( "Y-m-d", strtotime( "$aankomst_datum +1 day" ) );}
}}
// als het gekozen datums wel tussen andere gekozen datums vallen wordt dat hier vermeld.
if ($check <> TRUE){echo "<p> Onze exucesses maar het huisje op $huisplaats is al verhuurt tussen deze data. <br> <input type='Button' value='Ga Terug' onClick='javascript:history.back();'> </p>";}
else{
// zo niet wordt hier alles weg geschreven naar de database velden.
$klantnummer = $_SESSION['klantnummer'];
$insert ="INSERT INTO reserveren(klantnummer, huis, aankomst_datum, vertrek_datum)
VALUES ('".$klantnummer."', '".$huis."', '".$sqldate."', '".$sqldate2."')";
$result = mysql_query($insert)or die ("INSERT FOUT: " .mysql_error());
echo "<p>De reservering is succesvol verlopen,<br> Uw aankomstdatum is : $aankomstdatum <br>uw verterkdatum is : $vertrekdatum.";
}}}}}}
else {
//een klein overzichtje wordt weer gegeven voordat de datums zijn ingevoerd.
$query=" SELECT * FROM huisjes WHERE huis = $huis";
$sql=mysql_query($query) or die ("FOUT ; " .mysql_error());
while($data=mysql_fetch_array($sql))
$afbeelding=$data['afbeelding'];
$huisplaats= $_SESSION['huisplaats'];
$prijs = $_SESSION['prijs'];
echo ("<p><img src='$afbeelding' alt='Vakantiehuis' width='200' height='160' /><br><br>
<p> U heeft gekozen voor $huisplaats . <br>
De kosten zijn €$prijs,- per dag. </p><br>
<p>
Boeking:<br />
Gewenste aankomst datum:
<input size='2' type='text' name='adag'> - <input size='2' type='text' name='amaand'> - <input size='4' type='text' name='ajaar' value='$jaar'><br>
Gewenste vertrek datum :
<input size='2' type='text' name='vdag'> - <input size='2' type='text' name='vmaand'> - <input size='4' type='text' name='vjaar' value='$jaar'><br>
<input type='submit' name='submit' value='Reserveer Nu!'>
");
}}
?>
</form>
</center>
</div>
</div>
<div id="footer">
<p> Copyright by Patrick Stel</p></div>
</div>
</body>
</html>
----------------------------------------------------------------------
hopenlijk kunnen jullie mij hierbij helpen...
ik kom er namelijk zelf niet meer uit.
alvast bedankt.
Gewijzigd op 06/09/2010 10:39:31 door Patrick Stel
Wat werkt er nu precies niet? Krijg je een foutmelding?
Chris Horeweg op 06/09/2010 10:32:37:
Wat werkt er nu precies niet? Krijg je een foutmelding?
Ik krijg geen foutmelding.
Het probleem is.
Als ik 2 datums invoer bij huisje 1 namelijk.
1. -> 04-10-2010 tot 04-11-2010 (mag die wegschrijven.)
2. -> 03-10-2010 tot 04-11-2010 (mag die niet wegschrijven, aangezien het huisje al verhuurt is bij datum 1 en dus niet nog keer verhuurd kan worden bij datum 2.)
mijn veldnamen zijn aankomst_datum en vertrek_datum en daarin worden de data's weg geschreven
variabelen kan je dus prima kwijt
Hoebedoel je dat? want ik snap het niet helemaal, ik heb wel verstand van php maar niet diep...