kalender fejl søndag
Hej eksperter.Jeg har en kalender hvor der er en fejl i. hver gang søndag er den første dag i måneden springer den søndagen over og hopper til mandag i stedet.
så det der skal rettes er altså, at søndag godt kan være d. 1
på forhånd tak
koden ser således ud:
<?
$filnavn = "../../../kalenderbeskeder.txt";
if($action == "ChooseDayToEdit") { $task = "ChooseDayToEdit"; }
elseif($action == "HaveChosenDayToEdit") { $task = "EditDay"; }
elseif($action == "HaveEditedMessage") { $task = "SaveMessage"; }
else { $task = "DontKnowWhatToDo"; }
echo "<form method=post name='ret'>";
//Henter kalenderbeskeder til buffer
$fd = @fopen ("$filnavn", "r");
while (!feof ($fd)) {
$buffer[] = fgets($fd, 4096);
}
fclose ($fd);
// 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";
}
}
// Skal her gemme til filen, hvis der er ændringer
if (($task=="SaveMessage"))
{
// Erstatter linjeskift med <br> i Message
$Message = ereg_replace("\n",'<br>',$Message);
//Tjecker om der er noget i bufferen i forvejen, og hvilken plads dagen ligger på
if(sizeof($buffer) > 0)
{
for($i=0 ; $i < sizeof($buffer) ; $i++)
if(ereg($ChosenDay,$buffer[$i]))
{ $PlaceInBuffer = $i; }
}
// Lægger den nye besked over i buffer
if (strlen($Message) > 0)
if (strlen($PlaceInBuffer) > 0)
$buffer[$PlaceInBuffer] = $ChosenDay."|".$Message."\n"; // Hvis der ovenfor ikke findes en plads, vil PlaceInBuffer være tom,
else // og Message vil blive lagt ind i en ny plads i buffer.
$buffer[] = $ChosenDay."|".$Message."\n";
elseif(strlen($PlaceInBuffer) > 0)
$buffer[$PlaceInBuffer] = ''; // Sletter pladsen, hvis der ikke er en besked
// Gemmer filen
$fp = fopen("$filnavn", "w");
for ($a=0; $a < sizeof($buffer); $a++) {
if(strlen($buffer[$a] > 0))
fwrite($fp, $buffer[$a]);
}
fclose($fp);
}
function CheckForMessage($Date)
{
global $buffer, $month, $year;
$Date = $Date."/".$month."-".$year;
if(sizeof($buffer) > 0)
{
//Splitter datoer fra beskeder
for($i=0 ; $i < sizeof($buffer) ; $i++)
{
$temp = explode('|',$buffer[$i]);
$DateArray[] = $temp[0];
$MessageArray[] = $temp[1];
}
for($i=0 ; $i < sizeof($buffer) ; $i++)
{
if((ereg($Date,$DateArray[$i])) && (strlen($Date) == strlen($DateArray[$i])))
{
return $MessageArray[$i];
break;
}
}
}
else
return "";
}
// Funktion hvori layoutet til ugedagene ligger
function LayoutWeekday($date,$weekday)
{
global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
global $task;
// Hvis brugeren skal redigere
if ($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))
echo "<td width=120 height=80 align=left valign=top bgcolor=#33FF66><font face=Verdana size=2>".$date."".$editbutton."<br /><a href='vis.php?day=".$date."&month=".$month."&year=".$year."'><span style='color:#3e3e3e;'>".substr(CheckForMessage($date), 0, 25)."</span></a></td>\n";
else
echo "<td width=120 height=80 align=left valign=top bgcolor=#aaaaaa><font face=Verdana size=2>".$date."".$editbutton."<br /><a href='vis.php?day=".$date."&month=".$month."&year=".$year."'><span style='color:#3e3e3e;'>".substr(CheckForMessage($date), 0, 25)."</span></a></td>\n";
}
else // Uden for kalenderen
echo "<td width=120 height=80 align=center valign=top bgcolor=#aaaaaa> </td>\n";
}
// Funktion hvori layoutet til weekenden ligger
function LayoutWorkday($date,$weekday)
{
global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
global $task;
// Hvis brugeren skal redigere
if ($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))
echo "<td width=120 height=80 align=left valign=top bgcolor=#33FF66><font face=Verdana size=2>".$date."".$editbutton."<br /><a href='vis.php?day=".$date."&month=".$month."&year=".$year."'><span style='color:#3e3e3e;'>".substr(CheckForMessage($date), 0, 25)."</span></a></td>\n";
else
echo "<td width=120 height=80 align=left valign=top bgcolor=#dddddd><font face=Verdana size=2>".$date."".$editbutton."<br /><a href='vis.php?day=".$date."&month=".$month."&year=".$year."'><span style='color:#3e3e3e;'>".substr(CheckForMessage($date), 0, 25)."</span></a></td>\n";
}
else // Uden for kalenderen
echo "<td width=120 height=80 align=center valign=top bgcolor=#dddddd> </td>\n";
}
// 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 "
<center>
<table id='bg_greypattern' border='0' cellspacing='0' cellpadding='2' width='840px'>
<tr>
<td class='overskrift' colspan='3'>
<center>".Translate(JDMonthName($jdday,1))." $year</center>
</td>
</tr>
<tr>";
if(!(isset($action)))
{
echo "<td style='text-align:left;'><a href=$PHP_SELF?month=".($month-1)."&year=$year$query_string>Forrige måned</a></td>";
echo "<td style='text-align:center;'><a href='#' onclick='document.ret.submit();'><img src='../billeder/edit.jpg' alt='Rediger information' /></a></td>";
echo "<td style='text-align:right;'><a href=$PHP_SELF?month=".($month+1)."&year=$year$query_string>Næste måned</a></td>";
echo "<input type=hidden name=action value=ChooseDayToEdit>";
}
if($task == "SaveMessage")
{
echo "<td style='text-align:left;'><a href=$PHP_SELF?month=".($month-1)."&year=$year$query_string>Forrige måned</a></td>";
echo "<td style='text-align:center;'><a href='#' onclick='document.ret.submit();'><img src='../billeder/edit.jpg' alt='Rediger information' /></a></td>";
echo "<td style='text-align:right;'><a href=$PHP_SELF?month=".($month+1)."&year=$year$query_string>Næste måned</a></td>";
echo "<input type=hidden name=action value=ChooseDayToEdit>";
}
echo "</td></tr></table>
<table id='bg_greypattern' border='0' cellspacing='2' cellpadding='2' width='840px'>
<tr><td id='day'>Mandag</td><td id='day'>Tirsdag</td><td id='day'>Onsdag</td><td id='day'>Torsdag</td><td id='day'>Fredag</td><td id='day'>Lørdag</td><td id='day'>Søndag</td></tr>
";
$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>";
}
echo "</td></tr></table>";
// Udskriver form til
if ($task=="ChooseDayToEdit")
{
echo "<input type=hidden name=action value=HaveChosenDayToEdit>";
}
if ($task=="EditDay")
{
//Henter kalenderbeskeder til buffer
$fd = @fopen ("$filnavn", "r");
while (!feof ($fd)) {
$buffer[] = fgets($fd, 4096);
}
fclose ($fd);
if(sizeof($buffer)>0) //Denne blok udføres kun hvis der blev hentet noget fra filen
{
for($i=0 ; $i < sizeof($buffer) ; $i++)
if(ereg($ChosenDay,$buffer[$i]))
{
$TempBuffer = explode('|',$buffer[$i]);
$Message = $TempBuffer[1];
}
}
//Viser besked på skærm
$Message = ereg_replace("<br>","\n",$Message);
echo "<font face=Verdana size=2><b>Dato: $ChosenDay</b></font><br>\n";
echo "<textarea border=0 name=Message style='width:840px; height:300px;'>".trim($Message)."</textarea><br>\n";
echo "<input type=hidden name=ChosenDay value=$ChosenDay>";
echo "<input type=hidden name=action value=HaveEditedMessage>";
echo "<input type=\"submit\" value=\"Tilføj/Ret\" style='width:840px;'><br>\n";
// Vil herefter hente siden, og gå op til starten af filen
}
echo "</form>";
?>