[php] Kalender (Termine verlinken und ausgeben)

quicksilver

Lt. Junior Grade
Registriert
Jan. 2004
Beiträge
363
Hi ich habe für meine Homepage ein kleinen Kalender erstellt. Er funktioniert auch soweit ganz gut. Ich habe nun leider nur das Problem das ich die Termine aus einer Datenbank im Kalender verlinken will so das man wenn man auf den Termin klickt der Termin angezeigt wird. Ich habe nur leider das Problem das irgendwie immer nur der Timestamp des letztens Termins angezeigt wird.

Hier die Datenbank:
PHP:
CREATE TABLE `kalender` (
  `id` int(20) NOT NULL auto_increment,
  `datum` text NOT NULL,
  `erstellerid` int(20) NOT NULL default '0',
  `titel` text NOT NULL,
  `content` text NOT NULL,
  `intern_extern` char(2) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

-- 
-- Daten für Tabelle `kalender`
-- 

INSERT INTO `kalender` (`id`, `datum`, `erstellerid`, `titel`, `content`, `intern_extern`) VALUES (1, '1141246610', 4, 'test', 'test', ''),
(2, '1143125578', 5, 'test 2', 'blaaaaaa', '1');

Hier die Funktion:
PHP:
function Kalender()

{
global $navigation, $kalender;
// Auslesen des Monats
$getdate=$_GET['getdate'];
// Aktualisieren der Daten
if(!empty($getdate)) 
	{ 
		$month=date("m",$getdate); 
		$year=date("Y",$getdate);
	} 
else 
	{ 
		$month=date("m"); 
		$year=date("Y"); 
	} 

// Monate in Deutsch umschreiben

$MonatsName = array ("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
// Blätterfunktion
if(!empty($getdate)) 
	{ 
		$year=date("Y",$getdate); 
		$dayf=date("F",$getdate); 
		$dayf = $MonatsName[date(n,$getdate)-1];
	} 
else 
	{ 
		$year=date("Y"); 
		$dayf=date("F"); 
		$dayf = $MonatsName[date(n)-1];
	}

$nextmonth=$month + 1; $lastmonth=$month -1; 
$nextlink=gmmktime(0,0,0,$nextmonth,1,$year);
$lastlink=gmmktime(0,0,0,$lastmonth,1,$year);

// Tabelle erstellen
$kalender .="\n\t\t\t\t<table cellspacing=\"1\">\n\t\t\t\t<tr class=\"head\">\n";
$kalender .="\t\t\t\t <td><a href=\"index.php?open=".$_GET["open"]."&amp;view=".$_GET["view"]."&amp;getdate=$lastlink\">«</a></td>\n";
$kalender .="\t\t\t\t <td class=\"year\" colspan=\"5\">$dayf $year</td>\n"; 
$kalender .="\t\t\t\t <td><a href=\"index.php?open=".$_GET["open"]."&amp;view=".$_GET["view"]."&amp;getdate=$nextlink\">»</a></td>\n\t\t\t\t</tr>\n\n";

// Wochentage
$kalender .="\t\t\t\t<tr class=\"days\">\n";
$kalender .="\t\t\t\t <td>Mo</td>\n";
$kalender .="\t\t\t\t <td>Di</td>\n";
$kalender .="\t\t\t\t <td>Mi</td>\n";
$kalender .="\t\t\t\t <td>Do</td>\n";
$kalender .="\t\t\t\t <td>Fr</td>\n";
$kalender .="\t\t\t\t <td>Sa</td>\n";
$kalender .="\t\t\t\t <td>So</td>\n";
$kalender .="\t\t\t\t</tr>\n\n";
$kalender .="\t\t\t\t<tr>\n";

// Variablen setzen
$dc=0; 
$actual=1;
$rowc=7;

// Auslesen der Tage
$days=date("t", mktime(0,0,0,$month,1,$year));
$firstday=date("l", mktime(0,0,0,$month,1,$year));

if($firstday!="Monday") { 
	$dc++;
	if($firstday!="Tuesday") {
		$dc++;
		if($firstday!="Wednesday") {
			$dc++;
			if($firstday!="Thursday") {
				$dc++;
				if($firstday!="Friday") {
					$dc++;
					if($firstday!="Saturday") {
						$dc++;
					}
				}
			}
		}
	}
}

// Leere Felder im Kalender
if($dc!=0)
  { 
  $kalender .="\t\t\t\t <td colspan=\"$dc\"></td>\n"; 
  }

// Zeilenumbruch im Kalender
while ($actual<=$days) 
	{
		if($dc==7 OR $dc==14 OR $dc==21 OR $dc==28 OR $dc==35) 
			{ 
			$kalender .="\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n"; $rowc=$rowc + 7; 
			}

// Zeit auslesen
$tsday=mktime(0,0,0,$month,$actual,$year);
$tsday2=$tsday + 86399; 
$evc=0;

// Termine auslesen
$sql9="SELECT 
			id,
			datum 
				FROM 
				kalender 
					WHERE datum >= '$tsday'";
$eget=mysql_query($sql9);
while ($evt = mysql_fetch_object($eget))
{ 
$datum = $evt->datum;
if($evt->datum>=$tsday AND $evt->datum<=$tsday2) 
{ $evc++; } 
}

// Hervorhebungen
if ($actual==date("d") AND $month==date("m") AND $year==date("Y")) 
		{ 
		 $mkpd="	\t\t\t <td class=\"heute\" title=\"Heute\">"; 
		}
	else 
		{ 
			if($evc!=0) 
				{ 
				 $mkpd="\t\t\t\t <td class=\"termin\">"; 
				}
				else 
				{ 
				 $mkpd="\t\t\t\t <td>"; 
				} 	
}

if ($evc!=0) 
	{
	 $kalender .=" $mkpd <a href=\"index.php?open=kalender&amp;view=termin&amp;getdate=$datum\">$actual</a></td>"; 
	}

if($evc==0) 
	{ 
	 $kalender .="".$mkpd."".$actual."</td>\n"; 
	} 

$actual++; 
$dc++; 
} 

if($dc!=$rowc) 
	{ 
		$csp=$rowc - $dc; 
		$kalender .="\t\t\t\t <td colspan=\"$csp\"></td>\n\t\t\t\t</tr>\n"; 
	} 

$kalender .="\t\t\t\t</table>\n";
}

Ich bin echt am verzweifeln weil ich den Fehler nicht finde. Wäre super wenn mir da wer helfen könnte!

Vielen Dank !
 
Zuletzt bearbeitet:
Keine Ahnung, aber du kannst deinen source noch ein wenig übersichtlicher machen, zB

PHP:
if($firstday!="Monday") { 
    $dc++;
    if($firstday!="Tuesday") {
        $dc++;
        if($firstday!="Wednesday") {
            $dc++;
            if($firstday!="Thursday") {
                $dc++;
                if($firstday!="Friday") {
                    $dc++;
                    if($firstday!="Saturday") {
                        $dc++;
                    }
                }
            }
        }
    }
}
Durch
PHP:
switch($firstday)
{
 case "Monday":
   dc = 1;
   break;
 case "Tuesday":
   dc = 2;
   break;
 ...
 default:
   ...
}
 
Zurück
Oben