Europeese kalender

Door HaasOnline XX, 24 jaar geleden, 6.199x bekeken

Is het iemand dit jaar al opgevallen? Ons datum stelsel loopt dit jaar niet gelijk met het Amerikaanse stelsel, en aangezien we werken met Amerikaanse datum notaties in PHP/Java/VB6/etc hebben we dit jaar dus min of meer een bug. Dit is niet helemaal waar, omdat het alleen opgaat indien er gebruik wordt gemaakt van weeknummers.

Voor de nieuwsgierigen hoe het nu staat hieronder een kalender voor PHP. Hierin lopen de weeknummers dus wel goed dit jaar. (lees ook hiervoor ISO-8601)

Succes ermee, en als je handig bent kan je er ook links achter maken met een database of zoiets.

Voorbeeld: http://www.haasonline.com/scripts_php.php?script=kalender

Gesponsorde koppelingen

PHP script bestanden

  1. europeese-kalender

 

Er zijn 21 reacties op 'Europeese kalender'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jorik
Jorik
24 jaar geleden
 
0 +1 -0 -1
Voorbeeld?
Hosted by my: Voorbeeld

Vind het script er netjes uitzien, alleen jammer dat je niet tussen data kunt skippen en er geen rondje of vetgedrukt ofzo is met huidige datum
Jeroen
Jeroen
24 jaar geleden
 
0 +1 -0 -1
dat laatste zou zeker wel handig zijn ja. :)
Han eev
Han eev
24 jaar geleden
 
0 +1 -0 -1
vet ziet er goed uit....!


24 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit maar wat is er mis met datums??? Ik heb nog niks gemerkt
Onbekend onbekend
onbekend onbekend
24 jaar geleden
 
0 +1 -0 -1
Ik vind het ook wel jammer dat niet de datums van vorige/volgende maand in deze kalender worden weergegeven.

Heeft week 13 (2005) bijvoorbeeld maar 2 datums?
Jorik
Jorik
24 jaar geleden
 
0 +1 -0 -1
In april wel ja (A)


24 jaar geleden
 
0 +1 -0 -1
Sorry, ik was het voorbeeld vergeten. Maar dat komt doordat dit script als basis dient voor een uitgebreidere applicatie.

Vaag dat het trouwens niemand is opgevallen dat de volgende code totaal overbodig is voor een voorbeeld:
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
/* Navigatie deel */
    $last_month = $this_month - 1;
    $next_month = $this_month + 1;
    /* Navigatie deel beveiligen tegen mogelijke fouten*/
    if ($last_month == 12) {
        $last_year = $this_year - 1;
    } else {
        $last_year = $this_year;
        }
    if ($next_month == 1) {
        $next_year = $this_year + 1;
    } else {
        $next_year = $this_year;
        }
Jorik
Jorik
24 jaar geleden
 
0 +1 -0 -1
Moet opgevallen, maar daardoor met met een $_GET het wel erg makkelijk te maken zijn..


24 jaar geleden
 
0 +1 -0 -1
toch makkelijk maar wat dag je van dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$date
= fuction {getdate}
?>

geintje dit is wat m'n broertje kan van 6! ik ben er veel beter in maak ik heb iets met mijn ie6.0 als ik bijv.
dit script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
echo "halo";
//ik doe maar wat hoor
?>

zet in php en zeg op in browser niks zet gewoon een leege pagina neer weet niet hoe dat komt het is hetzelfde als mijn firefox
wil iemand me helpen


24 jaar geleden
 
0 +1 -0 -1
post op het forum! of kijk eens hier [faq]2[/faq] onderaan, vindtje je wat je zoekt!
Bram Z
Bram Z
24 jaar geleden
 
0 +1 -0 -1
Hoe bedoel je dat het amerikaans dagen stelsel anders is ???
HaasOnline XX
HaasOnline XX
24 jaar geleden
 
0 +1 -0 -1
Voor Jorik en de rest, vervang de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
                 /* Weekdag weergeven */
                 echo "<td class=\"kaltexr\">$the_day</td>\n";


Door deze code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
                 /* Weekdag weergeven */
                 if (date("d-m-Y",mktime(0,0,0,$this_month,$the_day,$this_year))==date("d-m-Y")) {
                     /* Datum van vandaag */
                     echo "<td class=\"kaltexr\"><a href=\"http://www.google.com\" class=\"kallnk\"><b>$the_day</b></a></td>\n";
                     } else {
                     echo "<td class=\"kaltexr\"><a href=\"http://www.google.com\" class=\"kallnk\">$the_day</a></td>\n";
                     }


