CMS Image problem...

Abwesend

Grünschnabel
Sry erstmal das mir keine Bessere Überschrifft eingefallen ist :)

Also das Problem ist:

Ich benutze das Webspell CMS und hatte da vor einen Minicalender zu erstellen da es noch kein Passendes Addon gibt. Dazu habe ich eine Datei in die Seite includet, die ein Großer Kalender ist. Das Klappt auch so weit so gut, habe schon viel selber geschaft
siehe hier: http://www.dream-architects.de/images/webtemplates/webtemplate8_webspell/index.php?site=news

Jetzt das Problem, wenn man einen neuen eintrag macht steh ein Text da, der wird in der Db mit dem Präfix short gespeichert und als Text im Calender ausgegeben. Der Php Code sieht dazu so aus:

PHP:
$termin.='<a href="index.php?site=calendar&tag='.$t.'&month='.$mon.'&year='.$year.'">'.$ds[short].'</a><br>';

'.$ds[short].' ist eine Variable die die Überschrift ausgibt, also wenn ich da scheibe "Überschrift werden bei allen Terminen Überschrift ausgegeben.

Die Tabelle ist definiert durch:

PHP:
'<table width="100%" cellspacing="1" cellpadding="2" bgcolor="'.BORDER.'">
				<tr>
					<td class="title" align="center">&laquo; <a class="titlelink" href="index.php?site=calendar&month='.$prev.'&year='.$prev_yr.'">prev</a></td>
					<td class="title" align="center" colspan="5">'.date("F",$first_day).' '.$temp_yr.'</td>
					<td class="title" align="center"><a class="titlelink" href="index.php?site=calendar&month='.$next.'&year='.$next_yr.'">next</a> &raquo;</td>
				</tr>
				<tr>
					<td colspan="7" bgcolor="'.PAGEBG.'"></td>
				</tr>
				<tr>
					<td bgcolor="'.BGCAT.'" width="16%" align="center">Sun</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Mon</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Tue</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Wed</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Thu</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Fri</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Sat</td>
				</tr>
				<tr>
					<td colspan="7" bgcolor="'.BG_1.'"></td>
				</tr>';

Jetzt zum eigendlichen Problem:
Ich möchte nicht das der Text ausgegeben wird sondern das das Feld eines Eintrages Frablich markiert wird, z.B. Grün und das das ganze Feld anklickbar ist. Ich hab mir schon den ast abgebrochem um das hinzubekommen. Leider ohne erfolg. kann mir da einer Helfen?

Danke!
 
Naja Du hast ja die Daten , als Timestamp oder ähnliches in der Datenbank stehen.
Ich nehme an die Tabelle für den Kalender wird dynamisch mit PHP aufgebaut sonst würde es auch weniger Sinn machen.

Also du zeichnest sozusagen den die Tage innerhalb einer Schleife ein.Um das Feld zu makieren gibst bei dem Tabellenfeld Tag an

<td style="background-color:#fffffff">Eintrag</td> An zum Beispiel.

Also anstatt des Farbcodes übergibst dort einen Wert an eine Funktion.

<td style="background-color:#'".functions_name($i).">Eintrag</td> zum Beispiel.

Diese nimmt als Paramenter den aktuellen Index der Schleife. Also den Tag quasi. Nun kann man ja innerhalb der Funktion abgleichen ob das Datum in der Datenbank stand , wenn ja dann liefert die Funktion eine Farbe als Rückgabewert ansonsten gibst halt 'transparent' wieder oder eine andere Farbe.

Das ganze Feld anklickbar machen , also nicht den Tag als Link festlegen kannst Du dann mittels Javascript und den Eventhandler onlick machen.
 
Sry, aber ich bin kein php'ler:rolleyes: noch nicht, was du da schreibst klingt für mich in sofern Logisch da ich schon 3 Semester C++ habe und die Funktionsaufrufe mir geläufug sind. Ich Poste einfach mal den Gesammten Code, ich denke das einer von euch Profis das schnell so hinbekommt wie ich das meine, Hoffe das ist ´nicht zuviel Code auf einmal. Ziehmlich weit unten ist ein Kommentar // DATENBANK ABRUF da wird es definiert. Wäre schoön wenn da mal einer schauen könnte.

