Kalender
Twee problemen:
1. Als ik op vorige klik, wanneer m=10, komt er m=9 ipv m=09. Hierdoor wordt de maand niet weergegeven.
2. De actuele dag moet weergegeven worden, maar kom er niet uit hoe ik kan controleren of $day_num == $check
Ik denk dat m'n code een stuk korter kan, misschien dat iemand me wat aanwijzingen / tips kan geven?
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
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
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
<?php
date_default_timezone_set('Europe/Amsterdam');
// Dit wordt de datum van vandaag
$date = time ();
// Dit brengt de dag, maand en jaar in afzonderlijke variabelen
$dag = date('d', $date);
// maand
if(isset($_GET['m'])) {
$maand = $_GET['m'];
}else{
$maand = date('m', $date);
}
// jaar
if(isset($_GET['Y'])) {
$jaar = $_GET['Y'];
}else{
$jaar = date('Y', $date);
}
// Genereer de eerste dag van de maand
$first_day = mktime(0,0,0,$maand, 1, $jaar);
// Maandnaam
$title = date('F', $first_day);
// Hier vinden we uit welke dag van de week de eerste dag van de maand valt op
$day_of_week = date('D', $first_day);
// Wit ruimte voor begin eerste dag maand
switch($day_of_week){
case "Mon": $blank = 0; break;
case "Tue": $blank = 1; break;
case "Wed": $blank = 2; break;
case "Thu": $blank = 3; break;
case "Fri": $blank = 4; break;
case "Sat": $blank = 5; break;
case "Sun": $blank = 6; break;
}
// Namen voor de maanden
$maanden = array("01"=>"januari",
"02"=>"februari",
"03"=>"maart",
"04"=>"april",
"05"=>"mei",
"06"=>"juni",
"07"=>"juli",
"08"=>"augustus",
"09"=>"september",
"10"=>"oktober",
"11"=>"november",
"12"=>"december");
// Kies maand
$maand_title = $maanden["$maand"];
// Vervolgens bepalen hoeveel dagen zijn in de lopende maand
$dagen_in_maand = cal_days_in_month(0, $maand, $jaar);
// Linkjes vorige + volgende maand
$vorige_maand = $maand - 1;
$vorig_jaar = $jaar;
if($vorige_maand < 1) {
unset($vorige_maand,$vorig_jaar);
$vorige_maand = 12;
$vorig_jaar = $jaar - 1;
}
if($_GET['m'] < 10) {
switch($vorige_maand) {
case "1": $vorige_maand = "01"; break;
case "2": $vorige_maand = "02"; break;
case "3": $vorige_maand = "03"; break;
case "4": $vorige_maand = "04"; break;
case "5": $vorige_maand = "05"; break;
case "6": $vorige_maand = "06"; break;
case "7": $vorige_maand = "07"; break;
case "8": $vorige_maand = "08"; break;
case "9": $vorige_maand = "09"; break;
}
}
$volgende_maand = $maand + 1;
$volgend_jaar = $jaar;
if($volgende_maand > 12) {
unset($volgende_maand,$volgend_jaar);
$volgende_maand = "01";
$volgend_jaar = $jaar + 1;
}
if($_GET['m'] < 10) {
switch($volgende_maand) {
case "1": $volgende_maand = "01"; break;
case "2": $volgende_maand = "02"; break;
case "3": $volgende_maand = "03"; break;
case "4": $volgende_maand = "04"; break;
case "5": $volgende_maand = "05"; break;
case "6": $volgende_maand = "06"; break;
case "7": $volgende_maand = "07"; break;
case "8": $volgende_maand = "08"; break;
case "9": $volgende_maand = "09"; break;
}
}
//Tabel heads opbouwen
echo "<a href=\"test_calender.php?Y=".$vorig_jaar."&m=".$vorige_maand."\"><<<< Vorige</a> ";
echo "<a href=\"test_calender.php?Y=".$volgend_jaar."&m=".$volgende_maand."\">Volgende >>></a><br><br>";
echo "<div id=\"calendar\">";
echo " <div class=\"year\" colspan=\"7\">".$jaar."</div>\n";
echo " <div class=\"month\" colspan=7>".$maand_title."</div>\n";
echo " <div class=\"day\">Ma</div>\n <div class=\"day\">Di</div>\n <div class=\"day\">Wo</div>\n <div class=\"day\">Do</div>\n <div class=\"day\">Vr</div>\n <div class=\"day\">Za</div>\n <div class=\"day\">Zo</div>\n";
//This counts the days in the week, up to 7
$day_count = 1;
echo " ";
//first we take care of those blank days
while ($blank > 0) {
echo " <div class=\"boxempty\"> </div>\n";
$blank = $blank-1;
$day_count++;
}
//sets the first day of the month to 1
$day_num = 1;
//count up the days, untill we've done all of them in the month
while ($day_num <= $dagen_in_maand) {
$check = date('d');
if($day_num == $check) {
echo " <div class=\"boxcurrent\">".$day_num."</div>\n";
}else{
echo " <div class=\"box\">".$day_num."</div>\n";
}
$day_num++;
$day_count++;
//Make sure we start a new row every week
if ($day_count > 7) {
echo " ";
$day_count = 1;
}
}
//Finaly we finish out the table with some blank details if needed
while ($day_count >1 && $day_count <=7) {
echo " <div class=\"boxempty\"> </div>\n";
$day_count++;
}
echo "</div>";
?>
date_default_timezone_set('Europe/Amsterdam');
// Dit wordt de datum van vandaag
$date = time ();
// Dit brengt de dag, maand en jaar in afzonderlijke variabelen
$dag = date('d', $date);
// maand
if(isset($_GET['m'])) {
$maand = $_GET['m'];
}else{
$maand = date('m', $date);
}
// jaar
if(isset($_GET['Y'])) {
$jaar = $_GET['Y'];
}else{
$jaar = date('Y', $date);
}
// Genereer de eerste dag van de maand
$first_day = mktime(0,0,0,$maand, 1, $jaar);
// Maandnaam
$title = date('F', $first_day);
// Hier vinden we uit welke dag van de week de eerste dag van de maand valt op
$day_of_week = date('D', $first_day);
// Wit ruimte voor begin eerste dag maand
switch($day_of_week){
case "Mon": $blank = 0; break;
case "Tue": $blank = 1; break;
case "Wed": $blank = 2; break;
case "Thu": $blank = 3; break;
case "Fri": $blank = 4; break;
case "Sat": $blank = 5; break;
case "Sun": $blank = 6; break;
}
// Namen voor de maanden
$maanden = array("01"=>"januari",
"02"=>"februari",
"03"=>"maart",
"04"=>"april",
"05"=>"mei",
"06"=>"juni",
"07"=>"juli",
"08"=>"augustus",
"09"=>"september",
"10"=>"oktober",
"11"=>"november",
"12"=>"december");
// Kies maand
$maand_title = $maanden["$maand"];
// Vervolgens bepalen hoeveel dagen zijn in de lopende maand
$dagen_in_maand = cal_days_in_month(0, $maand, $jaar);
// Linkjes vorige + volgende maand
$vorige_maand = $maand - 1;
$vorig_jaar = $jaar;
if($vorige_maand < 1) {
unset($vorige_maand,$vorig_jaar);
$vorige_maand = 12;
$vorig_jaar = $jaar - 1;
}
if($_GET['m'] < 10) {
switch($vorige_maand) {
case "1": $vorige_maand = "01"; break;
case "2": $vorige_maand = "02"; break;
case "3": $vorige_maand = "03"; break;
case "4": $vorige_maand = "04"; break;
case "5": $vorige_maand = "05"; break;
case "6": $vorige_maand = "06"; break;
case "7": $vorige_maand = "07"; break;
case "8": $vorige_maand = "08"; break;
case "9": $vorige_maand = "09"; break;
}
}
$volgende_maand = $maand + 1;
$volgend_jaar = $jaar;
if($volgende_maand > 12) {
unset($volgende_maand,$volgend_jaar);
$volgende_maand = "01";
$volgend_jaar = $jaar + 1;
}
if($_GET['m'] < 10) {
switch($volgende_maand) {
case "1": $volgende_maand = "01"; break;
case "2": $volgende_maand = "02"; break;
case "3": $volgende_maand = "03"; break;
case "4": $volgende_maand = "04"; break;
case "5": $volgende_maand = "05"; break;
case "6": $volgende_maand = "06"; break;
case "7": $volgende_maand = "07"; break;
case "8": $volgende_maand = "08"; break;
case "9": $volgende_maand = "09"; break;
}
}
//Tabel heads opbouwen
echo "<a href=\"test_calender.php?Y=".$vorig_jaar."&m=".$vorige_maand."\"><<<< Vorige</a> ";
echo "<a href=\"test_calender.php?Y=".$volgend_jaar."&m=".$volgende_maand."\">Volgende >>></a><br><br>";
echo "<div id=\"calendar\">";
echo " <div class=\"year\" colspan=\"7\">".$jaar."</div>\n";
echo " <div class=\"month\" colspan=7>".$maand_title."</div>\n";
echo " <div class=\"day\">Ma</div>\n <div class=\"day\">Di</div>\n <div class=\"day\">Wo</div>\n <div class=\"day\">Do</div>\n <div class=\"day\">Vr</div>\n <div class=\"day\">Za</div>\n <div class=\"day\">Zo</div>\n";
//This counts the days in the week, up to 7
$day_count = 1;
echo " ";
//first we take care of those blank days
while ($blank > 0) {
echo " <div class=\"boxempty\"> </div>\n";
$blank = $blank-1;
$day_count++;
}
//sets the first day of the month to 1
$day_num = 1;
//count up the days, untill we've done all of them in the month
while ($day_num <= $dagen_in_maand) {
$check = date('d');
if($day_num == $check) {
echo " <div class=\"boxcurrent\">".$day_num."</div>\n";
}else{
echo " <div class=\"box\">".$day_num."</div>\n";
}
$day_num++;
$day_count++;
//Make sure we start a new row every week
if ($day_count > 7) {
echo " ";
$day_count = 1;
}
}
//Finaly we finish out the table with some blank details if needed
while ($day_count >1 && $day_count <=7) {
echo " <div class=\"boxempty\"> </div>\n";
$day_count++;
}
echo "</div>";
?>
1 fixed --> vanaf regel 66 hetvolgende:
Code (php)
2. date('j'); geeft hetzelfde.
Ik moet checken of het de juiste maand is, en dan $day_num een andere kleur geven.
Gewijzigd op 01/01/1970 01:00:00 door Sven Onbekend
Niet direct een oplossing voor de 'problemen' maar je zei dat 't korter moest kunnen, ik heb voor mezelf Lang geleden volgens mij het zelfde script gehad, en naar eigen wens aangepast..
Ik post 'm wel ff, ken je zelf zien of je er wat mee kunt of niet...
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
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
<?
$datum =time () ;
$maanden=array('','Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December');
$dag = date('d', $datum) ;
$maand = date('m', $datum) ;
$vandaag = date('Y', $datum) ;
//Hier pakken we de 1e dag v/d maand
$eerste_dag = mktime(0,0,0,$maand, 1, $vandaag) ;
//Maandnummer omzetten naar text.
$title = $maanden[$maand+0];
$blank=date('w',$eerste_dag);
$dags_in_maand = cal_days_in_month(0, $maand, $vandaag) ;
//Begin van het tabel
echo '<table border=0 width=224>';
echo '<tr><th colspan=7>' . $title . ' ' . $vandaag . ' </th></tr>';
echo '<tr><td width=42>Zo</td><td width=42>Ma</td><td width=42>Di</td><td width=42>Wo</td><td width=42>Do</td><td width=42>Vr</td><td width=42>Za</td></tr>';
//Teller op 1
$dag_teller = 1;
echo '<tr>';
//Eerst aantal lege velden maken
while ( $blank > 0 ) {
echo '<td> </td>';
$blank = $blank-1;
$dag_teller++;
}
//eerste dag vd maand =1;
$dag_nummer = 1;
//while loop voor de dagen van de maand
while ( $dag_nummer <= $dags_in_maand ) {
if ($dag_nummer==$dag) { $vandaag=' *'; } else { $vandaag=''; }
echo '<td>'.sprintf("%02d",$dag_nummer) .$vandaag.'</td>';
$dag_nummer++; $dag_teller++;
if ($dag_teller > 7) {
echo '</tr><tr>';
$dag_teller = 1;
}
}
// Laatste stukje aanvullen met lege td
while ( $dag_teller >1 && $dag_teller <=7 ) {
echo '<td> </td>';
$dag_teller++;
}
// TR / TABLE sluiten.
echo '</tr></table>';
?>
$datum =time () ;
$maanden=array('','Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December');
$dag = date('d', $datum) ;
$maand = date('m', $datum) ;
$vandaag = date('Y', $datum) ;
//Hier pakken we de 1e dag v/d maand
$eerste_dag = mktime(0,0,0,$maand, 1, $vandaag) ;
//Maandnummer omzetten naar text.
$title = $maanden[$maand+0];
$blank=date('w',$eerste_dag);
$dags_in_maand = cal_days_in_month(0, $maand, $vandaag) ;
//Begin van het tabel
echo '<table border=0 width=224>';
echo '<tr><th colspan=7>' . $title . ' ' . $vandaag . ' </th></tr>';
echo '<tr><td width=42>Zo</td><td width=42>Ma</td><td width=42>Di</td><td width=42>Wo</td><td width=42>Do</td><td width=42>Vr</td><td width=42>Za</td></tr>';
//Teller op 1
$dag_teller = 1;
echo '<tr>';
//Eerst aantal lege velden maken
while ( $blank > 0 ) {
echo '<td> </td>';
$blank = $blank-1;
$dag_teller++;
}
//eerste dag vd maand =1;
$dag_nummer = 1;
//while loop voor de dagen van de maand
while ( $dag_nummer <= $dags_in_maand ) {
if ($dag_nummer==$dag) { $vandaag=' *'; } else { $vandaag=''; }
echo '<td>'.sprintf("%02d",$dag_nummer) .$vandaag.'</td>';
$dag_nummer++; $dag_teller++;
if ($dag_teller > 7) {
echo '</tr><tr>';
$dag_teller = 1;
}
}
// Laatste stukje aanvullen met lege td
while ( $dag_teller >1 && $dag_teller <=7 ) {
echo '<td> </td>';
$dag_teller++;
}
// TR / TABLE sluiten.
echo '</tr></table>';
?>
Groetjes René
Thanx voor de upload van je script. Is inderdaad van dezelfde bron, maar had het inmiddels al aangepast naar mijn wensen.
Zit helaas nog steeds met probleem 2 :(
sven schreef op 03.09.2009 14:27:
2. De actuele dag moet weergegeven worden, maar kom er niet uit hoe ik kan controleren of $day_num == $check
if($day_num == $check)
Of misschien uitleggen wat je bedoelt.
Ik moet dus op een of andere manier controleren of $day_num (de nummers van de dagen) overeenkomen met de dag van de huidige datum.
Iets van:
$check = date('j');
if($day_num == $check) {
echo "vandaag";
}else{
echo "niet vandaag";
}
Het bovenstaande levert echter bij iedere maand, de 3e dag een andere layout op, terwijl ik alleen maar bij de dag van vandaag een andere layout wil.
Je moet een $var gebruiken waar de hele datum in staat.
$var = '2009-09-03';
if($var == date('Y-m-d'))
{
// vandaag
}
else
{
// andere dag
}
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
...
//sets the first day of the month to 1
$day_num = 1;
//count up the days, untill we've done all of them in the month
while ($day_num <= $dagen_in_maand) {
$check = date('j');
if($day_num == $actuele_dag) {
echo " <div class=\"boxcurrent\">".$day_num."</div>\n";
}else{
echo " <div class=\"box\">".$day_num."</div>\n";
}
$day_num++;
$day_count++;
//Make sure we start a new row every week
if ($day_count > 7) {
echo " ";
$day_count = 1;
}
}
...
?>
[\code]
...
//sets the first day of the month to 1
$day_num = 1;
//count up the days, untill we've done all of them in the month
while ($day_num <= $dagen_in_maand) {
$check = date('j');
if($day_num == $actuele_dag) {
echo " <div class=\"boxcurrent\">".$day_num."</div>\n";
}else{
echo " <div class=\"box\">".$day_num."</div>\n";
}
$day_num++;
$day_count++;
//Make sure we start a new row every week
if ($day_count > 7) {
echo " ";
$day_count = 1;
}
}
...
?>
[\code]
SanThe schreef op 03.09.2009 17:23:
Je moet een $var gebruiken waar de hele datum in staat.
$var = '2009-09-03';
if($var == date('Y-m-d'))
{
// vandaag
}
else
{
// andere dag
}
$var = '2009-09-03';
if($var == date('Y-m-d'))
{
// vandaag
}
else
{
// andere dag
}