Reservering script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick Stel

Patrick Stel

06/09/2010 10:27:41
Quote Anchor link
Hallo,

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)
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
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>

----------------------------------------------------------------------
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
 
PHP hulp

PHP hulp

19/04/2024 01:58:36
 
Chris -

Chris -

06/09/2010 10:32:37
Quote Anchor link
Gelieve je code tussen de -tags te plaatsen.

Wat werkt er nu precies niet? Krijg je een foutmelding?
 
Patrick Stel

Patrick Stel

06/09/2010 11:15:03
Quote Anchor link
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.)
 
B a s
Beheerder

B a s

06/09/2010 11:41:33
Quote Anchor link
Je leest nu iets uit de database en gaat het dan via PHP vergelijken. Waarom vergelijk je het niet zodra je data selecteert via MySQL?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM bezetting WHERE (aankomst BETWEEN '2010-10-04' AND '2010-11-04' OR vertrek BETWEEN '2010-10-04' AND '2010-11-04')
 
Patrick Stel

Patrick Stel

06/09/2010 12:20:25
Quote Anchor link
Ja opzich zou dat ook kunnen, maar ik werk met variabelen hé dus vaste waardes kan ik er zoiezo niet inzetten..

mijn veldnamen zijn aankomst_datum en vertrek_datum en daarin worden de data's weg geschreven
 
Mathijs -

Mathijs -

07/09/2010 11:23:04
Quote Anchor link
variabelen kan je ook daar in kwijt, gebruik prepared statements of anders de qeury gewoon als een string behandelen, wat t voor php ook is.

variabelen kan je dus prima kwijt
 
Patrick Stel

Patrick Stel

08/09/2010 08:36:49
Quote Anchor link
Hoebedoel je dat? want ik snap het niet helemaal, ik heb wel verstand van php maar niet diep...
 



Overzicht Reageren

 
 

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.