PHP:
if($_GET['action']=="savewar") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanwaradmin($userID)) die('No access!');

  $hour = $_POST['hour'];
  $minute = $_POST['minute'];
  $day = $_POST['day'];
  $month = $_POST['month'];
  $year = $_POST['year'];
  $squad = $_POST['squad'];
  $opponent = $_POST['opponent'];
  $opptag = $_POST['opptag'];
  $opphp = $_POST['opphp'];
  $oppcountry = $_POST['oppcountry'];
  $maps = $_POST['maps'];
  $server = $_POST['server'];
  $league = $_POST['league'];
  $leaguehp = $_POST['leaguehp'];
  $warinfo = $_POST['warinfo'];

  $date=mktime($hour,$minute,0,$month,$day,$year);
	safe_query("INSERT INTO ".PREFIX."upcoming ( date, type, squad, opponent, opptag, opphp, oppcountry, maps, server, league, leaguehp, warinfo )
                values( '$date', 'c', '$squad', '$opponent', '$opptag', '$opphp', '$oppcountry', '$maps', '$server', '$league', '$leaguehp', '$warinfo' ) ");
	    
	if($chID) safe_query("DELETE FROM ".PREFIX."challenge WHERE chID='$chID'");
	
	if($messages) {
		$title='new upcoming war in calendar!';
		$message='new upcoming clanwar on '.date("d.m.Y", $date).':[br][br]Opponent: [flag]'.$oppcountry.'[/flag] '.$opponent.' [br]League: '.$league.' [br]Info: '.$warinfo.'[br][br]link to calendar';
		
		$ergebnis=safe_query("SELECT userID FROM ".PREFIX."squads_members WHERE squadID='$squad'");
		while($ds=mysql_fetch_array($ergebnis)) {
			$id=$ds[userID];
			safe_query("INSERT INTO ".PREFIX."messenger (userID, date, fromuser, touser, title, message, viewed)
		                 values('$id', '$date', '$userID', '$id', '$title', '$message', '0')");  // eintrag für empfänger
						 
			safe_query("UPDATE ".PREFIX."user SET pmsent=pmsent+1 WHERE userID='$userID'");
			safe_query("UPDATE ".PREFIX."user SET pmgot=pmgot+1 WHERE userID='$id'");
		}
	}
	header("Location: index.php?site=calendar&tag=$day&month=$month&year=$year");
}
elseif($_GET['action']=="delete") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanwaradmin($userID)) die('No access!');
  $upID = $_GET['upID'];

	safe_query("DELETE FROM ".PREFIX."upcoming WHERE upID='$upID'");
	safe_query("DELETE FROM ".PREFIX."upcoming_announce WHERE upID='$upID'");
	header("Location: index.php?site=calendar");
}
elseif($_GET['action']=="saveannounce") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanmember($userID)) die('No access!');

  $tag = $_POST['tag'];
  $month = $_POST['month'];
  $year = $_POST['year'];

    $ergebnis=safe_query("SELECT * FROM ".PREFIX."upcoming_announce WHERE upID='".$_POST['upID']."' AND userID='$userID'");
	if(mysql_num_rows($ergebnis)) {
	    $ds=mysql_fetch_array($ergebnis);
		safe_query("UPDATE ".PREFIX."upcoming_announce SET status='".$_POST['status']."' WHERE annID='$ds[annID]' ");
	}
	else safe_query("INSERT INTO ".PREFIX."upcoming_announce ( upID, userID, status ) values( '".$_POST['upID']."', '$userID', '".$_POST['status']."' ) ");
	header("Location: index.php?site=calendar&tag=$tag&month=$month&year=$year");
}
elseif($_GET['action']=="saveeditdate") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanwaradmin($userID)) die('No access!');

  $hour = $_POST['hour'];
  $minute = $_POST['minute'];
  $day = $_POST['day'];
  $month = $_POST['month'];
  $year = $_POST['year'];

  $date=mktime($hour,$minute,0,$month,$day,$year);
	$enddate=mktime($_POST['endhour'],$_POST['endminute'],0,$_POST['endmonth'],$_POST['endday'],$_POST['endyear']);
	safe_query("UPDATE ".PREFIX."upcoming SET date='$date', 
                                 enddate='$enddate', 
								 short='".$_POST['short']."',
								 title='".$_POST['title']."',
								 country='".$_POST['country']."',
								 location='".$_POST['location']."',
								 locationhp='".$_POST['locationhp']."',
								 dateinfo='".$_POST['dateinfo']."' WHERE upID='".$_POST['upID']."' ");
	    
	header("Location: index.php?site=calendar&tag=$day&month=$month&year=$year");
}
elseif($_GET['action']=="savedate") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanwaradmin($userID)) die('No access!');

  $date=mktime($_POST['hour'],$_POST['minute'],0,$_POST['month'],$_POST['day'],$_POST['year']);
	$enddate=mktime($_POST['endhour'],$_POST['endminute'],0,$_POST['endmonth'],$_POST['endday'],$_POST['endyear']);
	if($date>$enddate) {
		$temp=$date;
		$date=$enddate;
		$enddate=$temp;
		unset($temp);
	}

	safe_query("INSERT INTO ".PREFIX."upcoming ( date, type, enddate, short, title, country, location, locationhp, dateinfo  )
                values( '$date', 'd', '".$enddate."', '".$_POST['short']."', '".$_POST['title']."', '".$_POST['country']."', '".$_POST['location']."', '".$_POST['locationhp']."', '".$_POST['dateinfo']."' ) ");
  redirect("index.php?site=calendar&tag=".$_POST['day']."&month=".$_POST['month']."&year=".$_POST['year'],"",0);
}
elseif($_GET['action']=="saveeditwar") {
	include("_mysql.php");
	include("_settings.php");
	include("_functions.php");
  if(!isclanwaradmin($userID)) die('No access!');

  $upID = $_POST['upID'];
  $hour = $_POST['hour'];
  $minute = $_POST['minute'];
  $day = $_POST['day'];
  $month = $_POST['month'];
  $year = $_POST['year'];
  $squad = $_POST['squad'];
  $opponent = $_POST['opponent'];
  $opptag = $_POST['opptag'];
  $opphp = $_POST['opphp'];
  $oppcountry = $_POST['oppcountry'];
  $maps = $_POST['maps'];
  $server = $_POST['server'];
  $league = $_POST['league'];
  $leaguehp = $_POST['laeguehp'];
  $warinfo = $_POST['warinfo'];

    $date=mktime($hour,$minute,0,$month,$day,$year);
	safe_query("UPDATE ".PREFIX."upcoming SET date='$date',
                                 type='c', 
								 squad='$squad', 
								 opponent='$opponent', 
								 opptag='$opptag', 
								 opphp='$opphp', 
								 oppcountry='$oppcountry', 
								 maps='$maps', 
								 server='$server', 
								 league='$league', 
								 leaguehp='$leaguehp', 
								 warinfo='$warinfo' WHERE upID='$upID' ");
	    
	header("Location: index.php?site=calendar&tag=$day&month=$month&year=$year");
}

$month = $_GET['month'];
$year = $_GET['year'];
$tag = $_GET['tag'];

eval ("\$title_calendar = \"".gettemplate("title_calendar_minicalendar")."\";");
echo $title_calendar;

if(isclanwaradmin($userID)) echo'<input type="button" class="button" onClick="MM_goToURL(\'parent\',\'index.php?site=calendar&action=addwar\');return document.MM_returnValue" value="Add Clanwar">
                                                             <input type="button" class="button" onClick="MM_goToURL(\'parent\',\'index.php?site=calendar&action=adddate\');return document.MM_returnValue" value="Add Event"><br><br>';


function print_calendar($mon,$year) {
    global $dates, $first_day, $start_day;
	
	$pagebg=PAGEBG;
	$border=BORDER;
	$bghead=BGHEAD;
	$bgcat=BGCAT;

	$first_day = mktime(0,0,0,$mon,1,$year);
	$start_day = date("w",$first_day);
	$res = getdate($first_day);
	$month_name = $res["month"];
	$no_days_in_month = date("t",$first_day);

	//If month's first day does not start with first Sunday, fill table cell with a space
	for ($i = 1; $i <= $start_day;$i++) $dates[1][$i] = " ";

	$row = 1;
	$col = $start_day+1;
	$num = 1;
	while($num<=31)	{
	    if ($num > $no_days_in_month) break;
		else {
		    $dates[$row][$col] = $num;
			if (($col + 1) > 7)	{
			    $row++;
				$col = 1;
			}
			else  $col++;
			
		    $num++;
		}
	}
	
	$mon_num = date("n",$first_day);
	$temp_yr = $next_yr = $prev_yr = $year;

	$prev = $mon_num - 1;
	if ($prev<10) $prev="0".$prev;
	$next = $mon_num + 1;
	if ($next<10) $next="0".$next;		

	//If January is currently displayed, month previous is December of previous year
	if ($mon_num == 1){
	    $prev_yr = $year - 1;
		$prev = 12;
	}

	//If December is currently displayed, month next is January of next year
	if ($mon_num == 12)	{
	    $next_yr = $year + 1;
		$next = 1;
	}

		 
		
	echo'
			<table width="100%" cellspacing="1" cellpadding="2" bgcolor="#DCDCDC">
				<tr>
					
					<td class="title" align="center" colspan="2">'.date("F",$first_day).' '.$temp_yr.'</td>
					
				</tr>
				<tr>
					<td colspan="7" bgcolor="'.PAGEBG.'"></td>
				</tr>
				<tr>
					<td bgcolor="'.BGCAT.'" width="16%" align="center">Sun</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Mon</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Tue</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Wed</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Thu</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Fri</td>
					<td bgcolor="'.BGCAT.'" width="14%" align="center">Sat</td>
				</tr>
				<tr>
					<td colspan="7" bgcolor="'.BG_1.'"></td>
				</tr>';

	$end = ($start_day > 4)? 6:5;
	for ($row=1;$row<=$end;$row++) {
	    for ($col=1;$col<=7;$col++) {
		    if ($dates[$row][$col] == "") $dates[$row][$col] = " ";
			if (!strcmp($dates[$row][$col]," ")) $count++;
			
			$t = $dates[$row][$col];
			if($t < 10) $tag = "0$t";
			else $tag = $t;

			// DATENBANK ABRUF
			$start_date = mktime(0, 0, 0, $mon, $t, $year);
			$end_date = mktime(23, 59, 59, $mon, $t, $year);
			unset($termin);
			
			$ergebnis = safe_query("SELECT * FROM ".PREFIX."upcoming");
			$anz = mysql_num_rows($ergebnis);
			if($anz) {
			    while ($ds = mysql_fetch_array($ergebnis)) {
				    if($ds[type]=="d") {
					    if(($start_date<=$ds[date] && $end_date>=$ds[date]) || ($start_date>=$ds[date] && $end_date<=$ds[enddate]) || ($start_date<=$ds[enddate] && $end_date>=$ds[enddate])) 
						    $termin.='<a href="index.php?site=calendar&tag='.$t.'&month='.$mon.'&year='.$year.'"><br></a>';
							
					}	
					else {
					    if($ds[date]>=$start_date && $ds[date]<=$end_date) {
						    $begin = date("H:i", $ds[date]);
							$termin.='<a href="index.php?site=calendar&tag='.$t.'&month='.$mon.'&year='.$year.'">'.$begin.' '.$ds[opptag].'</a>';
							
						}
					}	
				}
			}
			else $termin="";
		    // DB ABRUF ENDE

			//If date is today, highlight it
			if (($t == date("j")) && ($mon == date("n")) && ($year == date("Y"))) echo'<td height="20" valign="top" bgcolor="'.BG_4.'"><b>'.$t.'</b><br>'.$termin.'</td>';
            //  If the date is absent ie after 31, print space
			else {
				if($t==' ') echo'<td height="20" valign="top" bgcolor="'.BG_1.'">&nbsp;</td>';
				else echo'<td height="20" valign="top" bgcolor="'.BG_2.'">'.$t.'<br>'.$termin.'</td>';
			}
						
		}
		if (($row + 1) != ($end+1)) echo'</tr><tr>';
		else echo'</tr>';
	}
	echo'<tr><td colspan="7" bgcolor="'.PAGEBG.'"></td></tr>
	     <tr>
	       <td bgcolor="'.BGCAT.'" colspan="7" align="center"><a class="category" href="index.php?site=calendar"><b>show today\'s events</b></a></td>
		 </tr>
		 </table><br><br>';
}
 
Püh das wird mir nun um diese Uhrzeit zuviel :) Aber ich hau nun mal meine Kalender Klasse hier rein.

