Schriftgröße ändern
Klein | Normal | Groß
Seite Drucken

Progstore.de Kalender

Folgender Kalender wurde in PHP geschrieben und wird über eine einfache Funktion erzeugt:
mkKalender( [Jahreszahl(int)],[Monat(int)];

Die Parameter sind optional. Lässt man diese weg wird der Kalender für das komplette aktuelle Jahr erstellt.

Wie immer währe Feedback großartig, und ein Hinweiß von wem der Kalender kommt als kleine Fußnote währe auch wünschenswert.
Seid bitte so fair und gebt weiter woher ihr eure Codes bezieht.

Zurück

function mkKalender($Jahr = "no", $Monat = "no"){
	if($Jahr == "no"){
		$Jahr = date("Y", time());
	}
	if($Monat=="no"){
		echo "<table summary=\"Kalender\" class=\"kalender\">\n	<tr>\n";
		echo "		<th colspan=\"7\">".$Jahr."</th>\n	</tr>\n";
		for($i = 1; $i <= 12; $i++){
			echo "	<tr>\n		<td colspan=\"7\" class=\"monat\">".$Bezeichnungen["Monat"][$i]."</td>\n";
			echo "	</tr>\n";
			echo "	<tr>\n";
			for($k = 1; $k<=7; $k++){
				echo "		<td class=\"wochentage\">".$Bezeichnungen["Wochentag"][$k]."</td>\n";
			}
			echo "	</tr>\n";
			$Zeilenpos = Wochentag(1, $i, $Jahr);
			for($k=1; $k<$Zeilenpos; $k++){
				if($k == 1){
					echo "	<tr>\n";
				}
				echo "		<td class=\"prev_month\"> </td>\n";
			}
			$Tage = Monatstage($i, $Jahr);
			for($j = 1; $j <= $Tage; $j++){
				if($Zeilenpos == 1){
					echo "	<tr>\n";
				}
				echo "		<td>".$j."</td>\n";
				$Zeilenpos++;
				if($Zeilenpos>7){
					echo "	</tr>\n";
					$Zeilenpos=1;
				}
			}
			if($Zeilenpos != 1){
				for($k=$Zeilenpos; $k<=7; $k++){
					echo "		<td class=\"next_month\"> </td>\n";
				}
				echo "	</tr>\n";
			}
		}
		echo "</table>";
	}else{
		$i = $Monat;
		echo "<table summary=\"Kalender\" class=\"kalender\">\n	<tr>\n";
		echo "		<th colspan=\"7\">".$Bezeichnungen["Monat"][$i]." - ".$Jahr."</th>\n";
		echo "	</tr>\n";
		echo "	<tr>\n";
		for($k = 1; $k<=7; $k++){
			echo "		<td class=\"wochentage\">".$Bezeichnungen["Wochentag"][$k]."</td>\n";
		}
		echo "	</tr>\n";
		$Zeilenpos = Wochentag(1, $i, $Jahr);
		for($k=1; $k<$Zeilenpos; $k++){
			if($k == 1){
				echo "	<tr>\n";
			}
			echo "		<td class=\"prev_month\"> </td>\n";
		}
		$Tage = Monatstage($i, $Jahr);
		for($j = 1; $j <= $Tage; $j++){
			if($Zeilenpos == 1){
				echo "	<tr>\n";
			}
			echo "		<td>".$j."</td>\n";
			$Zeilenpos++;
			if($Zeilenpos>7){
				echo "	</tr>\n";
				$Zeilenpos=1;
			}
		}
		if($Zeilenpos != 1){
			for($k=$Zeilenpos; $k<=7; $k++){
				echo "		<td class=\"next_month\"> </td>\n";
			}
			echo "	</tr>\n";
		}
		echo "</table>";
	}
}

function Wochentag($Tag, $Monat, $Jahr, $Typ="zahl"){
	if($Typ=="zahl"){
		$date = date("w", mktime(0, 0, 0, $Monat, $Tag, $Jahr));
		if($date==0){
			$date=7;
		}
	}else if($Typ == "text_kurz"){
		$date = date("D", mktime(0, 0, 0, $Monat, $Tag, $Jahr));
	}else if($Typ == "text_lang"){
		$date = date("l", mktime(0, 0, 0, $Monat, $Tag, $Jahr));
	}
	return $date;
}

function Monatstage($Monat, $Jahr){
	$schaltjahr = date("t", mktime(0, 0, 0, $Monat, 1, $Jahr));
	return $schaltjahr;
}

Top

Die Bezeichnungen werden in einem Array gespeichert welches in der Funktion zur Verfügung stehen muss.
Wie ihr das dort anlegen lasst überlasse ich euch ;-)

$Bezeichnungen = array();
$Bezeichnungen["Monat"] = array();
$Bezeichnungen["Monat"][1] = "Januar";
$Bezeichnungen["Monat"][2] = "Febuar";
$Bezeichnungen["Monat"][3] = "März";
$Bezeichnungen["Monat"][4] = "April";
$Bezeichnungen["Monat"][5] = "Mai";
$Bezeichnungen["Monat"][6] = "Juni";
$Bezeichnungen["Monat"][7] = "Juli";
$Bezeichnungen["Monat"][8] = "August";
$Bezeichnungen["Monat"][9] = "September";
$Bezeichnungen["Monat"][10] = "Oktober";
$Bezeichnungen["Monat"][11] = "November";
$Bezeichnungen["Monat"][12] = "Dezember";
$Bezeichnungen["Wochentag"] = array();
$Bezeichnungen["Wochentag"][1] = "Monatag";
$Bezeichnungen["Wochentag"][2] = "Dienstag";
$Bezeichnungen["Wochentag"][3] = "Mittwoch";
$Bezeichnungen["Wochentag"][4] = "Donnerstag";
$Bezeichnungen["Wochentag"][5] = "Freitag";
$Bezeichnungen["Wochentag"][6] = "Samstag";
$Bezeichnungen["Wochentag"][7] = "Sonntag";

Top

Formatiert wird das ganze bei mir über CSS. Wie genau seht ihr hier:

table.kalender th{
	text-align: center;
}
table.kalender td{
	border:solid 1px;
	font-weight:bold
}
table.kalender td.monat{
	background-color:#999999;
	color:#DDDDDD;
	text-align: center;
}
table.kalender td.wochentage{
	background-color:#BBBBBB;
	text-align: center;
	width: 110px;
}
table.kalender td.prev_month{
	background-color:#CCCCCC;
}
table.kalender td.next_month{
	background-color:#CCCCCC;
}

Top

Top

Impressum / Kontakt | Disclaimer
CSS ist valide!
Valid XHTML 1.0 Transitional
This site runs best on MOZILLA FIREFOX.
Powered by PPS (Progstore Parse Script)    |     by Tobias Beßenreither // Progstore.de