Kalender-Skript: letzter Tag (Mo.) im Monat wird nicht angezeigt
Stanload
- php
0 MudGuard0 Stanload0 Axel Richter0 Stanload0 Axel Richter0 Stanload0 Axel Richter0 Stanload
Hallöchen,
ich habe hier ein kleines Problemchen bei einem Kalender-Skript (siehe Link unten): der 28. Februar wird erstaunlicherweise nicht angezeigt und ich weiß zum Teufel nicht wieso. Gleiches gilt z.B. auch für den 30. Mai 2005.
Irgendwie wird die letzte Zeile, wenn es dort nur einen Tag gibt, nicht ausgegeben :-(.
Hier einfach einmal das Coding:
...
&php?php
monthonthissetsseGET_GET['y']) &regmmatch; preg_match('/^\GET,2}$/',$_GET['m']) &GET;amp;& $_GEGETm'] &date 13) ? $_GET[year : dissetn')GETr />$year = (issetpregEmatch]) &&amGETmp; preg_matGET'/^\d{4}date$_GET['y'])) daysGETdate] : dmktime');
months = year('t',mktime(0,0,startncol1,$date));
mktimer />$stamonthl = year('w',mktime(0,0,0,rowsth,ceileadays1;
$roday= ceil($days/7);arr month />array1;
$arr_month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','Noechoer','Dtableeid);
calendarcho '<table id=&revomonthendarmonthquot;>month />
$prev_yearh = (monthh==1) ? year $montyear
$prev_yenext monthth==1monthyear-1 : $yeamonth />
$next_yearh = (monthh==12) ? year$monthyearbr />$next_yeecho ($montr==12) ? thear+1 : $yhref
basename'<trPHPpSELF<th&prevgmonthp;lt;a ampf=&prevtyearasename($_SERVER[laquoSELF']).'?m='.$pthv_month.thacolspanamp;y='.$prev_year.'&arr;month&amonth;&yearuo;&tht;/a&tht;<hrefamp;gt;&abasename colspan=&aPHPqSELF5"next;month$arr_moamp[$montnext.year$year.'</traquo;gt;<th&ath;gt;&tr;a href="echosenametr_SERVER[tdHclassF']).'?headerext_month.Moamp;atd;amp;y='tdnclassear.'&aheadert;>Dimp;amtdraquo;&atd;class>headerlt;/th&Mit;&amtdlt;/tr&atd;class
headercho '&Do;tr&atd;gt;&tdtclasslass=&aheadert;header"tdamp;gt;Mtdaclass;/td&amheaderamp;lt;td class=&tdp;quot;htddclassp;quot;headert;Di</td&atd;gt;&tr;td class=&quoforeader&quorowsmp;gt;Mi</td&echogt;&amtrlt;td class=&quostartdcolamp;qstartacolgt;Do</tstart;col<td claif=&startucolheader"&adaygt;Fr</td&for&aaa;lstartccols=aamp;quotaaeader"echop;gt;Stdamp;lt;/tnbspp;gt;&tdp;lt;td class="headeformp;qustartmcolt;So</td></trdayp;gt;daybr /date />for($a=0;$a&monthrowdate++)
{
eyear'&amdate;tr>';
td class /> $sttodayol = ($start_day == -1)td 6 : $start_ctd;
day /> if(tdtart_col>echoampdayp;&amdaysp; $day==td
{
nbsp> fotd$aa=$start_day;$aa>day$aa--)
{ echo '&echolt;td&atr;gt;&nstartacollt;/td>'; }
echor />
tableor($b=$start_col;$b<7;$b++)
{
$s_day = ($day == date('j') &ahoffmp;& $month = date('n') &Stanloadp; $year == date('Y')) ? '<td class="today">'.$day.'</td>' : '<td>'.$day.'</td>';
echo ($day>$days) ? '<td>&nbsp;</td>' : $s_day;
$day++;
}
echo '</tr>';
$start_col = 0;
}
echo '</table>';
?>
...
Vielleicht könnt Ihr mir ja weiterhelfen *hoff*.
Bis denn
Stanload
Hi,
Hier einfach einmal das Coding:
&php?php
monthonthissetsseGET_GET['y']) &regmmatch; preg_match('/^\GET,2}$/',$_GET['m']) &GET;amp;& $_GEGETm'] &date 13) ? $_GET[year :
Da ist doch wohl irgendwas schiefgelaufen, oder?
cu,
Andreas
Hallo MudGuard,
Da ist doch wohl irgendwas schiefgelaufen, oder?
Ich glaub, die neue Forumssoftware hat ganz gewaltig sein Posting verhunzt.
Gruß
Lachgas
Hallöchen,
Ich glaub, die neue Forumssoftware hat ganz gewaltig sein Posting verhunzt.
Das glaube ich auch!
Hm, da ist man mal ein paar Monate nicht mehr hier und alles läuft anders *g*.
Wie kann ich denn nun Coding hier posten?
Bis denn
Stanload
Hi,
Wie kann ich denn nun Coding hier posten?
Im Zweifelsfall als .txt auf Deinem Webspace ablegen und hier verlinken.
cu,
Andreas
Hallo,
ich hab's nun noch einmal versucht und siehe da, es hat geklappt *g*.
Bis denn
Stanload
So, hier das Skript noch einmal ein bissel leserlicher *g*:
<?php
$month = (isset($_GET['y']) && preg_match('/^\d{1,2}$/',$_GET['m']) && $_GET['m'] < 13) ? $_GET['m'] : date('n');
$year = (isset($_GET['y']) && preg_match('/^\d{4}$/',$_GET['y'])) ? $_GET['y'] : date('Y');
$days = date('t',mktime(0,0,0,$month,1,$year));
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
$rows = ceil($days/7);
$day=1;
$arr_month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
echo '<table id="calendar">';
$prev_month = ($month==1) ? 12 : $month-1;
$prev_year = ($month==1) ? $year-1 : $year;
$next_month = ($month==12) ? 1 : $month+1;
$next_year = ($month==12) ? $year+1 : $year;
echo '<tr><th><a href="'.basename($_SERVER['PHP_SELF']).'?m='.$prev_month.'&y='.$prev_year.'">«</a></th><th colspan="5">'.$arr_month[$month-1].' '.$year.'</th><th><a href="'.basename($_SERVER['PHP_SELF']).'?m='.$next_month.'&y='.$next_year.'">»</a></th></tr>';
echo '<tr><td class="header">Mo</td><td class="header">Di</td><td class="header">Mi</td><td class="header">Do</td><td class="header">Fr</td><td class="header">Sa</td><td class="header">So</td></tr>';
for($a=0;$a<$rows;$a++)
{
echo '<tr>';
$start_col = ($start_col == -1) ? 6 : $start_col;
if($start_col>0 && $day==1)
{
for($aa=$start_col;$aa>0;$aa--)
{ echo '<td> </td>'; }
}
for($b=$start_col;$b<7;$b++)
{
$s_day = ($day == date('j') && $month = date('n') && $year == date('Y')) ? '<td class="today">'.$day.'</td>' : '<td>'.$day.'</td>';
echo ($day>$days) ? '<td> </td>' : $s_day;
$day++;
}
echo '</tr>';
$start_col = 0;
}
echo '</table>';
?>
Bis denn
Stanload
Hallo,
$days = date('t',mktime(0,0,0,$month,1,$year));
$rows = ceil($days/7);
Wenn $days == 28, dann ist $rows == 4. Der Februar liegt aber in 5 Wochen.
Ermittle die Kalenderwoche für jeweils den 1. und Letzten des Monats und setzte $rows auf die Differenz der KWs + 1.
viele Grüße
Axel
Hallo Axel,
Wenn $days == 28, dann ist $rows == 4. Der Februar liegt aber in 5 Wochen.
Ermittle die Kalenderwoche für jeweils den 1. und Letzten des Monats und setzte $rows auf die Differenz der KWs + 1.
könntest Du mir bitte weiterhelfen *g*:
wie ermittle ich die Kalenderwoche des 1. und Letzten?
Bis denn
Stanload
Hallo,
wie ermittle ich die Kalenderwoche des 1. und Letzten?
Was hast Du an der date()-Funktion http://de3.php.net/manual/en/function.date.php, die Du ja bereits verwendest, nicht verstanden?
viele Grüße
Axel
Hallo,
Was hast Du an der date()-Funktion http://de3.php.net/manual/en/function.date.php, die Du ja bereits verwendest, nicht verstanden?
Ich habe es nicht so richtig verstanden, da das Skript nicht von mir ist.
Ich habe es im Netz gefunden, möchte es verwenden und bin auf den Fehler aufmerksam geworden.
Den Entwickler versuche ich seitdem vergebens zu erreichen.
Bis denn
Stanload
Hallo,
Was hast Du an der date()-Funktion http://de3.php.net/manual/en/function.date.php, die Du ja bereits verwendest, nicht verstanden?
Ich habe es nicht so richtig verstanden, da das Skript nicht von mir ist.
Dann wird es schwierig.
Die Kalenderwoche des 1. kannst Du mit
$KW1 = date('W',mktime(0,0,0,$month,1,$year));
die des Letzten mit:
$days = date('t',mktime(0,0,0,$month,1,$year));
$KW2 = date('W',mktime(0,0,0,$month,$days,$year));
ermitteln.
Da ist aber garantiert noch mehr anzupassen.
viele Grüße
Axel
Hallo,
Die Kalenderwoche des 1. kannst Du mit
$KW1 = date('W',mktime(0,0,0,$month,1,$year));
die des Letzten mit:
$days = date('t',mktime(0,0,0,$month,1,$year));
$KW2 = date('W',mktime(0,0,0,$month,$days,$year));ermitteln.
Wow, das klappt ja schon super.
Wo mir natürlich nun direkt etwas aufgefallen ist, ist der Januar 2005. Ich denke mal, das liegt mit sicherheit daran, dass der 1. noch zur 52. KW gehört und wenn ich dann $rows = ceil($KW2-$KW1+1); rechne, bekommt er einen falschen Wert.
Bis denn
Stanload