PHP:
<?php
class Calendar
    {
    private $actuallyDayColor;
    private $markedDayColor;
    private $month;
    private $year;
    private $actuallyDay;
    
    private $calendarHeader = '';
    private $calendarBody   = '';
    private $calendarFooter = '';
    private $fullCalendar   = '';
        
    private $markDay = array();
    private $fontColor;
    private $markDayColor = '#CC99AA';
        
    private $JSSupport;
    private $calendarID;
                    
    /*======================================================- construct -======================================================*/
    public function __construct($month = NULL,$year = NULL,$javaScriptSupport = FALSE,$calendarID = '')
        {
            if(isset($month) && $month <= 12 && is_integer($month))
                { // Monat überprüfen
                    ($month < 10)?$this->month = "0".$month:$this->month = $month;
                }else
                    { //gegebenfalls setzen wir den Monat auf den aktuellen Monat fest
                        $this->month = strftime("%m");
                    }
                        
                if(isset($year) && is_integer($year))
                    { // Jahr überprüfen 
                        $this->year = $year;
                    }else    
                        { //gegegenfalls setzen wir das Jahr auf das aktuelle Jahr 
                            $this->year = strftime("%Y");
                        }
            //aktuellen Tag festlegen
            $this->setActuallyDay();
                        
            if($javaScriptSupport)
                {
                    $this->JSSupport = 1;
                    $this->calendarID = $calendarID;
                }
                else
                    {
                        $this->JSSupport = 0;
                        $this->calendarID = '';
                        $this->calendarJSProperties = '';
                    }
        }
            
    /*======================================================- aktuellen Tag bestimmen -======================================================*/
    private function setActuallyDay()
        {
            $this->actuallyDay = strftime( "%d.%m.%Y",time() ) ;
        }
                
    /*==============================================- Tage die markiert werden sollen festlegen -===============================================*/
    public function setMarkedDays($date){
        if(isset($date) && is_array($date)){
        //übergebenes Datum ist ein Array
            for($i=0;$i<count($date);$i++){
            // durchlaufe das Array solange wie es nicht leer ist
            
                if(preg_match("/\-/",current($date),$matches)){
                // Wurde ein Trennzeichen - gefunden -> Tagesgruppe
                    $dates = explode("-",current($date));
                    
                    if(is_array($dates)  && count($dates) > 0 ){ 
                    //Tagesgruppen wurden übergeben
                                         
                        if($this->dateCheck($dates[0]) && $this->dateCheck($dates[1])){
                            // Überprüfen der beiden Daten ob sie gültig sind
                            $this->markDay[] = $dates[0];
                            $this->dayGroupArray[] = $dates[0];
                            $startDate = explode(".",$dates[0]);
                            $paintDay = $startDate[0];
                                                
                            do{
                            // Alle Tage makieren die zwischen den beiden Tagen liegen
                            
                                $newDay = date((++$paintDay).".".$startDate[1].".".$startDate[2]);
                                // solange der neue Tag nicht dem Endtag der tagesgruppe ist ins Array stopfen
                                if($newDay != $dates[1]){
                                    $this->markDay[] = $newDay;
                                    $this->dayGroupArray[] = $newDay;
                                                        }
                            }while($newDay != $dates[1]);
                                                                        
                            $this->markDay[] = $dates[1];
                            $this->dayGroupArray[] = $newDay;
                        }
                    }
                }else{
                    // keine Tagesgruppe übergeben aber ein Array von Werten
                    $this->markDay[] = current($date);
                }
                next($date);
            }
        }else if($this->dateCheck($date)){
        // normales Datum wurde übergeben
            $this->markDay[] = $date;
        }
    } // Methode setMarkedDays ende
        
    /*========================================================= URL festlegen -============================================================*/
    public function setURL($url,$date)
        {
            if(is_array($date) && count($date) > 0)
                {
                    for($i = 0; $i < count($date);$i++)
                    {
                       $dateValues = explode("-",current($date));
                       if(count($dateValues) > 1)
                        { // Tagesgruppe gefunden
                            $link = $url;
                            $this->markedLinks[$dateValues[0]] = $link;
                            $this->setMarkedDays($date);
                        }else
                            {
                                $link = $url;
                                $this->markedLinks[current($date)] = $link;
                                $this->setMarkedDays($date);
                            }
                        next($date);
                    }                
                }else if(isset($date) && is_array($date) && $this->dateCheck(current($date)))
                    {
                        $link = $url.'?show=news&date='.$date;
                        $this->markedLinks[$date] = $link; 
                        $this->setMarkedDays($date);
                    }
        }
            
    /*=============================================- Prüfen ob der Tag coleriert werden soll -==================================================*/
    private function markDays($dayWasDrawn)
    {
        $dayToColor = date($dayWasDrawn.".".$this->month.".".$this->year);
        if(in_array($dayToColor,$this->markDay))
        {
            if(isset($this->dayGroupArray) && is_array($this->dayGroupArray) && in_array($dayToColor,$this->dayGroupArray))
            {
                 $this->markDayColor = '#CCEECC';
            }else
                {
                    $this->markDayColor = '#CC99AA';
                }
                                        
            return $this->markDayColor;
        }
                            
        if(date("d.m.Y",mktime(0,0,0,$this->month,$dayWasDrawn,$this->year)) == $this->actuallyDay)
        {
            return '#CCCCEE';
        }else
            {
            return 'transparent';
            }
    }
                
    /*=====================================================- Tag als Link festlegen -========================================================*/
    public function markDayAsLink($dayWasDrawn)
    {
        $dayAsLink = date($dayWasDrawn.".".$this->month.".".$this->year);
        if(isset($this->markedLinks[$dayAsLink]))
        { // Ein Tag wurde als Link gegeben
            return '<a href="'.$this->markedLinks[$dayAsLink].'">'.$dayWasDrawn.'</a>';
        }else
            { // keine URL angegeben normalen Tag zurückgeben
            return $dayWasDrawn;
            }                        
    }
                
    /*=============================================- das Datum das übergeben wurde prüfenl -=================================================*/
    private function dateCheck($DateToCheck)
    {
        $datePattern = "/^(?:[0-9]{1,2}(\.|-)){2}[0-9]{2,4}$/";
        if(preg_match($datePattern,$DateToCheck,$matches))
        {
            try
            {
                $dateCheck = explode($matches[1], $matches[0]);
                if(count($dateCheck) < 2)
                { // auf trennueichen prüfen
                    throw new Exception('ungültiges Datumsformat angegeben');
                }else
                    {// vom Format her gültig doch stimmen die Tage
                    $day     = $dateCheck[0];
                    $month   = $dateCheck[1];
                                                
                    //monat überprüfen
                    if($month > 12)
                        throw new Exception('Monat ist zu gross');
                    //Tag überprüfen
                    if($day > 31)
                        throw new Exception('Tag ist zu gross');
                    
                    return TRUE;
                   }
            }catch(Exception $e)
                {  // fehlermeldung auswerfen
                echo $e->getMessage();
                return FALSE;
                }
        }
       }
            
     /*=============================================- Kalender Kopf setzen -=================================================*/            
     private function __setCalendarHeader()
    {
        $weekDayArray = array("Mo","Di","Mi","Do","Fr","Sa","So");
        for($i=0;$i<7;$i++)
        {
            $this->calendarHeader .= '<td bgcolor="">'.$weekDayArray[$i].'</td>';
        }
    }
                
    /**
       * zeichnen des Kalender körpers aller Tage
       * @access private
            */
   private function __setCalendarBody()
    {
        //datum auf den ersten des Monats setzen
        $firstDay = strftime("%w",mktime(0,0,0,$this->month,01,$this->year));
        if($firstDay == 0)
        {
            $firstDay = 7;
            }
                        
        $x = 1;
        for($i = 1;$i < (date("t",mktime(0,0,0,$this->month,1,$this->year))+$firstDay);$i++)
            {
                //JavaScript Support prüfen
                if($this->JSSupport)
                    $this->calendarJSProperties = "id='".$this->calendarID.$x."'"
                                                    ." onclick='supportJavaScript(".$this->JSSupport.",".$x.",".$this->month.",".$this->year.")'";
                else
                    $this->calendarJSProrperties = '';
                    
                if($i < $firstDay)//solange freie Felder zeichen wie der erste des Monats nicht erreicht ist
                    {
                        $this->calendarBody .= "<td></td>";
                    }else if($i % 7 == 0)// Tag gleich Sonntag
                        {
                                         
                            if($x < 10)
                            {
                                $this->calendarBody .= "<td style='background:".$this->markDays('0'.$x)."' ".$this->calendarJSProperties.">";
                                $this->calendarBody .= $this->markDayAsLink('0'.$x)."</td>";
                            }
                            else{
                                $this->calendarBody .= "<td style='background:".$this->markDays($x)."' ".$this->calendarJSProperties.">";
                                $this->calendarBody .= $this->markDayAsLink($x)."</td>";
                            }
                                                
                            $this->calendarBody .= "</tr><tr>";
                                                    
                            $x++;
                        }else
                            {// normalen Tag einzeichen
                                
                                if($x < 10)
                                {
                                $this->calendarBody .= "<td ".$this->calendarJSProperties." style='background:".$this->markDays('0'.$x).";'
                                                     align='right' >";
                                    $this->calendarBody .= $this->markDayAsLink('0'.$x)."</td>";
                                }else
                                {
                                    $this->calendarBody .= "<td ".$this->calendarJSProperties." style='background:".$this->markDays($x).";'
                                                     align='right' >";
                                    $this->calendarBody .= $this->markDayAsLink($x)."</td>";
                                    
                                }
                                $x++;
                            }
            }
    }
                
    /** 
         * zeichnen des Kalender footers 
         * @access private
         */
    private function __setCalendarFooter()
    {
        $this->calendarFooter = '<td></td><td colspan="5" align="center">'.strftime("%B",mktime(0,0,0,$this->month)).'</td><td></td>';
    }

    /**
         * zeichnen des vollen Kalenders
         * Kalender Header , Body und Footer werden hier zusammengefügt
         * @access private
         */
     private function drawFullCalendar()
    {
        $this->__setCalendarHeader();
        $this->__setCalendarBody();
        $this->__setCalendarFooter();
           $this->fullCalendar = '<table border=0 style="height:100px;width:100px;"><tr>'.
                   $this->calendarHeader.'</tr><tr>'.
                   $this->calendarBody.
                   '<tr>'.$this->calendarFooter.'</tr></table>';
    }
                
      /**
         * Ausgabe des gesammten Kalenders
         * @access public
         * @return String den Kalender in Form einer Tabelle
         */
     public function getFullCalendar()
    {
        $this->drawFullCalendar();
        return $this->fullCalendar;
    }    
} // CLASS END
?>