En de datum wordt dikgedrukt. Succes ermee.


24 jaar geleden
 
0 +1 -0 -1
Perfect script!

Ing. M. Head.
Elwin - Fratsloos
Elwin - Fratsloos
24 jaar geleden
 
0 +1 -0 -1
Uhm.. hoezo loopt onze kalender anders? Dat snap ik niet helemaal.

Maar even over het script; probeer het zo te veranderen dat niet zondag maar de maandag de eerste dag van de week is. Dat is de Europese notatie.

Overigens supernetjes... die weeknummers!

Elwin


24 jaar geleden
 
0 +1 -0 -1
Klopt niet. Loopt 1 dag vooruit. In April was ie goed, ja.


24 jaar geleden
 
0 +1 -0 -1
Hier ontbrekende correcties.. want oude code hierboven geeft bij mij [os x] engelse maandnamen.... en beste is te beginnen met een php aanhef ook al doe je daar even niet in php.... Maar veelal wordt anders de php niet aangesproken op somminge consigs van serevr

Good luck!

Valentijn


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
?>

<head>
<title></title>
</head>
<style>


td.kalalg { padding: 0px; margin: 0px; center: top; font: 11px Verdana, Arial; font-weight: bold; background-color: #FFFFFF; color: #0000CC; line-height: 16px; }
td.kaltit { padding: 0px; margin: 0px; center: top; font: 11px Verdana, Arial; font-weight: normal; background-color: #FFFFFF; color: #AAAAAA; line-height: 16px; }
td.kaltexr { padding: 0px; margin: 0px; center: top; font: 11px Verdana, Arial; font-weight: normal; background-color: #FFFFFF; color: #000000; line-height: 16px; }

</style>

<body>

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
<?php
    echo "<table width=\"200\">\n";
    echo "<tr><td class=\"kalalg\">";

    /* Start weergave berekeningsdeel */
    $this_month = date("n");
    $month_name = date("F");
    $this_year = date("Y");

    /* Navigatie deel */
    $last_month = $this_month - 1;
    $next_month = $this_month + 1;
    /* Navigatie deel beveiligen tegen mogelijke fouten*/
    if ($last_month == 12) {
        $last_year = $this_year - 1;
    }
else {
        $last_year = $this_year;
        }

    if ($next_month == 1) {
        $next_year = $this_year + 1;
    }
else {
        $next_year = $this_year;
        }

    /* correcties ENG-> NL */
    if ($month_name == "January") {$maand="Januari";}
    if ($month_name == "February") {$maand="Februari";}
    if ($month_name == "March") {$maand="Maart";}
    if ($month_name == "May") {$maand="Mei";}
    if ($month_name == "June") {$maand="Juni";}
    if ($month_name == "July") {$maand="Juli";}
    if ($month_name == "August") {$maand="Augustus";}
    if ($month_name == "October") {$maand="Oktober";}

    /* Hoofdtitel aanmaken */
    echo "<table width=\"100%\">\n";
    echo "<tr><td class=\"kalalg\">";
    echo "<center>$maand $this_year</center>";
    echo "</td></tr>\n";
    echo "</table>\n";

    /* Titels aanmaken voor de kalender */
    echo "<table width=\"100%\" border=\"0\">\n";
    echo "<tr><td class=\"kaltit\"> </td>\n";
    echo "<td class=\"kaltit\">Zo</td>\n";
    echo "<td class=\"kaltit\">Ma</td>\n";
    echo "<td class=\"kaltit\">Di</td>\n";
    echo "<td class=\"kaltit\">Wo</td>\n";
    echo "<td class=\"kaltit\">Do</td>\n";
    echo "<td class=\"kaltit\">Vr</td>\n";
    echo "<td class=\"kaltit\">Za</td>\n";
    echo "</td></tr>\n";

    /* Voorberekenen voor het tekenen */
    $first_day = date("w", mktime(0, 0, 0, $this_month, 1, $this_year));
    $total_days = date("t", mktime(0, 0, 0, $this_month, 1, $this_year));
    $week_num = 1;
    $day_num = 1;
    $the_day = " ";

    /* Doorloop het aantal weergeven weken (primaire teller in het proces) */
    while ($week_num <= 6) {
           echo "<tr>\n";

           if (($the_day-1)>0) {
                if ($the_day>$total_days) {
                    echo "<td class=\"kaltit\"> </td>";
                }
else {
                    echo "<td class=\"kaltit\">".date("W",mktime(0,0,0,$this_month,$the_day+2,$this_year))."</td>";
                    }
           }
else {
                echo "<td class=\"kaltit\">".date("W",mktime(0,0,0,$this_month,1,$this_year))."</td>";
                }


           /* Loop door de weekdagen */
           for ( $i = 0; $i <= 6; $i++ ) {
                 if ($week_num == 1) {
                     if ($i < $first_day)
                          $the_day = " ";
                     else if ($i == $first_day) {
                          $the_day = 1;
                          }
                     }
else {
                         if ($the_day > $total_days)
                             $the_day = " ";
                     }

                 /* Weekdag weergeven */

                 echo "<td class=\"kaltexr\">$the_day</td>\n";

                 /* Tellen naar de volgende weekdag */
                 if ($the_day != " ")
                     $the_day++;
                 }


          /* Volgende week doorlopen */
          echo "</tr>\n";

          $week_num++;
          }


    /* Afronden van alle tags */
    echo "</table>\n";
    echo "</td></tr>\n";
    echo "</table>\n";
    ?>

</body>
</html>
Ruben
Ruben
23 jaar geleden
 
0 +1 -0 -1
Wil iem. me het gedeelte geven die alleen het weeknummer aanmaakt? Bedankt!
Ruben
Wietze
Wietze
22 jaar geleden
 
0 +1 -0 -1
Ik ben nu bezig met het aanpassen van deze kalender. (ziet er goed uit btw!)

Ben alleen een probleem tegen gekomen.

Niet elke maand heeft een gelijk aantal weken.
Sommige maanden hebben 5 weken en sommige hebben 6 weken (zoals juli).
Ik wil het script nu graag zo hebben dat als een maand uit 5 weken bestaat er ook maar 5 weeknummers ervoor komen te staan en wanneer een maand 6 weken heeft er dus 6 weken voor komen te staan.
Situatie nu is: Script gaat uit van 6 weken, wanneer een maand dus 5 weken heeft komt er een extra week bij te staan zonder dagen er achter.

Wie kan mij hier een oplossing voor bieden?
Sven de Bie
Sven de Bie
22 jaar geleden
 
0 +1 -0 -1
Ik heb de onderstaande script. Een voorbeeld is te zien op http://www.villa-costablanca.nl/index.php?p=beschikbaar, hij laat een aantal weken verkeerd zien zoals Juli 2007 begint met week 27 ipv 26, er hij voegt automatisch een weekje aan sommige maanden toe.

Mijn code:
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
<?
function showMonth($month, $year){
?>

<script>
function toggleCost(id){
    if(document.all(id).style.visibility == "visible"){
        document.all(id).style.visibility = "hidden";
    } else {
        document.all(id).style.visibility = "visible";
    }
}
</script>
<style>
td.kalalg { padding: 0px; margin: 0px; center: top; font: 12px Verdana; font-weight: bold; background-color: #FFFFFF; color: #000066; line-height: 16px; }
td.kaltit { padding: 0px; margin: 0px; center: top; font: 12px Verdana; font-weight: normal; background-color: #FFFFFF; color: #AAAAAA; line-height: 16px; }
td.kaltexr { padding: 0px; margin: 0px; center: top; font: 12px Verdana; font-weight: normal; background-color: #FFFFFF; color: #000000; line-height: 16px; }
</style>
<?
    echo "<table width=\"200\">\n";
    echo "<tr><td class=\"kalalg\">";

    /* Start weergave berekeningsdeel */
    $this_month = $month;
    $this_year = $year;

    /* Hoofdtitel aanmaken */
    echo "<table width=\"100%\">\n";
    echo "<tr><td class=\"kalalg\">";
    echo "<center>".dezeMaand($month)." $this_year</center>";
    echo "</td></tr>\n";
    echo "</table>\n";

    /* Titels aanmaken voor de kalender */
    echo "<table width=\"100%\" border=\"0\">\n";
    echo "<tr><td class=\"kaltit\"> </td>\n";
    echo "<td class=\"kaltit\">Zo</td>\n";
    echo "<td class=\"kaltit\">Ma</td>\n";
    echo "<td class=\"kaltit\">Di</td>\n";
    echo "<td class=\"kaltit\">Wo</td>\n";
    echo "<td class=\"kaltit\">Do</td>\n";
    echo "<td class=\"kaltit\">Vr</td>\n";
    echo "<td class=\"kaltit\">Za</td>\n";
    echo "</td></tr>\n";

    /* Voorberekenen voor het tekenen */
    $first_day = date("w", mktime(0, 0, 0, $this_month, 1, $this_year));
    $total_days = date("t", mktime(0, 0, 0, $this_month, 1, $this_year));
    $week_num = 1;
    $day_num = 1;
    $the_day = " ";

    /* Doorloop het aantal weergeven weken (primaire teller in het proces) */
    while ($week_num <= 6) {
           echo "<tr>\n";

           if (($the_day-1)>0) {
                if ($the_day>$total_days) {
                    echo "<td class=\"kaltit\"> </td>";
                }
else {
                    echo "<td class=\"kaltit\" onmouseover=\"toggleCost('".$week_num.$year.$month."');\" onmouseout=\"toggleCost('".$week_num.$year.$month."');\">".date("W",mktime(0,0,0,$this_month,$the_day+2,$this_year));
                    ?>

<div id="<?=$week_num.$year.$month; ?>" style="visibility: hidden; position: absolute; background-color: #00CCFF; border: 1px solid #000099; width: 200px; color: #000000;"><strong>Week <?=date("W",mktime(0,0,0,$this_month,$the_day+2,$this_year)); ?>
</strong><br />
<?
$sqlPrijs
= mysql_query("SELECT * FROM vcb_prijzen WHERE week='".date("W",mktime(0,0,0,$this_month,$the_day+2,$this_year))."'");
$prijsLine = mysql_fetch_array($sqlPrijs);
?>

Prijs per week: &#8364; <?=number_format($prijsLine['prijs'],2,",","."); ?>
</div>
                    <?
                    echo "</td>";
                    }
           }
else {
                echo "<td class=\"kaltit\" onmouseover=\"toggleCost('".$week_num.$year.$month."');\" onmouseout=\"toggleCost('".$week_num.$year.$month."');\">".date("W",mktime(0,0,0,$this_month,1,$this_year));
                ?>

<div id="<?=$week_num.$year.$month; ?>" style="visibility: hidden; position: absolute; background-color: #00CCFF; border: 1px solid #000099; width: 200px; color: #000000;"><strong>Week <?=date("W",mktime(0,0,0,$this_month,$the_day+2,$this_year)); ?>
</strong><br />
<?
$sqlPrijs
= mysql_query("SELECT * FROM vcb_prijzen WHERE week='".date("W",mktime(0,0,0,$this_month,1,$this_year))."'");
$prijsLine = mysql_fetch_array($sqlPrijs);
?>

Prijs per week: &#8364; <?=number_format($prijsLine['prijs'],2,",","."); ?>
</div>
                <?
                echo "</td>";
                }


           /* Loop door de weekdagen */
           for ( $i = 0; $i <= 6; $i++ ) {
                 if ($week_num == 1) {
                     if ($i < $first_day)
                          $the_day = " ";
                     else if ($i == $first_day) {
                          $the_day = 1;
                          }
                     }
else {
                         if ($the_day > $total_days)
                             $the_day = " ";
                     }

                 /* Weekdag weergeven */
                 echo "<td class=\"kaltexr\">$the_day</td>\n";

                 /* Tellen naar de volgende weekdag */
                 if ($the_day != " ")
                     $the_day++;
                 }


          /* Volgende week doorlopen */
          echo "</tr>\n";

          $week_num++;
          }


    /* Afronden van alle tags */
    echo "</table>\n";
    echo "</td></tr>\n";
    echo "</table>\n";
}

?>


Mijn excuses voor de html dwars door de php-code maar zo is het een stuk makkelijker designen.

Mod-edit: Zoals je ziet word de code nu goed weergegeven, dit is te bereiken door tags te gebruiken om de totale code. Andere info kan je in de FAQ lezen.
Kalle P
Kalle P
22 jaar geleden
 
0 +1 -0 -1
Je kunt 10x beter je database het werk laten doen als je met tijden werkt.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Robert Deiman
Robert Deiman
22 jaar geleden
 
0 +1 -0 -1
Gaat nog niet helemala goed zie ik.. voor juli 2007 staat er week 26 ineens onderaan.
en voor augustus 2007 staat er week 31 ineens onderaan..

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. europeese-kalender

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.