startdatum en einddatum in reservering

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erna alting

erna alting

10/10/2010 22:02:41
Quote Anchor link
Voor een recreatiebedrijf moet ik het mogelijk maken online te reserveren.
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?
 
PHP hulp

PHP hulp

22/11/2024 14:50:48
 

10/10/2010 22:14:01
Quote Anchor link
Jawel, maar wat verwacht je nu van ons?
 
Toby hinloopen

toby hinloopen

10/10/2010 22:28:26
Quote Anchor link
Ik dacht dat PHPHulp meer voor wat specifieke vragen was ipv. globaal applicatie design.

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.
 
Robert Deiman

Robert Deiman

11/10/2010 07:00:44
Quote Anchor link
PHPhulp is natuurlijk voor allerlei vragen. Wel verwachten we dat er iets meer wordt nagedacht over de mogelijkheden. In dit geval lijkt het me handig dat je (erna alting) eerst eens wat "testgegevens" in de database gaat zetten, en dat eruit probeert te halen.
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!)
 
Erna alting

erna alting

11/10/2010 20:55:34
Quote Anchor link
Ja het was inderdaad een beetje kort door de bocht.

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)
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
<?/* 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***********************************************

?>

<table celpadding="0" celspacing="0" border="0" width="235">
<tr>
<td colspan="7">
<table border="0">
<tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
                }?>
<td width="210px"><h1 style="font-size:12pt;text-align:center;">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$maanden[$maand]?>
-
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$jaar?>
</a></h1></td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
                }?>

</tr>
</table>

</td>
</tr>
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
<?                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&amp;dag='
.$dag2.'&amp;maand='.$maand.'&amp;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&amp;dag='
.$dag2.'&amp;maand='.$maand.'&amp;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&amp;dag='.$dag2.'&amp;maand='.$maand.'&amp;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
 



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.