Liebe PHP-Gemeinde
Ich verwende folgenden Code für die Ausgabe eines Kalenders (hier zu sehen):
	
Das ist der Teil mit dem Problem:
	
Somit kann man bei der Kalender-Ansicht durch die Monate blättern. Jedoch ist mir nicht klar wie ich auch das Jahr einbauen soll. Wenn es also bei Dezember 2012 ankommt, soll danach logischerweise Januar 2013 kommen. Im Moment bleibt es immer im gleichen Jahr 2012.
Habt ihr einen Tipp für mich, wie ich das Jahr auch einbauen kann beim blättern?
Vielen Dank!!!
					Ich verwende folgenden Code für die Ausgabe eines Kalenders (hier zu sehen):
PHP-Code:
	
	
 <?php
   $art = REX_ARTICLE_ID;
    class rex_cal
    {
       var $curYear;
       var $curMonth;      //Aktueller Monat als Zahl
       var $monthDays;      //Anzahl der Tage des aktuellen Monats
       var $firstDay;      //erster Tag des aktuellen Monats
       var $values = array();         //Array mit dem ID-Wert des Events
       function rex_cal($givenMonth = '', $givenYear = '')
       {
               
          //Wenn kein Jahr angegeben wird, dann nehme ich den das aktuelle
          if($givenYear == '')
             $this->curYear = date('Y', time());
          else
             $this->curYear = $givenYear;
         
          //Wenn kein Monat angegeben wird, dann nehme ich den aktuellen Monat
          if($givenMonth == '')
             $this->curMonth = date('n', time());
          else
             $this->curMonth = $givenMonth;
         
          $this->monthDays = date('t', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));
          $this->firstDay = date('w', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));
         
         
          //wir ruecken das Array um so viele Stellen weiter, bis es mit dem startenden Wochentag uebereinstimmt
          for($pushDay = 0; $pushDay<$this->firstDay; $pushDay++)
          {
             array_push($this->values, NULL);
          }
         
          //wir befuellen das Array standard-maessig mit Zahlen
          for($day = 1; $day<=$this->monthDays; $day++)
          {
             array_push($this->values, '<span class="day">'.$day.'</span>');
          }   
         
          if($this->curMonth == 13)
          {
             $this->curMonth = 1;
             $this->curYear++;
          }
         
          if($this->curMonth == 0)
          {
             $this->curMonth = 12;
             $this->curYear--;
          }   
       
       }
       
       //Fuegt einen Wert in ein Array
       function setValue($tag, $value)
       {
          $this->values[$tag+$this->firstDay-1] = $this->values[$tag+$this->firstDay-1].$value;
       }
       
       //Fuegt einen Link in ein Array
       function setLink($tag, $befor, $after)
       {
          $this->values[$tag+$this->firstDay-1] = $befor.$this->values[$tag+$this->firstDay-1].$after;
       }
       
       function setrepeatValue($tag, $value)
       {
         
       }
       
       function nextMonth()
       {
          $this->curMonth = $this->curMonth+1;
         
          if($this->curMonth == 13)
          {
             $this->curMonth = 1;
             $this->curYear++;
          }   
       }
       
       function lastMonth()
       {
          $this->curMonth = $this->curMonth-1;
         
          if($this->curMonth == 0)
          {
             $this->curMonth = 12;
             $this->curYear--;
          }   
       }
       
       function nextYear()
       {
          $this->curYear = $this->curYear+1;
       }
       
       function lastYear()
       {
          $this->curYear = $this->curYear-1;
       }
       
       //liefert den aktuellen Monat als Namen zurück
       function getMonth($month = array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'))
       {
          return $month[$this->curMonth-1];
       }
       
       function getMonthAsNumber()
       {
          return $this->curMonth;
       }
       function getKalender($header = array('M','D','M','D','F','S','S'))
       {
          $output = '<table class="kalendar">
             <tr>
          ';
          foreach($header as $element)
             $output .= '<th>'.$element.'</th>'
             ;
         
          $output .= '</tr>'
          ;
         
          for($row = 1; $row<=6; $row++)
          {
             $output .= '<tr>
             ';
             for($col= 1; $col<=7; $col++)
             {
                if($this->values[$col+(($row-2)*7)] == "")
                   $class='class="none"';
                else
                   $class = "";
                   
                $output .= '<td '.$class.'>'.$this->values[$col+(($row-2)*7)].'</td>
                ';
             }
             $output .= '</tr>
             ';
          }
         
          $output .= '</table>
          ';
         
          return $output;   
       }
    }
    //Wenn es noch keine eventID gibt -> wenn kein Termin angeklickt wurde
    if(!isset($_REQUEST['eventid']))
    {
       
       if(!isset($_REQUEST['month']))
          $makeCal = new rex_cal();
       else
          $makeCal = new rex_cal($_REQUEST['month']);
       $getAll = new rex_sql;
       $getAll->setQuery("SELECT * FROM rex_120_events WHERE SUBSTRING(DATE, 5,2)='".sprintf("%02d", $makeCal->getMonthAsNumber())."'");
     
       for($u=0; $u<$getAll->getRows(); $u++)
       {
          if($getAll->getValue('DATE') != '')
          {
             $makeCal->setValue(substr($getAll->getValue('DATE'), 6, 2), '<a href="index.php?article_id='.$art.'&eventid='.$getAll->getValue('ID').'">'.substr($getAll->getValue('DATE'), 6, 2).'</a>');
          }
          $getAll->next();
       
       }
      echo '<div id="kalender">';
       echo '<h2><span class="last"><a href="index.php?article_id='.$art.'&month='.($makeCal->getMonthAsNumber()-1).'"><img src="files/last.png" alt="vorheriger Monat" /></a></span> ';
             echo " ".$makeCal->getMonth()." ";
      echo '<span class="next"><a href="index.php?article_id='.$art.'&month='.($makeCal->getMonthAsNumber()+1).'"><img src="files/next.png" alt="nächster Monat" /></a></span></h2>';
       echo $makeCal->getKalender();
      echo '</div>';
    }
    //andernfalls...
    else
    {
   
   
       $getAll = new rex_sql;
       $getAll->setQuery("SELECT * FROM rex_120_events WHERE ID='".$_REQUEST['eventid']."'");
       
       if($getAll->getRows() > 0)
       {
         
        echo '<div id="kalender-detail">';
        echo '<h1>Info</h1>';
       
          echo '<p>'.substr($getAll->getValue('DATE'), 6, 2).'.'.substr($getAll->getValue('DATE'), 4, 2).'.'.substr($getAll->getValue('DATE'), 0, 4);
         
       if ($getAll->getValue('TIME'))
      {
      echo  ' - '.$getAll->getValue('TIME').' Uhr';
       }
   
   
   echo '</p>';
   echo '<p>'.$getAll->getValue('EVENT').'</p>';
   if($getAll->getValue('DETAIL')){ print("<p class=\"back\"><a href=\"index.php?article_id=".$getAll->getValue('DETAIL')."\">Detail</a></p><br clear=\"all\">"); }
       }
       else
       {
          echo '<p class="warning">Dieses Event existiert nicht!</p>';
       }
       
       echo '<p class="back"><a href="javascript:history.back()">zurück zum Kalender</a></p>';
      echo '</div>';
    }
    ?>
PHP-Code:
	
	
echo '<div id="kalender">';
echo '<h2><span class="last"><a href="index.php?article_id='.$art.'&month='.($makeCal->getMonthAsNumber()-1).'"><img src="files/last.png" alt="vorheriger Monat" /></a></span> ';
echo " ".$makeCal->getMonth()." ";
echo '<span class="next"><a href="index.php?article_id='.$art.'&month='.($makeCal->getMonthAsNumber()+1).'"><img src="files/next.png" alt="nächster Monat" /></a></span></h2>';
echo $makeCal->getKalender();
echo '</div>'; 
Habt ihr einen Tipp für mich, wie ich das Jahr auch einbauen kann beim blättern?
Vielen Dank!!!
 
          
 
							
						
Kommentar