Reserverings script

Overzicht

Sponsored by: Vacatures door Monsterboard

Patrick Stel

Patrick Stel

21/05/2010 11:00:53
Anchor link
Hallo,

Ik heb een reserverings systeem geschreven voor een school opdracht, en ik zit nu moet nog één fout te spelen waar ik zelf niet uit kom.

Namelijk als ik een datum in geef op.

22-05-2010 - wordt deze weg geschreven naar de database wat goed is
geef ik een andere datum op namelijk.

23-05-2010 - krijgt de gebruiker een fout melding dat deze datum al in gebruik is omdat een andere datum daar tussen valt.

geef ik nog een datum op.

21-05-2010 - wordt deze weg geschreven naar de database wat niet zo hoort aangezien een andere datum daar ook al tussen valt.

ik zal mijn php script mee posten mischien dat jullie het zien, ik zie het namelijk niet meer.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>
 
PHP hulp

PHP hulp

11/05/2024 15:54:36
 

21/05/2010 11:04:49
Anchor link
Die andere twee datums (data) moeten ook gewoon vrij zijn?
 
Patrick Stel

Patrick Stel

21/05/2010 11:09:44
Anchor link
nee, het concept is

ik boek het huis je op 22-05-2010 tot 25-05-2010
dat wordt weg geschreven naar de database.

daarna wil ik het zelfde huisje reserveren op 21-05-2010 tot 25-05-2010 en die mag dus niet verhuurd worden omdat hij de eerste reservering overlapt

daarna wil ik nog een keer het zelfde huisje huren op 23-05-2010 tot 25-05-2010 die mag ook niet verhuurt worden (valt tussen de eerste datum) maar mijn probleem is dus zodra ik er 1 dag of paar dagen ervoor ga zitten, voor de eerste reservering schrijft hij hem ook weg naar de database terwijl dat dus niet mag aangezien die data al verhuurt is.
Gewijzigd op 21/05/2010 11:12:03 door Patrick Stel
 
B a s
Beheerder

B a s

21/05/2010 13:02:35
Anchor link
Dubbel topic
 
 

Dit topic is gesloten.



Overzicht

 
 

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.