Fejl i kalender script
Jeg har et kalender script som jeg aldrig har fået 100% til at virke...Problemet er, at kalenderen ikke fører noget over fra de første par uger... F.eks. skriver den ikke de første 2 søndage i advent...
Koden kommer nedenfor, håber I kan hjælpe! (der er noget input til at lave tabellerne i phpMyAdmin)
<?php
# Pre-values
$year = 2002;
$month = 12;
# Catch month or year if passed
if (isset($HTTP_GET_VARS["month"])) $month = $HTTP_GET_VARS["month"];
if (isset($HTTP_GET_VARS["year"])) $year = $HTTP_GET_VARS["year"];
# Static date names - language specific
$DAYNAME = array("Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag");
$MONTHNAME = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
# Fetch from DB
/*
CREATE TABLE testkalender (
id smallint(5) unsigned NOT NULL auto_increment,
startdate date NOT NULL default '0000-00-00',
days tinyint(3) unsigned NOT NULL default '1',
rooms tinyint(3) unsigned NOT NULL default '1',
title tinytext,
stamp timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
*/
# DB CONNECT
mysql_connect('xxx','xxx','xxx');
mysql_select_db('xxx');
$sql = mysql_query("
SELECT id, startdate, days, rooms, title, beskrivelse
FROM testkalender
");
$ASSIGNMENT = array();
if (mysql_num_rows($sql)) {
while ($foo = mysql_fetch_assoc($sql)) {
list($fy,$fm,$fd) = explode('-', $foo["startdate"]);
for ($i=0; $i<$foo["days"]; $i++) {
$d = $i+1;
$ASSIGNMENT[date('Y', mktime(0,0,0,$fm,$fd+$i,$fy))][date('m', mktime(0,0,0,$fm,$fd+$i,$fy))][date('d', mktime(0,0,0,$fm,$fd+$i,$fy))][] = array(
"rooms"=>$foo["rooms"],
"beskrivelse"=>$foo["beskrivelse"],
"title"=>''.$foo["title"].' '.'(dag '.$d.'/'.$foo["days"].')'
);
}
}
}
# Functions
function date_info($info, $month, $year) {
return date($info, mktime(0,0,0,$month,1,$year));
}
# Init months array with days and first day of month
$MONTHS = array();
# Initialize days in month
$MONTHS["days"] = date_info("t", $month, $year);
$MONTHS["firstday"] = date_info("w", $month, $year);
$MONTHS["weekno"] = date_info("W", $month, $year);
if ($MONTHS["firstday"] == 0) $MONTHS["firstday"] == 7;
$MONTHS["firstday"]--;
?>
<center>
2002: | <a href='index.php?site=kalender&year=2002&month=8'>August</a> | <a href='index.php?site=kalender&year=2002&month=9'>September</a> | <a href='index.php?site=kalender&year=2002&month=10'>Oktober</a> | <a href='index.php?site=kalender&year=2002&month=11'>Nobember</a> | <a href='index.php?site=kalender&year=2002&month=12'>December</a> |
<a href="kalender_2003.php">-> 2003 >-></a>
</center>
<br><br>
<?php
# Show calendar
# Set weeknumber
$week = $MONTHS["weekno"];
?>
<br>
<table width="350" border="0" cellspacing="0" cellpadding="0" align="center">
<tr valign="top">
<td colspan="3" class="month"><b><?php echo $MONTHNAME[$month-1]; ?> <?php echo $year; ?></b></td>
</tr>
<?php
# Loop through each day in month
for ($i=1;$i<=$MONTHS["days"];$i++) {
# Fix week number
if (($MONTHS["firstday"]+$i)%7 == 0) $week++;
# check for assignment to show
$assignment = "";
$rooms = 0;
if (is_array($ASSIGNMENT[$year][$month][$i])) {
while (list($key, $val) = each($ASSIGNMENT[$year][$month][$i])) {
$assignment .= $val["title"]."\n".$val["beskrivelse"]."\n\n";
$rooms += $val["rooms"];
}
$assignment .= $rooms.' i alt';
}
# Set colorclass for td
$class = "normal";
if ((($MONTHS["firstday"]+$i)%7) == 6) $class = "red";
?>
<tr>
<td witdh="100" valign="top" class="<?php echo $class; ?>"><?php echo $i; ?>.
<?php
# Insert week no if week is starting
if ((($MONTHS["firstday"]+$i)%7) == 0) echo "Uge: ".$week;
?>
</td>
<td witdh="250" class="<?php echo $class; ?>"><?php echo nl2br($assignment); ?></td>
</tr>
<?php
}
?>
