Hallo,
ich hab mir ein kleines Kalenderscript geschrieben, klappt auch so weit für die den aktuellen Monat, die Tage des vorherigen Monats die angezeigt werden müssen und die letzten Tage des nächsten Monats.
Leider aber nicht der letzte Tag.
Dort wird beispielsweise in der Ansicht Dezember 2007 dann sowas dargestellt:
26 27 28 29 30 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 1 2 3 4 5 30
Ist ja alles soweit richtig, nur der letzte Tag stimmt nicht.
Hier mein Skript (wäre froh, wenn mir jmd helfen könnte - ich find den Fehler einfach nicht)
CODE
$monat=date("n");
$jahr=date("Y");
if($monat-1 != 0){ // Januar -> Dezember
$previous_month = $monat-1;
$previous_year = $jahr;
}else{
$previous_month = 12;
$previous_year = $jahr-1;
}
if($monat+1 != 13){ // Dezember -> Januar
$next_month = $monat+1;
$next_year = $jahr;
}else{
$next_month = 1;
$next_year = $jahr+1;
}
$tpl->set_file("CalendarFileHandle","members/calendar_panel.tpl");
$tpl->set_var("previous_month",$previous_month);
$tpl->set_var("previous_year",$previous_year);
$tpl->set_var("next_month",$next_month);
$tpl->set_var("next_year",$next_year);
$monate = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$tpl->set_var("month",$monate[$monat-1]);
$tpl->set_var("year",$jahr);
$tpl->set_block("CalendarFileHandle","DayDisplayBlock","DDBlock");
$tpl->set_block("CalendarFileHandle","WeekDisplayBlock","WDBlock");
$wochentage=array("M","D","M","D","F","S","S");
$wochentage_num=array(1,2,3,4,5,6,0);
// Startwerte
$i=1;
$datum = mktime(0,0,0,$monat,$i,$jahr);
$tag_der_woche = getdate($datum);
$tag_der_woche = $tag_der_woche[wday];
$erstertag = $tag_der_woche;
$link = 0;
$stored_week = "";
$week_number = "";
do{
$tpl->set_var("DDBlock","");
for($j=0;$j<7;$j++){
if($tag_der_woche == $wochentage_num[$j] && checkdate($monat,$i,$jahr)){
// SQL
$tpl->set_var("day","".$i."");
$tag = "";
if($i < 10)
$tag .= "0".$i;
else
$tag = $i;
$tpl->set_var("date","".$jahr."-".$monat."-".$tag."");
$tpl->parse("DDBlock","DayDisplayBlock",true);
$i++;
$link = 0;
}else{
// Block für Vormonat, bzw. folgenden Monat
if($i==1){
$output_var = date("j",$datum-(($erstertag-$wochentage_num[$j]) * 86400));
$tpl->set_var("day",$output_var);
$last_jahr = $jahr;
if($monat != 1)
$last_monat = $monat-1;
else{
$last_monat = 12;
$last_jahr = $jahr-1;
}
$tpl->set_var("date","".$last_jahr."-".$last_monat."-".$output_var."");
}elseif(!checkdate($monat,$i,$jahr)){
$output_var = date("j",$datum + (($wochentage_num[$j] - ($tag_der_woche)) * 86400));
$tpl->set_var("day",$output_var);
$next_jahr = $jahr;
if($monat != 12)
$next_monat = $monat+1;
else{
$next_monat = 1;
$next_year = $jahr+1;
}
if($next_monat < 10) $next_monat = "0".$next_monat;
if($output_var < 10) $output_var = "0".$output_var;
$tpl->set_var("date","".$next_jahr."-".$next_monat."-".$output_var."");
}
$tpl->parse("DDBlock","DayDisplayBlock",true);
}
$tpl->set_block("CalendarFileHandle","WEEK_BLOCK","wb");
for($k=0;$k <= getNumWeeks($monat,$jahr);$k++){
$day = $i * ($k*7);
$week_number = get_week_number(date2timestamp("".$jahr."-".$monat."-".$day.""));
$tpl->set_var("week_number",$week_number);
$stored_week = $week_number;
$tpl->parse("wb","WEEK_BLOCK",true);
}
$datum = mktime(0,0,0,$monat,$i,$jahr);
$tag_der_woche = getdate($datum);
$tag_der_woche = $tag_der_woche[wday];
}
$tpl->parse("WDBlock","WeekDisplayBlock",true);
} while($i <= 31 && $endofmonth != 1);
ich hab mir ein kleines Kalenderscript geschrieben, klappt auch so weit für die den aktuellen Monat, die Tage des vorherigen Monats die angezeigt werden müssen und die letzten Tage des nächsten Monats.
Leider aber nicht der letzte Tag.
Dort wird beispielsweise in der Ansicht Dezember 2007 dann sowas dargestellt:
26 27 28 29 30 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 1 2 3 4 5 30
Ist ja alles soweit richtig, nur der letzte Tag stimmt nicht.
Hier mein Skript (wäre froh, wenn mir jmd helfen könnte - ich find den Fehler einfach nicht)
CODE
$monat=date("n");
$jahr=date("Y");
if($monat-1 != 0){ // Januar -> Dezember
$previous_month = $monat-1;
$previous_year = $jahr;
}else{
$previous_month = 12;
$previous_year = $jahr-1;
}
if($monat+1 != 13){ // Dezember -> Januar
$next_month = $monat+1;
$next_year = $jahr;
}else{
$next_month = 1;
$next_year = $jahr+1;
}
$tpl->set_file("CalendarFileHandle","members/calendar_panel.tpl");
$tpl->set_var("previous_month",$previous_month);
$tpl->set_var("previous_year",$previous_year);
$tpl->set_var("next_month",$next_month);
$tpl->set_var("next_year",$next_year);
$monate = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$tpl->set_var("month",$monate[$monat-1]);
$tpl->set_var("year",$jahr);
$tpl->set_block("CalendarFileHandle","DayDisplayBlock","DDBlock");
$tpl->set_block("CalendarFileHandle","WeekDisplayBlock","WDBlock");
$wochentage=array("M","D","M","D","F","S","S");
$wochentage_num=array(1,2,3,4,5,6,0);
// Startwerte
$i=1;
$datum = mktime(0,0,0,$monat,$i,$jahr);
$tag_der_woche = getdate($datum);
$tag_der_woche = $tag_der_woche[wday];
$erstertag = $tag_der_woche;
$link = 0;
$stored_week = "";
$week_number = "";
do{
$tpl->set_var("DDBlock","");
for($j=0;$j<7;$j++){
if($tag_der_woche == $wochentage_num[$j] && checkdate($monat,$i,$jahr)){
// SQL
$tpl->set_var("day","".$i."");
$tag = "";
if($i < 10)
$tag .= "0".$i;
else
$tag = $i;
$tpl->set_var("date","".$jahr."-".$monat."-".$tag."");
$tpl->parse("DDBlock","DayDisplayBlock",true);
$i++;
$link = 0;
}else{
// Block für Vormonat, bzw. folgenden Monat
if($i==1){
$output_var = date("j",$datum-(($erstertag-$wochentage_num[$j]) * 86400));
$tpl->set_var("day",$output_var);
$last_jahr = $jahr;
if($monat != 1)
$last_monat = $monat-1;
else{
$last_monat = 12;
$last_jahr = $jahr-1;
}
$tpl->set_var("date","".$last_jahr."-".$last_monat."-".$output_var."");
}elseif(!checkdate($monat,$i,$jahr)){
$output_var = date("j",$datum + (($wochentage_num[$j] - ($tag_der_woche)) * 86400));
$tpl->set_var("day",$output_var);
$next_jahr = $jahr;
if($monat != 12)
$next_monat = $monat+1;
else{
$next_monat = 1;
$next_year = $jahr+1;
}
if($next_monat < 10) $next_monat = "0".$next_monat;
if($output_var < 10) $output_var = "0".$output_var;
$tpl->set_var("date","".$next_jahr."-".$next_monat."-".$output_var."");
}
$tpl->parse("DDBlock","DayDisplayBlock",true);
}
$tpl->set_block("CalendarFileHandle","WEEK_BLOCK","wb");
for($k=0;$k <= getNumWeeks($monat,$jahr);$k++){
$day = $i * ($k*7);
$week_number = get_week_number(date2timestamp("".$jahr."-".$monat."-".$day.""));
$tpl->set_var("week_number",$week_number);
$stored_week = $week_number;
$tpl->parse("wb","WEEK_BLOCK",true);
}
$datum = mktime(0,0,0,$monat,$i,$jahr);
$tag_der_woche = getdate($datum);
$tag_der_woche = $tag_der_woche[wday];
}
$tpl->parse("WDBlock","WeekDisplayBlock",true);
} while($i <= 31 && $endofmonth != 1);