kalender script
http://www.phphulp.nl/php/script/php-algemeen/kalender-met-weeknummers/1696/
Ik heb dat script gebruikt voor een kalender. Hij werkt prima, heb het een ander aan kunnen passen. alleen nu is mijn vraag. als hij een maand laat zien . zoals nu met maart dan laat hij ook de 4 resterende dagen van februari en de eerste dag van mei zien. eigenlijk wil ik dat liever niet, zodat je alleen echt de dagen van maand hebt. is dit simpel op te lossen? of kan ik beter maar beginnen met een eigen kalender te schrijven?
Ik heb dat script gebruikt voor een kalender. Hij werkt prima, heb het een ander aan kunnen passen. alleen nu is mijn vraag. als hij een maand laat zien . zoals nu met maart dan laat hij ook de 4 resterende dagen van februari en de eerste dag van mei zien. eigenlijk wil ik dat liever niet, zodat je alleen echt de dagen van maand hebt. is dit simpel op te lossen? of kan ik beter maar beginnen met een eigen kalender te schrijven?
lees eens regel 45
Toevoeging op 09/03/2012 12:04:49:
het scriptje zoals ik hem heb aangepast ziet er nu zo uit:
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
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
<?php
function drukmaandaf($fm, $fy) {
// zelfgedefinieerde dag- en maandnamen
$dagnaam = array(0 => "ma", "di", "wo", "do", "vr", "za", "zo");
$maandnaam = array(1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");
$nu = time();
$by = (date("Y", $nu) == $fy);
$bm = (date("n", $nu) == $fm);
// zoek de eerste maandag van de week waarin de maand $fm begint
$eerstedag = mktime(0, 0, 0, $fm, 1, $fy);
if(date("w", $eerstedag) <> 1) {
// eerste dag van de maand is geen maandag
$eerstemaandag = mktime(0,0,0,$fm,1-(!date("w", $eerstedag) ? 6 : date("w", $eerstedag) - 1),$fy);
} else {
// eerste dag van de maand valt op een maandag
$eerstemaandag = $eerstedag;
}
// zoek de laatste zondag van de week waarin de maand $fm eindigt
$laatstedag = mktime(0, 0, 0, $fm, date("t", mktime(0, 0, 0, $fm, 1, $fy)),$fy);
if(date("w", $laatstedag)) {
// laatste dag van de maand is geen zondag
$laatstezondag = mktime(0, 0, 0, $fm+1, 7 - date("w",$laatstedag), $fy);
} else {
// laatste dag van de maand valt op een zondag
$laatstezondag = $laatstedag;
}
// we gaan kijken in hoeveel kalenderweken een maand zit. Hierbij moeten we op twee speciale gevallen
// letten: de eerste maandag van januari en de laatste zondag van december, deze kunnen namelijk in
// een ander jaar zitten en hierdoor de berekening van het het aantal weken verknoeien.
$edz = 0; // extra dagen die aan de zondag toegevoegd moeten worden
// we kunnen nu het aantal weken berekenen - het verschil tussen de
// eerste maandag en de laatste zondag +1 is altijd deelbaar door 7.
$aantalweken = (date("z", $laatstezondag) - date("z", $eerstemaandag) + 1)/7;
// we kunnen nu mbv $eerstemaandag en $aantalweken de kalender van een maand af gaan drukken
echo '<table border="1" cellspacing="0" cellpadding="2" width="400px">';
echo '<tr><td colspan="'.($aantalweken+1).'" align="center">';
echo $maandnaam[$fm].' '.$fy;
echo '</td></tr>';
// weeknummers afdrukken
echo "<tr><td>Weeknummer</td>";
for($i=0; $i < $aantalweken; $i++) {
$week = date("W", $eerstemaandag + $i * 604800 + 3600); // seconden in een week + een uur
echo '<td width="50px">'.(($week < 10) ? $week : $week).'</td>';
}
echo "</tr>";
// dagnamen en dagnummers afdrukken
for($d = 0; $d < 7; $d++) {
echo "<tr>";
echo "<td>".$dagnaam[$d]."</td>";
for($w = 0; $w < $aantalweken; $w++) {
// in verband met zomer en wintertijd moet bij de dag een uur opgeteld worden
// anders krijg je 2x dezelfde dag achter elkaar
$dag = $eerstemaandag+($w*7+$d)*86400 + 3600;
$dagnummer = date("d", $dag);
$bd = (date("j", $nu) == $dagnummer);
echo "<td".(date("n", $dag) <> $fm ? " ": ($by && $bm && $bd ? " " : "")).">";
echo $dagnummer;
echo "</td>";
}
echo '
</tr>
';
}
echo '
</table>
';
} ?>
function drukmaandaf($fm, $fy) {
// zelfgedefinieerde dag- en maandnamen
$dagnaam = array(0 => "ma", "di", "wo", "do", "vr", "za", "zo");
$maandnaam = array(1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");
$nu = time();
$by = (date("Y", $nu) == $fy);
$bm = (date("n", $nu) == $fm);
// zoek de eerste maandag van de week waarin de maand $fm begint
$eerstedag = mktime(0, 0, 0, $fm, 1, $fy);
if(date("w", $eerstedag) <> 1) {
// eerste dag van de maand is geen maandag
$eerstemaandag = mktime(0,0,0,$fm,1-(!date("w", $eerstedag) ? 6 : date("w", $eerstedag) - 1),$fy);
} else {
// eerste dag van de maand valt op een maandag
$eerstemaandag = $eerstedag;
}
// zoek de laatste zondag van de week waarin de maand $fm eindigt
$laatstedag = mktime(0, 0, 0, $fm, date("t", mktime(0, 0, 0, $fm, 1, $fy)),$fy);
if(date("w", $laatstedag)) {
// laatste dag van de maand is geen zondag
$laatstezondag = mktime(0, 0, 0, $fm+1, 7 - date("w",$laatstedag), $fy);
} else {
// laatste dag van de maand valt op een zondag
$laatstezondag = $laatstedag;
}
// we gaan kijken in hoeveel kalenderweken een maand zit. Hierbij moeten we op twee speciale gevallen
// letten: de eerste maandag van januari en de laatste zondag van december, deze kunnen namelijk in
// een ander jaar zitten en hierdoor de berekening van het het aantal weken verknoeien.
$edz = 0; // extra dagen die aan de zondag toegevoegd moeten worden
// we kunnen nu het aantal weken berekenen - het verschil tussen de
// eerste maandag en de laatste zondag +1 is altijd deelbaar door 7.
$aantalweken = (date("z", $laatstezondag) - date("z", $eerstemaandag) + 1)/7;
// we kunnen nu mbv $eerstemaandag en $aantalweken de kalender van een maand af gaan drukken
echo '<table border="1" cellspacing="0" cellpadding="2" width="400px">';
echo '<tr><td colspan="'.($aantalweken+1).'" align="center">';
echo $maandnaam[$fm].' '.$fy;
echo '</td></tr>';
// weeknummers afdrukken
echo "<tr><td>Weeknummer</td>";
for($i=0; $i < $aantalweken; $i++) {
$week = date("W", $eerstemaandag + $i * 604800 + 3600); // seconden in een week + een uur
echo '<td width="50px">'.(($week < 10) ? $week : $week).'</td>';
}
echo "</tr>";
// dagnamen en dagnummers afdrukken
for($d = 0; $d < 7; $d++) {
echo "<tr>";
echo "<td>".$dagnaam[$d]."</td>";
for($w = 0; $w < $aantalweken; $w++) {
// in verband met zomer en wintertijd moet bij de dag een uur opgeteld worden
// anders krijg je 2x dezelfde dag achter elkaar
$dag = $eerstemaandag+($w*7+$d)*86400 + 3600;
$dagnummer = date("d", $dag);
$bd = (date("j", $nu) == $dagnummer);
echo "<td".(date("n", $dag) <> $fm ? " ": ($by && $bm && $bd ? " " : "")).">";
echo $dagnummer;
echo "</td>";
}
echo '
</tr>
';
}
echo '
</table>
';
} ?>
Gewijzigd op 09/03/2012 11:36:06 door Teun Hesseling