class
Ik ben een beginner in php en heb nog nooit iets gedaan met classes. Nu wilde ik een soort van kalender hebben, dus ben ik gaan zoeken op internet en kwam ik het volgende script tegen: (hij is wel heel oud, maar moet volgens mij wel voldoen)
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
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
<?php
/*
* klasse datum
***
* Maak een datum en vergelijk die met andere data
*
*/
class datum
{
var $datum_array, $maand_tabel;
var $kalender;
var $data;
var $van, $tot, $verschil, $nieuwe_datum;
var $dagen, $maanden, $jaren;
var $dag, $maand, $jaar;
function datum ( $dag = 0, $maand = 0, $jaar = 0 )
{
if ( checkdate ( $maand, $dag, $jaar ) == false )
return false;
else
{
$this -> dag = $dag;
$this -> maand = $maand;
$this -> jaar = $jaar;
}
}
function kalender ( $van_jaar, $tot_jaar )
{
if ( $tot_jaar < $van_jaar )
return false;
$this -> jaren = $tot_jaar - $van_jaar;
$this -> maanden = 0;
$this -> dagen = 0;
for ( $i = 0; $i <= $this -> jaren; $i++ )
{
for ( $j = 1; $j <= 12; $j++ )
{
for ( $k = 1; $k <= date ( "t", mktime ( 0, 0, 0, $j, 1, $van_jaar ) ); $k++ )
{
$this -> kalender[$i][$j][$k] = 1; // of bijvoorbeeld sprintf ( "%02d-%02d-%d", $k, $j, $van_jaar );
$this -> dagen++;
}
$this -> maanden++;
}
}
}
function maand ( $maand, $jaar, $returnFormat, $data_array = null )
{
$dag = 1;
$kolommen = 0;
$maand_tijd = mktime ( 0, 0, 0, $maand, 1, $jaar );
$dagen_per_maand = date ( "t", $maand_tijd );
$return = "<table>
<tr><td width=20>Ma</td>
<td width=20>Di</td>
<td width=20>Wo</td>
<td width=20>Do</td>
<td width=20>Vr</td>
<td width=20>Za</td>
<td width=20>Zo</td></tr>";
$startrij = date ( "w", $maand_tijd ) - 1;
if ( $startrij < 0 )
$startrij = 6;
while ( $dag <= $dagen_per_maand )
{
if ( $kolommen == 0 )
$return .= "<tr>";
if ( $startrij == 0 )
{
$return .= "<td";
// Format maken
$format = sprintf ( "%04d-%02d-%02d", $jaar, $maand, $dag );
if ( is_array ( $data_array ) && in_array ( $format, $data_array ) )
$return .= " style='font-weight: bold'";
$return .= ">" . sprintf ( $returnFormat, $dag, $maand, $jaar ) . "</td>\n";
$dag++;
}
else
{
$startrij--;
$return .= "<td> </td>\n";
}
$kolommen++;
if ( $kolommen > 6 )
{
$return .= "</tr>\n\n";
$kolommen = 0;
}
}
$return .= "</table>";
$this -> maand_tabel = $return;
return $return;
}
}
?>
/*
* klasse datum
***
* Maak een datum en vergelijk die met andere data
*
*/
class datum
{
var $datum_array, $maand_tabel;
var $kalender;
var $data;
var $van, $tot, $verschil, $nieuwe_datum;
var $dagen, $maanden, $jaren;
var $dag, $maand, $jaar;
function datum ( $dag = 0, $maand = 0, $jaar = 0 )
{
if ( checkdate ( $maand, $dag, $jaar ) == false )
return false;
else
{
$this -> dag = $dag;
$this -> maand = $maand;
$this -> jaar = $jaar;
}
}
function kalender ( $van_jaar, $tot_jaar )
{
if ( $tot_jaar < $van_jaar )
return false;
$this -> jaren = $tot_jaar - $van_jaar;
$this -> maanden = 0;
$this -> dagen = 0;
for ( $i = 0; $i <= $this -> jaren; $i++ )
{
for ( $j = 1; $j <= 12; $j++ )
{
for ( $k = 1; $k <= date ( "t", mktime ( 0, 0, 0, $j, 1, $van_jaar ) ); $k++ )
{
$this -> kalender[$i][$j][$k] = 1; // of bijvoorbeeld sprintf ( "%02d-%02d-%d", $k, $j, $van_jaar );
$this -> dagen++;
}
$this -> maanden++;
}
}
}
function maand ( $maand, $jaar, $returnFormat, $data_array = null )
{
$dag = 1;
$kolommen = 0;
$maand_tijd = mktime ( 0, 0, 0, $maand, 1, $jaar );
$dagen_per_maand = date ( "t", $maand_tijd );
$return = "<table>
<tr><td width=20>Ma</td>
<td width=20>Di</td>
<td width=20>Wo</td>
<td width=20>Do</td>
<td width=20>Vr</td>
<td width=20>Za</td>
<td width=20>Zo</td></tr>";
$startrij = date ( "w", $maand_tijd ) - 1;
if ( $startrij < 0 )
$startrij = 6;
while ( $dag <= $dagen_per_maand )
{
if ( $kolommen == 0 )
$return .= "<tr>";
if ( $startrij == 0 )
{
$return .= "<td";
// Format maken
$format = sprintf ( "%04d-%02d-%02d", $jaar, $maand, $dag );
if ( is_array ( $data_array ) && in_array ( $format, $data_array ) )
$return .= " style='font-weight: bold'";
$return .= ">" . sprintf ( $returnFormat, $dag, $maand, $jaar ) . "</td>\n";
$dag++;
}
else
{
$startrij--;
$return .= "<td> </td>\n";
}
$kolommen++;
if ( $kolommen > 6 )
{
$return .= "</tr>\n\n";
$kolommen = 0;
}
}
$return .= "</table>";
$this -> maand_tabel = $return;
return $return;
}
}
?>
Maar hoe moet ik nu die class oproepen? Nogmaals: Ik heb hier helemaal geen verstand..
Gewijzigd op 01/01/1970 01:00:00 door Jaron T
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
Oktober 2009
M D W D V Z Z
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
Nu had ik dus dit script gevonden dat dit exact moest weergeven. Maar hij deed niks!
@Afra: Hoe zou ik zoiets moeten aanpakken?
Gebruik anders de kalender van jquery ;)
Maar wat wil je er precies mee doen?
Anders kan je inderdaad het ook wel aan jQuery ofzo overlaten.
Ik heb nu de volgende code:
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
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
<?php
if(isset($_POST['hmaand']))
{
$maand = $_POST['hmaand']; // Maand dat wordt ingegeven
$jaar = $_POST['hjaar']; // Jaar dat wordt ingegeven
}
else
{
$maand = date('m'); // Maand NU
$jaar = date('Y'); // Jaar NU
}
if(isset($_POST['volgende']))
{
$maand++; // Volgende Maand
if($maand == 13) // Als maand 13 is dan +1 jaar
{
$maand = 1;
$jaar++;
}
}
if(isset($_POST['vorige']))
{
$maand--; // Vorige Maand
if($maand == 0) // Als maand 0 is dan -1 jaar
{
$maand = 12;
$jaar--;
}
}
if(isset($_POST['naarvandaag'])) // Naar de Juiste maand gaan
{
$maand = date('m');
$jaar = date('Y');
}
$maanden = array (1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"); // Maanden
$datum = mktime(0, 0, 0, $maand, 1, $jaar); // functie time() bereken
$datum = $maanden[date('n', $datum)].' '.date('Y', $datum); // Nederlandse Maand Jaar
$srv = $_SERVER['PHP_SELF']; // Link naar waar hij moet gaan in ons geval deze pagina
?>
if(isset($_POST['hmaand']))
{
$maand = $_POST['hmaand']; // Maand dat wordt ingegeven
$jaar = $_POST['hjaar']; // Jaar dat wordt ingegeven
}
else
{
$maand = date('m'); // Maand NU
$jaar = date('Y'); // Jaar NU
}
if(isset($_POST['volgende']))
{
$maand++; // Volgende Maand
if($maand == 13) // Als maand 13 is dan +1 jaar
{
$maand = 1;
$jaar++;
}
}
if(isset($_POST['vorige']))
{
$maand--; // Vorige Maand
if($maand == 0) // Als maand 0 is dan -1 jaar
{
$maand = 12;
$jaar--;
}
}
if(isset($_POST['naarvandaag'])) // Naar de Juiste maand gaan
{
$maand = date('m');
$jaar = date('Y');
}
$maanden = array (1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"); // Maanden
$datum = mktime(0, 0, 0, $maand, 1, $jaar); // functie time() bereken
$datum = $maanden[date('n', $datum)].' '.date('Y', $datum); // Nederlandse Maand Jaar
$srv = $_SERVER['PHP_SELF']; // Link naar waar hij moet gaan in ons geval deze pagina
?>
<div class="topnav">
<form action="" method="post">
<table width="100%">
<tr>
<td> </td>
<td width="5"> </td>
<td width="60%"></td>
<td width="5"> </td>
<td> </td>
</tr>
</table>
<input type="hidden" name="hmaand" value=""/>
<input type="hidden" name="hjaar" value=""/>
</form>
</div>
<div class="kalender">
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
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
<?php
function eersteDagInMaand($maand, $jaar) { // Functie Eerste Dag In De Maand
$eerste = mktime(0, 0, 0, $maand, 0, $jaar);
$edag = date('w', $eerste);
return $edag;
}
function dagenInMaand($maand, $jaar) { // Functie totaal aantal dagen in de maand
$laatste = mktime(0, 0, 0, $maand, 1, $jaar);
$ldag = date('t', $laatste);
return $ldag;
}
function restDagen($edag, $ldag) { // De rest van de dagen de lege vakjes berkenen
$rest = ( $edag + $ldag ) % 7;
if($rest != 0)
{
$rest = 7 - $rest;
}
return $rest;
}
function printMaand($maand, $jaar) // Maand laten zien
{
$edag = eersteDagInMaand($maand, $jaar);
$ldag = dagenInMaand($maand, $jaar);
$rest = restDagen($edag, $ldag);
$vandaag = mktime(0,0,0,date('n',time()),date('d', time()), date('Y', time()));
$weekdag = array('M', 'D', 'W', 'D', 'V', 'Z', 'Z');
echo "\n".'<table><tr>';
foreach($weekdag as $dag)
{
echo '<td class="wday">'.$dag.'</td>';
}
echo '</tr><tr>'."\n";
for($i = 0; $i < ( $edag + $ldag + $rest ); $i++)
{
if($i < $edag || $i >= ( $edag + $ldag ))
{
echo '<td> </td>'."\n";
}
else
{
if(date('d', $vandaag) == ($i - ($edag - 1)) && date('m') == $maand && date('Y') == $jaar)
{
echo '<td><b>'. ($i -($edag - 1)) .'</b></td>'."\n";
}
else
{
echo '<td>'. ($i -($edag - 1)) .'</td>'."\n";
}
if(($i + 1) % 7 == 0)
{
echo '</tr><tr>'."\n";
}
}
}
echo '</tr></table>';
}
printMaand( $maand, $jaar );
?>
function eersteDagInMaand($maand, $jaar) { // Functie Eerste Dag In De Maand
$eerste = mktime(0, 0, 0, $maand, 0, $jaar);
$edag = date('w', $eerste);
return $edag;
}
function dagenInMaand($maand, $jaar) { // Functie totaal aantal dagen in de maand
$laatste = mktime(0, 0, 0, $maand, 1, $jaar);
$ldag = date('t', $laatste);
return $ldag;
}
function restDagen($edag, $ldag) { // De rest van de dagen de lege vakjes berkenen
$rest = ( $edag + $ldag ) % 7;
if($rest != 0)
{
$rest = 7 - $rest;
}
return $rest;
}
function printMaand($maand, $jaar) // Maand laten zien
{
$edag = eersteDagInMaand($maand, $jaar);
$ldag = dagenInMaand($maand, $jaar);
$rest = restDagen($edag, $ldag);
$vandaag = mktime(0,0,0,date('n',time()),date('d', time()), date('Y', time()));
$weekdag = array('M', 'D', 'W', 'D', 'V', 'Z', 'Z');
echo "\n".'<table><tr>';
foreach($weekdag as $dag)
{
echo '<td class="wday">'.$dag.'</td>';
}
echo '</tr><tr>'."\n";
for($i = 0; $i < ( $edag + $ldag + $rest ); $i++)
{
if($i < $edag || $i >= ( $edag + $ldag ))
{
echo '<td> </td>'."\n";
}
else
{
if(date('d', $vandaag) == ($i - ($edag - 1)) && date('m') == $maand && date('Y') == $jaar)
{
echo '<td><b>'. ($i -($edag - 1)) .'</b></td>'."\n";
}
else
{
echo '<td>'. ($i -($edag - 1)) .'</td>'."\n";
}
if(($i + 1) % 7 == 0)
{
echo '</tr><tr>'."\n";
}
}
}
echo '</tr></table>';
}
printMaand( $maand, $jaar );
?>
Het werkt perfect!!