Hallo! Ich habe nen Kalender gefunden, der mir gefällt. Hab ihn eingebaut und dabei einen Fehler entdeckt. Folgendes: Ansich funktioniert er - denke ich - einwandfrei. Nur jetzt hat er ein Problem
http://web244.can21.de/kalender.php?&date=9-2005
wenn ihr den mal anklickt, ist soweit alles okay. Wenn ich jetzt einen Termin anklicke, das sind die rosa hinterlegten Daten, öffnet ein Popup. Hier kommt jetzt der Fehler: Statt September erscheint jetzt im Popup oben Oktober. Mir fehlen die Programmierkenntnisse um zu sehen, woran das liegt. Habt ihr ne Idee? Hier der Quellcode der calendar.php:
Besten Dank und Gruß!!!
... // /////////////////////////////////////////////
///////////////////////////////////////////// //Load the language into usable variables //
//darussol: TRANSLATION (18 May 2004) // : Fill in the names of the days/months in variables //e-man : LOAD TRANSLATION FILE INTO VARIABLES (from darussol)(19 May 2004) // : Put the days/months names from language file into a array
$language_file = "calendar." . $calendar_language; //Language file into variable $fd = fopen( $language_file, "r" ); //Open the language file $fd = fread( $fd, filesize( $language_file ) ); //Read the opened file $language_array = explode( "\n" , $fd ); //Put file info into array
$dayname = array_slice($language_array,0,7); //The names of the days
$monthname = array_slice($language_array,7); //The rest of the language file are the monthnames // /////////////////////////////////////////////
///////////////////////////////////////////// //Use the date to build up the calendar. From the Query_string or the current date // if( isset( $_GET['date'] ) ) list($month,$year) = explode("-",$_GET['date']); else { $month = date("m"); $year = date("Y"); } // /////////////////////////////////////////////
$date_string = mktime(0,0,0,$month,1,$year); //The date string we need for some info... saves space ^_^
$day_start = date("w",$date_string); //The number of the 1st day of the week
///////////////////////////////////////////// //Filter the current $_GET['date'] from the QUERY_STRING // $QUERY_STRING = ereg_replace("&date=".$month."-".$year,"",$_SERVER['QUERY_STRING']); // /////////////////////////////////////////////
///////////////////////////////////////////// //Calculate the previous/next month/year // if( $month < 12 ) { $next_month = $month+1; $next_date = $next_month."-".$year; } else { $next_year = $year+1; $next_date = "1-".$next_year; $next_month = 1; } if( $month > 1 ) { $previous_month = $month-1; $next_month = $month+1; $previous_date = $previous_month."-".$year; } else { $previous_year = $year-1; $previous_date = "12-".$previous_year; $previous_month = 12; } // /////////////////////////////////////////////
// darussol: DEFINITION OF THETRANSLATED MONTH+YEAR TO BE USED IN THE TABLE AND INFO-TITLES (18 May 2004) // e-man : USING THE VALUES OF THE PREVIOUS AND NEXT MONTH FOR THE TITLE DAY (19 May 2004); $table_caption_prev = $monthname[$previous_month-1] . " " . $year; // previous $table_caption = $monthname[date("n",$date_string)-1] . " " . $year; // current if ($next_month == 13){ $next_month = 1; $year++; } $table_caption_foll = $monthname[$next_month-1] . " " . $year; // following
///////////////////////////////////////////// //Print the calendar css code // echo " <style type="text/css"> a.cal_head { color: " . $head_link_color . "; } a.cal_head:hover { text-decoration: none; } .cal_head { background-color: " . $head_background_color . "; color: " . $head_font_color . "; font-family: " . $font_family . "; font-size: " . $head_font_size . "; font-weight: " . $head_font_weight . "; font-style: " . $head_font_style . "; } .cal_days /darussol/ { background-color: " . $days_head_background_color . "; color: " . $days_head_font_color . "; font-family: " . $font_family . "; font-size: " . $days_head_font_size . "; font-weight: " . $days_head_font_weight . "; font-style: " . $days_head_font_style . "; } .cal_content { background-color: " . $content_background_color . "; color: " . $content_font_color . "; font-family: " . $font_family . "; font-size: " . $content_font_size . "; font-weight: " . $content_font_weight . "; font-style: " . $content_font_style . "; } .cal_today { background-color: " . $today_background_color . "; color: " . $today_font_color . "; font-family: " . $font_family . "; font-size: " . $today_font_size . "; font-weight: " . $today_font_weight . "; font-style: " . $today_font_style . "; } .cal_event, a.cal_event /* e-man 17-06-04 */ { background-color: " . $event_background_color . "; color: " . $event_font_color . "; font-family: " . $font_family . "; font-size: " . $event_font_size . "; font-weight: " . $event_font_weight . "; font-style: " . $event_font_style . "; } </style> "; // /////////////////////////////////////////////
///////////////////////////////////////////// //show events in popup? // if (isset ($_GET['show_event'])){ list ($year, $month, $day) = explode ("-", $_GET['event_date']); $query = " SELECT * FROM " . $event_table . " WHERE EventYear = '" . $year . "' AND EventMonth = '" . $month . "' AND EventDay = '" . $day . "' ORDER BY EventTime ASC ";
/* connect to the database */ $database_connection = mysql_connect ($server, $username, $password); mysql_select_db ($database, $database_connection); $result = mysql_query ($query) or die(mysql_error());
/* initize the variabele color_alternated (boolean) */ $color_alternated = false;
/* header of the table */ echo "<table width="100%" border="" . $table_border . "" cellpadding="" . $table_cellpadding . "" cellspacing="" . $table_cellspacing . "">";
$date_string = mktime(0,0,0,$month,$day,$year); $month = sprintf("%01d",$month);
echo "<tr><td align="center" class="cal_head" colspan="2">".$day." " . $monthname[$month] . " ".$year."</td></tr>";
/* loop through the results via a mysql_fetch_assoc () / while ($record = mysql_fetch_assoc ($result)){ if ($color_alternated){ $color_alternated = false; $background_color_row = $event_background_color; } else{ $color_alternated = true; $background_color_row = $event_background_color2; } echo "<tr class="cal_event"> <td style="background-color:".$background_color_row."" width="1">" . $record['EventTime'] . "</td> <td style="background-color:".$background_color_row."">" . nl2br($record['Event']) . "</td> </tr>"; } / close the table */ echo "</table>";
/* bring an exit so the script will terminate*/ exit; } // /////////////////////////////////////////////
///////////////////////////////////////////// //Print the calendar table header // echo " <script language="javascript"> function open_event(date_stamp){ window.open("" . $calendar_script . "?show_event=true&event_date=" + date_stamp, "calendar_popup","height=" . $event_popup_height . ",width=".$event_popup_width.""); } </script> <table border="" . $table_border . "" cellpadding="" . $table_cellpadding . "" cellspacing="" . $table_cellspacing . "" style="height:" . $table_height . "" width="" . $table_width . ""> <tr> <td align="center" class="cal_head"><a class="cal_head" href="" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&date=" . $previous_date . "" title="" . $table_caption_prev . "">«</a></td> <td align="center" class="cal_head" colspan="5">" . $table_caption . "</td> <td align="center" class="cal_head"><a class="cal_head" href="" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&date=" . $next_date . "" title="" . $table_caption_foll . "">»</a></td> </tr> <tr> <td class="cal_days">".$dayname[0]."</td> <td class="cal_days">".$dayname[1]."</td> <td class="cal_days">".$dayname[2]."</td> <td class="cal_days">".$dayname[3]."</td> <td class="cal_days">".$dayname[4]."</td> <td class="cal_days">".$dayname[5]."</td> <td class="cal_days">".$dayname[6]."</td> </tr><tr> "; // /////////////////////////////////////////////
///////////////////////////////////////////// //The empty columns before the 1st day of the week // for( $i = 0 ; $i < $day_start; $i++ ) { echo "<td class="cal_content"> </td>"; } // /////////////////////////////////////////////
$current_position = $day_start; //The current (column) position of the current day from the loop
$total_days_in_month = date("t",$date_string); //The total days in the month for the end of the loop
///////////////////////////////////////////// //Retrieve events for the current month + year //e-man : added 07 June 04 if ($events_from_database) { $database_connection = mysql_connect ($server, $username, $password); mysql_select_db ($database, $database_connection); $result = mysql_query(" SELECT * FROM " . $event_table . " WHERE EventYear = '" . $year . "' AND EventMonth = '" . $month . "' "); while ($record = mysql_fetch_assoc($result)){ $event[$record['EventDay']] = $record; } } // /////////////////////////////////////////////
///////////////////////////////////////////// //Loop all the days from the month // for( $i = 1; $i <= $total_days_in_month ; $i++) { $class = "cal_content";
if( $i == date("j") && $month == date("n") && $year == date("Y") ) $class = "cal_today";
$current_position++;
/* is there any event on this day? Yes, create a link. No clear the (previous) string */ $link_start = ""; $link_end = "";
/* if there is an event do */ if( isset($event[$i]) ) { $link_start = "<a href="javascript:;" class="cal_event" onclick="javascript: open_event('".$year."-".$month."-".$i."');">"; $link_end = "</a>"; $class = "cal_event"; }
/* for the event filter / / e-man : added 07 June 04 */ $date_stamp = $year."-".$month."-".sprintf( "%02d",$i);
echo "<td align="center" class="" . $class . "">" . $link_start . $i . $link_end . "</td>"; if( $current_position == 7 ) { echo "</tr><tr>\n"; $current_position = 0; } } // /////////////////////////////////////////////
$end_day = 7-$current_position; //There are
///////////////////////////////////////////// //Fill the last columns // for( $i = 0 ; $i < $end_day ; $i++ ) echo "<td class="cal_content"></td>\n"; // /////////////////////////////////////////////
echo "</tr></table>"; // Close the table ?>