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