Hat zumal auch gleich JavaScript unterstützung sofern man das JS hier dann nimmt.

HTML:
    var DayArray    = new Array();
    var DayGroup    = new Array();
    var HolderArray = new Array();
    
    var month;
    var year;
    
    var x = 0;  // DayGroup Element Zähler
    
    /*==========================================- Start des Übels -==============================================*/
    function supportJavaScript(supported,id,month,year)
        {
            var HolderArray = new Array();
            this.month = month;
            this.year  = year;
            
            if(supported)
                {
                    try
                        {
                            if(!in_array(id,this.DayArray) )
                                { //prüfen ob das Element schon im Array enthalten ist
                                    // aktuelle ID dem Array hinzufügen
                                    DayArray[DayArray.length] = id;
                                    document.getElementById('PlayTime'+id).style.background = '#FFCCCC';
                                }else
                                    { // Array Element ist bereits enthalten Wert aus dem Array wieder rausholen
                                        this.DayArray = deleteArrayValue(id,DayArray);
                                        if(DayGroup.length > 0)
                                            { 
                                                this.DayGroup = deleteArrayValue(id,DayGroup);
                                            }

                                        if(DayArray.length == 1 && DayArray[0] == null)
                                            { // Warum das Array immer einen Wert hat ist mir noch unklar , aber wenn der erste Wert nun null ist dann entfernen wir diesen auch noch
                                                do
                                                  {
                                                    DayArray.shift();
                                                    document.getElementById('DayViewer').value = '';
                                                  }while(DayArray.length > 0);
                                            }
                                        document.getElementById('PlayTime'+id).style.background = 'transparent'
                                    }
                                                                
                            if(this.DayArray.length > 1)
                                { // sind 2 oder mehr Tage im Array gespeichert inzwischen
                                    DayArray.sort(Numsort);
                                    var x = 0;
                                    do
                                      {
                                        if(DayArray[0]+x == DayArray[x])
                                            {// ist das erste Element + x gleich dem nächsten Element das Folgt
                                                
                                                if(!in_array(DayArray[x],DayGroup))
                                                    DayGroup[DayGroup.length] = DayArray[x]
                                            }else
                                                { // lücke gefunden Array leeren
                                                    do
                                                        { //DayGroup Array löschen
                                                            DayGroup.shift();
                                                        }while(DayGroup.length > 0);
                                                        
                                                    do
                                                        { // DayArray Array löschen dabei Felder wieder demakieren
                                                            killedElement = DayArray.shift();
                                                            document.getElementById('PlayTime'+killedElement).style.background = 'transparent';
                                                        }while(DayArray.length > 0);
                                                        
                                                    // in das Day Array das neueste Element eintragen das angeklickt wurde
                                                    DayArray[DayArray.length] = id;
                                                    document.getElementById('PlayTime'+id).style.background = '#FFCCCC';
                                                }
                                        x++;
                                      }while(x < DayArray.length);
                                      
                                      showDay();
                                }else if(this.DayArray.length == 1)
                                    {
                                        if(this.DayGroup.length > 0) // ist das DayGroup Array gesetzt
                                            {
                                                do
                                                    { //DayGroup Array löschen
                                                        DayGroup.shift();
                                                    }while(DayGroup.length != 0);
                                            }
                                        showDay();
                                    }
                        }catch (e)
                            {
                                showException(e);
                            }
                }
        }
    
    /*=========================================- Array Wert löschen -===========================================*/
    function deleteArrayValue(search,SourceArray)
        {
            var x = 0;
            SourceArray.sort();
        
            // Elemente vom Array in den Platzhalter übertragen 
            // wurde das Suchelement gefunden wird es nicht in den Platzhalter übertragen
            // die Elemente werden im SourceArray gelöscht 
            do
                {
                    if(search != SourceArray[0])
                        { // Element entfernen und in das neue Array einspeissen
                            killedElement = SourceArray.shift();
                            HolderArray[x] = killedElement;
                            x++;                            
                        }else
                            { //gesuchtes Element gefunden
                                SourceArray.shift();
                            }
                }while(SourceArray.length != 0);
            
            // Elemente vom Platzhalter wieder in das alte Array übertragen , Elemente aus dem Platzhalter dabei löschen
            i = 0;
            do
                {
                    SourceArray[i] = HolderArray[0];
                    HolderArray.shift();
                    i++;
                }while(HolderArray.length != 0);
                
            return SourceArray;
        }
    
    /*========================================- Array Inahlt durchsuchen -=======================================*/
    function in_array(search,Array)
        {
            found = 0
        
            for(i=0;i < Array.length;i++)
                {
                    if(search == Array[i])
                        {
                            found = 1;
                            break;
                        }
                }
            return found;
        }

    /*=================================- Aktuellen Tag oder Tagesgruppe anzeigen  -================================*/
    function showDay()
        {
            if(this.month < 10)
                this.month = '0'+this.month
                
            //DayGroup Array sortieren so das das kleinste Element immer vorne ist 
            DayGroup.sort(Numsort);            
        
            if(DayGroup.length > 1)
                { // es handelt sich um eine Tagesgruppe
                    var DayField = document.getElementById('DayViewer');
                    DayField.value = DayGroup[0]+'.'+this.month+'.'+this.year+'-'+DayGroup[(DayGroup.length-1)]+'.'+this.month+'.'+this.year;
                }else if(DayArray.length == 1) 
                    { // um einen einzelenen Tag
                        document.getElementById('DayViewer').value = DayArray[0]+'.'+this.month+'.'+this.year;
                    }
        }
        
    function Numsort(a,b)
        {
            return a-b;
        }
        
    /*=========================================- Fehler auswerfen -=============================================*/
    function showException(Message)
        {
            ExceptionCatch = open('','error','width=400,height=400');
            with(ExceptionCatch)
                {
                    document.writeln(Message);
                    document.close();
                }
        }

Damit kannst Du dann mit der Maus Tage im Kalender makieren und sie ausgeben lassen in einen Textfeld zum Beispiel ,wobei das muss das Feld die ID " DayViewer " haben.

Beispiele für den Kalender nun kann ich nun morgen gern noch online stellen dann.

Aber der Methode "setMarkedDays " kann man ein Array von Daten übergeben und er zeichnet diese dann einfach ein. Alle ein. Also wäre das eigentlich genau das richtige für Dich an dieser Stelle :)
 
Zuletzt bearbeitet:
Zurück