class
Hey,
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)
Maar hoe moet ik nu die class oproepen? Nogmaals: Ik heb hier helemaal geen verstand..
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
Doorzoeken naar 1 die php5 is (met php5 is de manier van object georienteerd programmeren best wel wat veranderd, "jouw" script is php4) . Maar wat wil je precies met de datums gaan doen, want wellicht kun je zelf wat proberen. Naar mijn mening is dat elf keer beter, omdat je weet wat je code nou doet, en je niet (zoals hier) oude code loopt te gebruiken waarvan je amper weet wat er mee gebeurt.
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
En dan kan je gelijk gebruik maken van class.dateperiod.
Ik wil dus een script hebben die een kalender als volgt weergeeft:
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?
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 ;)
Verkeerde topic.
Maar wat wil je er precies mee doen?
Anders kan je inderdaad het ook wel aan jQuery ofzo overlaten.
Maar wat wil je er precies mee doen?
Anders kan je inderdaad het ook wel aan jQuery ofzo overlaten.
Het is dan eindelijk opgelost!
Ik heb nu de volgende code:
<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">
Het werkt perfect!!
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!!




