Fejl i kalender
jeg bruger nedenstående kalender, til at vise en arrangements kalender på min side. Den har virket glimerende indtil nu hvor juni står for døren.....Den 1. juni er på søndag, kalenderen mener det er på mandag. jeg har ikke selv hjerne til at genneskue hvor fejlen ligger, så jeg håber på hjælp.
Kalenderen kan ses på www.danstud.dk
kode:
function str2unix($str){
$split=explode("/",$str);
$unixstamp=mktime(0,0,0,$split[1],$split[0],$split[2]);
return $unixstamp;
}
// Variable som anviser nuvÊrende dato
$date = getdate();
$CurrentDate = $date['mday'];
$CurrentMonth = $date['mon'];
$CurrentYear = $date['year'];
// Variable som anviser den viste mÂned, m.m.
if(!(isset($month))) $month = $date['mon'];
if ($month == 0)
{ $month = 12;
$year--;}
if ($month == 13)
{ $month = 1;
$year++;}
if(!(isset($year))) $year = $CurrentYear;
// Funktion til at oversÊtte engelsk til dansk
function Translate($weekday)
{
switch ($weekday) {
case 'Monday': return "Mandag";
case 'Tuesday': return "Tirsdag";
case 'Wednesday': return "Onsdag";
case 'Thursday': return "Torsdag";
case 'Friday': return "Fredag";
case 'Saturday': return "L¯rdag";
case 'Sunday': return "S¯ndag";
case 'January': return "Januar";
case 'February'; return "Februar";
case 'March'; return "Marts";
case 'April'; return "April";
case 'May'; return "Maj";
case 'June'; return "Juni";
case 'July'; return "Juli";
case 'August'; return "August";
case 'September'; return "September";
case 'October'; return "Oktober";
case 'November'; return "November";
case 'December'; return "December";
}
}
function CheckForMessage($nixdato)
{
GLOBAL $submenu;
$retvalue = "";
$caldata = mysql_query("select * from kalender where dato='$nixdato' and vises='ja'") or die(mysql_error());
while ($raekke = mysql_fetch_array($caldata)) {
extract($raekke);
$retvalue .= "<a href=\"java script:void(0)\" onClick=\"window.open('arr.php?arrid=$id','arr','width=580,height=550,menubar=no,scrollbars=yes')\">$overskrift</A><br>";
}
return $retvalue;
}
// Funktion hvori layoutet til ugedagene ligger
function LayoutWeekday($date,$weekday)
{
global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
// Hvis brugeren skal redigere
$datoen .="$date/";
$datoen .="$month/";
$datoen .="$year";
$nixdato=str2unix($datoen);
if((isset($date)) && (strlen($date) > 0) && (isset($weekday)) && (strlen($weekday) > 0)) // En dag i kalenderen
{
if(($CurrentDate == $date) && ($CurrentMonth == $month) && ($CurrentYear == $year))
//WEEKEND
echo "<td width=100 valign=top bgcolor=#CCCCCC><span class=\"textsmallb\">
<font face=Verdana size=2>".$date." <br>".CheckForMessage($nixdato)."</td>\n</span>";
else
// DEN DER GÿR NOGET!!
echo "<td width=100 valign=top bgcolor=#CCCCCC><span class=\"textsmallb\">
<font face=Verdana size=-2><b>".$date." </b><br>".CheckForMessage($nixdato)."</td>\n</span>";
}
else // Uden for kalenderen
echo "<td width=100 valign=top bgcolor=#CCCCCC><span class=\"textsmallb\"> </td>\n</span>";
}
// Funktion hvori layoutet til weekenden ligger
function LayoutWorkday($date,$weekday)
{
global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
global $password, $pass, $username, $user, $task;
// Hvis brugeren skal redigere
$datoen .="$date/";
$datoen .="$month/";
$datoen .="$year";
$nixdato=str2unix($datoen);
if (($user == $username) && ($pass == $password) && ($task=="ChooseDayToEdit"))
$editbutton = "<input type=submit name=ChosenDay value=".$date."/".$month."-".$year.">";
if((isset($date)) && (strlen($date) > 0) && (isset($weekday)) && (strlen($weekday) > 0)) // En dag i kalenderen
{
if(($CurrentDate == $date) && ($CurrentMonth == $month) && ($CurrentYear == $year))
///////////////////////////
//FINDER DEN AKTUELLE DAG//
///////////////////////////
echo "<td width=100 valign=top bgcolor=#ffffff><span class=\"textsmallb\">
<font face=Verdana size=-2><b>".$date." </b><br>".CheckForMessage($nixdato)."</td>\n</span>";
else
///////////////////////
//FINDER HVERDAGE//////
///////////////////////
echo "<td width=100 valign=top bgcolor=#CCCCCC><span class=\"textsmallb\">
<font face=Verdana size=-2><b>".$date." </b><br>".CheckForMessage($nixdato)."</td>\n</span>";
}
else // Uden for kalenderen
echo "<td width=100 valign=top bgcolor=#CCCCCC><span class=\"textsmallb\"> </td>\n</span>";
}
// Laver en query string, hvor resten af variable foruden month og year kommer med
// Derved bibeholdes andre variable, som siden er kaldt med
$query_string = $argv[0]; //Henter variable over i $query_string
$variables = explode('&',$query_string); // opdeler variable i et array
for($i=0 ; $i < sizeof($variables) ; $i ++) // sorterer month og year fra variable
if (ereg('month',$variables[$i]))
$variables[$i] = "";
elseif (ereg('year',$variables[$i]))
$variables[$i] = "";
unset($query_string);
for($i=0 ; $i < sizeof($variables) ; $i ++) // Skriver resten af variable til $query_string
if (strlen($variables[$i]) > 1)
$query_string = $query_string."&".$variables[$i];
$jdday = GregorianToJD($month,1,$year); //Datonummer i Julian Day
$NoInWeek = JDDayOfWeek($jdday,0); //Nummer dag i ugen
// TÊller antal dage i mÂned
$i = $jdday;
$DaysInMonth = 0;
while(JDMonthName($i++,1) == JDMonthName($jdday,1))
$DaysInMonth++;
// TÊller dage i f¯rste uge
$DaysInFirstWeek = 1;
$i = $jdday;
while(JDDayOfWeek($i++,0) != "Sunday")
$DaysInFirstWeek++;
// Udskriver MÂned og links til forrige og nÊste mÂned
echo "<p class=\"tekst\"><font face=Verdana size=2>".Translate(JDMonthName($jdday,1))." $year</font><br>\n";
echo "<a href=$PHP_SELF?month=".($month-1)."&year=$year$query_string>Forrige mÂned</a> - ";
echo "<a href=$PHP_SELF?month=".($month+1)."&year=$year$query_string>NÊste mÂned</a>";
//Udskriver starten p tabellen
echo "<table width=700 cellpadding=4 cellspacing=1 border=0>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">Mandag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">Tirsdag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">Onsdag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">Torsdag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">Fredag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">L¯rdag</span></td>
<td width=100 align=center bgcolor=#999999><span class=\"textsmallw\">S¯ndag</span></td>
</tr>";
// ----------- Udskriver kalenderen ------------
$ok = 1;
while($ok == 1)
{
echo "<tr>\n";
for($i=1 ; $i<=7 ; $i++)
{
// Skiller month/day/year fra hinanden
$MonthDayYear = explode('/',JDToGregorian($jdday));
//Opdeler mÂneden i to (starten, indenfor de f¯rste ugedage, og resten)
if($MonthDayYear[1] < $DaysInFirstWeek)
{
if($NoInWeek <= $i) // Skriver f¯rst datoer, fra f¯rste korrekte ugedag i mÂneden
{
if(($i == 6) || ($i == 7)) // Weekend-dage i andre farver
LayoutWeekday($MonthDayYear[1],JDDayOfWeek($jdday,1));
else
LayoutWorkday($MonthDayYear[1],JDDayOfWeek($jdday,1));
$NoInWeek++;
$jdday++;
}
else
if(($i == 7) || ($i == 6)) // Weekend-dage i andre farver
LayoutWeekday('','');
else
LayoutWorkday('','');
}
else
{
if(($i == 6) || ($i == 7)) // Weekend-dage i andre farver
LayoutWeekday($MonthDayYear[1],JDDayOfWeek($jdday,1));
else
LayoutWorkday($MonthDayYear[1],JDDayOfWeek($jdday,1));
if($MonthDayYear[1] == $DaysInMonth) // HÈr nÂet til sidste dag i mÂneden
{
for($i ; $i<7 ; $i++)// Udskriver nu resten af kalenderen for dÈn mÂned
{
if(($i == 5) || ($i == 6)) // Weekend-dage i andre farver
LayoutWeekday('','');
else
LayoutWorkday('','');
}
$ok = 0;
break;
}
$jdday++;
}
}
echo "</tr>";
}
// Udskriver afslutning p tabellen
echo "</table>";
