Drilsk Kalender.
Hey Eksperter.jeg har følgende kode;
<html>
<head>
<title>PHP Calendar</title>
<script language="javascript">
<!--
var hojde="300"
var bredde="300"
var scroll="no"
var resize="no"
var toolbar="no"
var location="no"
var directories="no"
var status="no"
var menubar="no"
var centrer="yes" // "yes" centrerer
var LeftPosition="10"
var TopPosition="10"
var win = null;
function NewWindow(mypage,navn){
if (centrer=="yes") {
LeftPosition = (screen.width) ? (screen.width-bredde)/2 : 0;
TopPosition = (screen.height) ? (screen.height-hojde)/2 : 0;
}
settings =
'toolbar='+toolbar+',location='+location+',directories='+ directories+',status='+status+',menubar='+menubar+', height='+hojde+',width='+bredde+',top='+TopPosition+ ',left='+LeftPosition+',scrollbars='+scroll+',resizable=' +resize
win = window.open(mypage,navn,settings)
}
-->
</script>
<style type="text/css">
<!--
.table.calendar {border: 1px solid #000000; border-collapse: collapse; color: #000000; background: #FFFFFF; }
.td.today { border: 1px solid white; color: #000000; background: #9EC3D4; font-weight: bold; font-size: 12px; }
.td.monthdays {border: 1px solid #434470; color: #000000; background: #9EC3D4; font-size: 14px; }
.td.week_num { background: #BCCED7; font-size: 14px; }
.td.nonmonthdays { border: 1px solid white; color: #000000; background: #DFDFDF; font-size: 12px; }
.td.monthname { font-size: 14px; }
A:link, A:active, A:visited { text-decoration: none; color: black; font-size: 12px; }
A:hover { text-decoration: underline ]
-->
</style>
<body>
<?php
error_reporting('0');
ini_set('display_errors', '0');
$userid = "1234567890";
if(!isset($_REQUEST['date'])){
$date = mktime(0,0,0,date('m'), date('d'), date('Y'));
} else {
$date = $_REQUEST['date'];
}
$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);
$month_start = mktime(0,0,0,$month, 1, $year);
$month_name = date('F', $month_start);
$month_start_day = date('D', $month_start);
switch($month) {
case "01": $month_name = "Januar"; break;
case "02": $month_name = "Februar"; break;
case "03": $month_name = "Marts"; break;
case "05": $month_name = "Maj"; break;
case "06": $month_name = "Juni"; break;
case "07": $month_name = "Juli"; break;
case "10": $month_name = "Oktober"; break;
}
switch($month_start_day){
case "Mon": $offset = 0; break;
case "Tue": $offset = 1; break;
case "Wed": $offset = 2; break;
case "Thu": $offset = 3; break;
case "Fri": $offset = 4; break;
case "Sat": $offset = 5; break;
case "Sun": $offset = 0; break;
}
if($month == 1){
$num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
$num_days_last = cal_days_in_month(0, ($month -1), $year);
}
$num_days_current = cal_days_in_month(0, $month, $year);
for($i = 1; $i <= $num_days_current; $i++){
$num_days_array[] = $i;
}
for($i = 1; $i <= $num_days_last; $i++){
$num_days_last_array[] = $i;
}
if($offset > 0){
$offset_correction = array_slice($num_days_last_array, -$offset, $offset);
$new_count = array_merge($offset_correction, $num_days_array);
$offset_count = count($offset_correction);
}
else {
$offset_count = 0;
$new_count = $num_days_array;
}
$current_num = count($new_count);
if($current_num > 35){
$num_weeks = 6;
$outset = (42 - $current_num);
} elseif($current_num < 35){
$num_weeks = 5;
$outset = (35 - $current_num);
}
if($current_num == 35){
$num_weeks = 5;
$outset = 0;
}
for($i = 1; $i <= $outset; $i++){
$new_count[] = $i;
}
$weeks = array_chunk($new_count, 7);
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 1){
$previous_link .= mktime(0,0,0,12,$day,($year -1))."&userid=$userid";
} else {
$previous_link .= mktime(0,0,0,($month -1),$day,$year)."&userid=$userid";
}
$previous_link .= "\"><< Forrige</a>";
$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 12){
$next_link .= mktime(0,0,0,1,$day,($year + 1))."&userid=$userid";
} else {
$next_link .= mktime(0,0,0,($month +1),$day,$year)."&userid=$userid";
}
$next_link .= "\">Næste >></a>";
echo "<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"300\" class=\"calendar\">\n".
"<tr>\n".
"<td colspan=\"8\">\n".
"<table align=\"center\">\n".
"<tr>\n".
"<td colspan=\"3\" width=\"75\" align=\"left\">$previous_link</td>\n".
"<td colspan=\"4\" width=\"150\" align=\"center\" class=\"monthname\">$month_name $year</td>\n".
"<td colspan=\"3\" width=\"75\" align=\"right\">$next_link</td>\n".
"</tr>\n".
"</table>\n".
"</td>\n".
"<tr class=\"monthdays\">\n".
"<td></td><td>Man</td><td>Tirs</td><td>Ons</td><td>Tors</td><td>Fre</td><td>Lør</td><td>Søn</td>\n".
"</tr>\n";
$i = 0;
$week_num = date("W", $date);
foreach($weeks AS $week){
echo "<tr><td class=\"week_num\">".$week_num++."\n";
foreach($week as $d){
if($i < $offset_count){
$day_link = " ";
echo "<td class=\"nonmonthdays\">$day_link</td>\n";
}
if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){
$day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month,$d,$year)."&userid=$userid\" onclick=\"NewWindow('popup.php?date=".mktime(0,0,0,$month,$d,$year)."&userid=$userid','mitvindue');return false\">$d</a>";
if($date == mktime(0,0,0,$month,$d,$year)){
echo "<td class=\"today\">$d</td>\n";
} else {
echo "<td class=\"days\">$day_link</td>\n";
}
} elseif(($outset > 0)) {
if(($i >= ($num_weeks * 7) - $outset)){
$day_link = " ";
echo "<td class=\"nonmonthdays\">$day_link</td>\n";
}
}
$i++;
}
echo "</tr>\n";
}
echo '<tr><td colspan="7" class="days"> </td></tr>';
echo '</table>';
?>
</body>
</html>
1.) Kunne godt tænke mig at uge numrene siden virkede. ;)
Hvis jeg hopper til Januar 2006, så er første uge nummer 52 og sidste er 56. :(
I februar starter den så i uge 5.
Aner ikke hvad problemet er.
2.) Kunne godt tænke mig at det kun er den nuværende dato der er markeret. f.eks. idag, 31.07.05 er markeret, men hvis man hopper til December, så skal der ikke være nogen dato markeret.
Nogle bud?
