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
 
          

 Moderator
 Moderator 
							
						
Comment