Ich habe vor nicht alzu langer Zeit mit OPP angefangen. Ich bin daher eher nen Beginner als fortgeschrittener und möchte euch eine meiner ersten Klassen vorstellen: Eine Klasse für einen Kalender.
Ich wollte euch einfach mal fragen, was ich verbessern kann oder wo ich noch - für einige von euch - offensichtliche Fehler gemacht habe.
Würd mich freuen, wenn ihr mich nicht zerreißt
Herzlichen Dank für eure Ratschläge und Tipps im Voraus!
MfG
Stefan
Ich wollte euch einfach mal fragen, was ich verbessern kann oder wo ich noch - für einige von euch - offensichtliche Fehler gemacht habe.
Würd mich freuen, wenn ihr mich nicht zerreißt
PHP-Code:
<?php
<?php
class kalender{
// Attribute
var $currentDay; // Aktueller Tag
var $currentYear; // Aktuelles Jahr
var $currentMonth; // Aktueller Monat
function kalender() {
// Aktuelles Datum errechnen
$curDate = $this->getCurDate();
// Aktuelles Datum in den Attribute speichern
$this->currentDay = $curDate[day];
$this->currentMonth = $curDate[month];
$this->currentYear = $curDate[year];
}
function createKalBlock($monthScroll = 0) {
/* Monat ermitteln, der angezeigt werden soll */
$showDate = $this->getShowDate($monthScroll);
/* Wochentag des ersten Tages des Monats ermitteln */
$wochentag = $this->getWochentag($showDate[month],$showDate[year], 1); // 1-7
$i = 2-$wochentag; // -1 bis -5
$return.= "<b><center><span style=\"font: bold 17pt Arial; color: #000000;\">
" . $this->getGermanMonth($showDate[month]) . " ' " . $showDate[year] . "</center></span></b><br />";
/* Anzahl der Tage im Monat ermitteln */
$dateStr = $showDate[year] . "-" . $showDate[month] . "-1"; // Datumsstring
$timestamp = strtotime($dateStr); // Timestamp ermitteln
$numberOfDays = date('t', $timestamp); // Anzahl der Tage in $numberOfDays
// $return = String zur Ausgabe
$return.= "
<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td width=\"50\" align=\"center\"><b>M</b></td>
<td width=\"50\" align=\"center\"><b>D</b></td>
<td width=\"50\" align=\"center\"><b>M</b></td>
<td width=\"50\" align=\"center\"><b>D</b></td>
<td width=\"50\" align=\"center\"><b>F</b></td>
<td width=\"50\" align=\"center\"><b>Sa</b></td>
<td width=\"50\" align=\"center\"><b>So</b></td>
</tr>
";
// Die Schleife wird 42 mal durchlaufen, damit zum schluss auf alle fälle die letzte Tabellenzeile geschlossen wird
for($x=1;$x<=42;$x++) {
// Falls der naechste Tag ein Montag ist, vorher eine neue Zeile beginnen
if($x == 1 || $x == 8 || $x == 15 || $x == 22 || $x == 29 || $x == 36) {
$return.="<tr>\n";
}
//
if($i > 0 && $i<=$numberOfDays) {
$return.="<td height=\"35\" align=\"center\" valign=\"middle\">\n";
if($i == $this->currentDay && $this->currentMonth == $this->showMonth && $this->currentYear == $this->showYear) {
$return.="<b><font color=\"black\">$i</font></b>\n";
}
else {
$return.=$i . "\n";
}
$return.="</td>\n";
}
else {
$return.="<td>\n </td>\n";
}
if($x == 7 || $x == 14 || $x == 21 || $x == 28 || $x == 35 || $x == 42) {
$return.="</tr>\n";
}
$i++;
}
$return.="
<tr>
<td colspan=\"3\">
<a href=\"?content=kal_overview&monthScroll=" . ($monthScroll-1) . "\" alt=\"Zurueck\">Zurueck</a>
</td>
<td colspan=\"4\" align=\"right\">
<a href=\"?content=kal_overview&monthScroll=" . ($monthScroll+1) . "\" alt=\"Zurueck\">Naechster</a>
</td>
</tr>
</table>";
return $return;
}
// Gibt das aktuelle Datum in einem Array zurueck
function getCurDate() {
$this->currentYear = date(Y); // Aktuelle Jahr
$this->currentMonth = date(m); // Aktuelle Monat
$this->currentDay = date(d); // Aktuelle Tag
return array ("month" => $this->currentMonth, "year" => $this->currentYear, "day" => $this->currentDay); // Rueckgabe des Arrays
}
// Verschieben des Datums um $monthScroll und gibt den anzuzeigenden Monat und Jahr in einem array zurueck
function getShowDate($monthScroll) {
$showDateTimestamp = mktime(0, 0, 0, date("m")+$monthScroll, 10, date("Y")); // Timestamp mit dem anzuzeigendem Monat erstellen
$this->showMonth = date(m, $showDateTimestamp);
$this->showYear = date(Y, $showDateTimestamp);
return array (month => date("m", $showDateTimestamp), year => date("Y", $showDateTimestamp)); // Rueckgabe des Arrays
}
// Ermitteln eines Wochentages
function getWochentag($month, $year, $day) {
$str = "$year-$month-01";
$timestamp = strtotime($str);
$wochentag = date('l', $timestamp);
switch($wochentag) {
case 'Monday': $return = 1;
break;
case 'Tuesday': $return = 2;
break;
case 'Wednesday': $return = 3;
break;
case 'Thursday': $return = 4;
break;
case 'Friday': $return = 5;
break;
case 'Saturday': $return = 6;
break;
case 'Sunday': $return = 7;
break;
}
return($return);
}
// Namen des deutschen Monats ermitteln
function getGermanMonth($monthNumber) {
switch($monthNumber) {
case 1: return "Januar";
break;
case 2: return "Februar";
break;
case 3: return "März";
break;
case 4: return "April";
break;
case 5: return "Mai";
break;
case 6: return "Juni";
break;
case 7: return "Juli";
break;
case 8: return "August";
break;
case 9: return "September";
break;
case 10: return "Oktober";
break;
case 11: return "November";
break;
case 12: return "Dezember";
break;
}
}
}
?>
PHP-Code:
<?php
include("kal_class.php");
$kalender = new kalender;
$block_inhalt = $kalender->createKalBlock($_GET[monthScroll]);
echo $block_inhalt;
MfG
Stefan
Kommentar