ik ben bezig met een kalender te maken, maar nu zit ik met een probleem. je moet namelijk evenementen kunnen toevoegen over een paar dagen/maanden. dus het kan ook voorkomen dat er een jaar tussen zit (overgang van 2004/2005 bijv).
maar hoe ontdek ik of de start datum hoger is dan de eind datum, en of het in een ander jaar tal ligt. zoals ik het nu heb verschijnt het zo. 30-12-04, 2-1-05, wat dus goed is, maar het verschijnt ook op 30-12-05.
dit heb ik nu.
dit is me tabel
maar hoe ontdek ik of de start datum hoger is dan de eind datum, en of het in een ander jaar tal ligt. zoals ik het nu heb verschijnt het zo. 30-12-04, 2-1-05, wat dus goed is, maar het verschijnt ook op 30-12-05.
dit heb ik nu.
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
| $year = isset($_GET['year']) ? (int) $_GET['year'] : date("Y"); $month = isset($_GET['month']) ? (int) $_GET['month'] : date("n"); $db->query("SELECT * FROM events WHERE start_month >= $month OR end_month <= $month"); while($row = $db->fetch_assoc()) { if(($row['start_year'] != $year && $row['end_year'] != $year) && !$row['always']) continue; if($row['end_month']) { $days = (mktime(0,0,0,$row['end_month'],$row['end_day'],$row['end_year']) - mktime(0,0,0,$row['start_month'],$row['start_day'],$row['start_year']))/86400; $day = mktime(0,0,0,$row['start_month'],$row['start_day'],$row['start_year']); for($i = 0; $i <= $days; $i++) { $events[date('n j', $day)]['events'][] = htmlentities(stripslashes($row['event'])); $events[date('n j', $day)]['background'] = $row['color']; $day += 86400; } } else { $events[$row['start_month'].' '.$row['start_day']]['events'][] = htmlentities(stripslashes($row['event'])); $events[$row['start_month'].' '.$row['start_day']]['background'] = $row['color']; } } |
dit is me tabel
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| CREATE TABLE `events` ( `event_id` int(11) NOT NULL auto_increment, `start_day` int(11) NOT NULL default '0', `start_month` int(11) NOT NULL default '0', `start_year` int(11) NOT NULL default '0', `end_day` int(11) NOT NULL default '0', `end_month` int(11) NOT NULL default '0', `end_year` int(11) NOT NULL default '0', `color` varchar(7) NOT NULL default '', `event` varchar(255) NOT NULL default '', `always` tinyint(1) NOT NULL default '0', PRIMARY KEY (`event_id`), ); |
[ Voor 15% gewijzigd door Verwijderd op 11-05-2004 11:52 ]