Alle unsere Tipps (Home)
Übersicht Buch- und Hobby-Tipps


PHP-Tipps für kirchliche Feiertage und Funktionen in Kirchenhomepages

Wer Homepages für Kirchengemeinden baut, kann ein paar spezielle PHP-Funktionen gut gebrauchen: Alle von mir gesammelten PHP-Informationen finden Sie in der Seite PHP-Tipps. Dort finden Sie auch Informationen zu PHP-Büchern und PHP-Links.
In hier von Ihnen berachteten Seite sind die besonders für Kirchengemeinden aber auch Vereine und andere Veranstalter interessanten PHP-Funktionen beschrieben.

Inhalt


zum Seitenanfang


Datum für kirchliche und andere bewegliche Feiertage berechnen

Außer den PHP-Funktionen time(), date() und mktime() braucht man gelegentlich weiteres KnowHow. Hier ein paar Anregungen:

<?php $vorgestern = mktime(0, 0, 0, date("m"), date("d")-2, date("Y")); //heute - 2 $diesesjahr = date("Y"); //dieses Jahr (4-stellig) $ostern = easter_date( date("Y") ); //Ostern dieses Jahr (als Timestamp) $ostermonat = date("n" , $ostern ); //der Monat, in dem dieses Ostern liegt $ostertag = date("j" , $ostern ); //der Tag, an dem Ostern liegt //von Ostern abhängige Daten und Feiertage $septuagesimae = date("j.n.y" , $ostern - 70 * 86400 ); //Septuagesimae $rosenmontag = date("j.n.y" , $ostern - 48 * 86400 ); //Rosenmontag $aschermittwoch = date("j.n.y" , $ostern - 46 * 86400 ); //Aschermittwoch $gruendonnerstag = date("j.n." , $ostern - 3 * 86400 ); //Gründonnerstag $ostermontag = date("j.n." , $ostern + 1 * 86400 ); //Ostermontag $himmelfahrt = date("j.n." , $ostern + 40 * 86400 ); //Himmelfahrt $pfingsten = date("j.n." , $ostern + 49 * 86400 ); //Pfingstsonntag $pfingstmontag = date("j.n." , $ostern + 50 * 86400 ); //Pfingstmontag $frohnleichnam = date("j.n." , $ostern + 60 * 86400 ); //Fronleichnam //letzter Februartag in diesem Jahr $letzter_feb = date("j.n.y",mktime(0,0,0, 3,0,$diesesjahr) ); //Muttertag (= zweiter Sonntag im Mai), dieses Jahr: 14.05.2017 //Die Formel geht vom spätestmöglichen Termin (14.5.) aus //w Wochentag: "0" (Sonntag) bis "6" (Samstag) $aprilende = mktime(0,0,0,5,0,$diesesjahr); //letzter Apriltag $muttertag = mktime(0,0,0,5,(14-date('w',$aprilende)),$diesesjahr); $muttertag = date('d.m.Y',$muttertag ); //Adventssonntage berechnen $heiligabend = mktime(0,0,0,12,24,$diesesjahr); //4. Advent, dieses Jahr: 24.12.2017 //Die Formel geht vom spätestmöglichen Termin (24.12.) aus $Advent4 = mktime(0,0,0,12,(24-date('w',$heiligabend)),$diesesjahr); //1. Advent (= 3 Wochen vor dem 4. Advent), dieses Jahr: 03.12.2017 $Advent1 = mktime(0,0,0,12,(24-21-date('w',$heiligabend)),$diesesjahr); //Buß- und Bet-Tag, dieses Jahr: 22.11.2017 $BuBTag = mktime(0,0,0,12,(24-32-date('w',$heiligabend)),$diesesjahr); ?>

So etwas kann man dann mit kurzen PHP-Schnipseln in einen HTML-Text einbauen.
Beispiel:

Ostern ist dieses Jahr am <?php echo date("j.n." , $ostern ); ?> und der erste Advent am <?php echo date('d.m.',$Advent1 ); ?>

Ergebnis: Ostern ist dieses Jahr am 16.4. und der erste Advent am 03.12.

Auf diese Weise erzeugt man Variablen, die man aber vermutlich nur einmalig und nicht in jeder neuen Homepageseite neu anlegen und pflegen will. Hier bietet sich an, diese Variablen in einer eigenen PHP Datei zu definieren und sie in den Homepageseiten, wo sie gebraucht werden, bequem mit dem include-Befehl einzufügen. zum Seitenanfang



Zeitraum von/bis

Manche PHP-Funktionen oder von ihnen eingeschlossene HTML-Abschnitte sollen nur zu bestimmten Zeiten ausgeführt werden. In den Klicktipps-Seiten macht Werbung für Blumen z. B. nur in der Zeit vor dem 14. Februar und vor Muttertag Sinn.
Hier hilft mir eine Funktion, die ermittelt, ob der heutige Tag in einem bestimmten Zeitraum liegt:

<?php function im_zeitraum($tag1, $monat1, $jahr1, $tag2, $monat2, $jahr2) { // Prüfen, ob der heutige Tag in einem bestimmten Zeitraum liegt. // Funktion veröffentlicht von www.KlickTipps.de return(time()>=date(mktime ( 0, 0, 0, $monat1, $tag1, $jahr1)) and time()<=date(mktime (24,59,59, $monat2, $tag2, $jahr2)) ); } // Anwendung: // Z. B. prüfen, ob das heutige Datum im Bereich // vom 1.2.2016 bis zum 14.2.2016 liegt: if ( im_zeitraum( 1, 2, 2016, 14, 2, 2016 ) ){ } // Alternative, bei der das Datum nur einmal eingegeben werden muss // (weniger Chancen für Fehler): function termin_anzeigen($tag, $monat, $jahr, $vorher, $nachher) { // Prüfen, ob die jetzige Zeit im Bereich // von (Datum - $vorher) bis (Datum + $nachher) liegt. // Funktion veröffentlicht von www.KlickTipps.de return(time()>=date(mktime( 0, 0, 0,$monat,$tag-$vorher,$jahr)) and time()<=date(mktime(24,59,59,$monat,$tag+$nachher,$jahr)) ); } // Anwendung: // Z. B. prüfen, ob das heutige Datum im Bereich // von 31 Tage vor dem 14.12.2016 bis 1 Tage danach liegt: if ( termin_anzeigen( 14, 2, 2016, 31, 1 ) ){ } // oder $diesesjahr = date("Y"); if ( termin_anzeigen( 14, 2, $diesesjahr, 31, 1 ) ){ } ?>

Man kann mit diesen Funktionen auch ganze HTML-Textbereiche auf Termin einblenden. Beispiel:

<?php $diesesjahr = date("Y"); if ( termin_anzeigen( 14, 2, $diesesjahr, 31, 0 ) ){ ?> Keine Lust auf Blumen? <br>Wie wäre es mit einem Amazon-Gutschein zum Valentinstag?! <br> .... <br> .... <br> .... <?php } ?>

Die HTML-Zeilen zwischen den beiden PHP-Schnipseln werden im Zeitraum vom 14.2. minus 31 Tage = 14.1. bis zum 14.2. des jeweiligen Jahres angezeigt. Davor und danach sind sie ausgeblendet.

Genauso könnte man dafür sorgen, dass in einer kirchlichen Homepage die Gottesdienste 31 Tage vorher eingeblendet und am Tag danach wieder ausgeblendet werden:

<?php if ( termin_anzeigen( 27, 1, 2016, 31, 1 ) ){ ?> <h4 class="gd>Sonntagsgottesdienst</h4> <br> Wann .... <br> Wo .... <br> Wer .... <?php } ?>

Außer durch Angabe eines direkten Datums lässt sich auch mit den obigen Variablen arbeiten. Falls z. B. etwas in der Adventszeit eingeblendet werden soll, könnte das so geschehen:

<?php if ( time() >= $Advent1 and time() <= $heiligabend ){ ?> In dieser Adventszeit wollen wir ..... <br> .... <br> .... <br> .... <?php } ?>

zum Seitenanfang



Deutsches Datum in PHP-Timestamp umwandeln

Wenn man rätselt, wie man ein deutsches Datumsformat des Formats d.m.yy bis dd.mm.yyyy in PHP-timestamp umwandeln könnte; so geht es:

<?php function date_de2php($datum) { // Deutsches Datum des Formats d.m.yy bis dd.mm.yyyy // in einen PHP-Timestamp umwandeln // Funktion veröffentlicht von www.KlickTipps.de $datum = str_replace( ' ', '', $datum ); //alle Blanks löschen $datum = str_replace( ',', '.', $datum ); //alle Kommas in Punkte if( count(explode('.', $datum)) != 3){ return (FALSE); }else { list($tag, $monat, $jahr) = explode(".", $datum); } if( $jahr >= 2100 ){ return (FALSE); } //zweistellige Jahreszahl abfangen //Jahre vor 2000 müssen 4-stellig angegeben werden if( $jahr < 100 ){ $jahr = $jahr + 2000; } return ( mktime(0,0,0, $monat, $tag, $jahr) ); } ?>

zum Seitenanfang



PHP-Timestamp in deutschen Wochentag umwandeln

Das funktioniert zum Beispiel so:

<?php function date_php2wochentag($zeitstempel) { // PHP-Timestamp in deutschen Wochentag umwandeln // Funktion veröffentlicht von www.KlickTipps.de $wochentage = array("Sonntag","Montag","Dienstag","Mittwoch", "Donnerstag","Freitag","Samstag"); return $wochentage[date("w", $zeitstempel )]; } ?>

Anwendung z. B. mitten in einem HTML-Text:

Heute ist <?php echo date_php2wochentag( time() ); ?>, der <?php echo date("j.n.Y"); ?>, und der nächste Sonntag ist am <?php echo date("j.n.Y", time()+(7-date("w"))*86400); ?>.

Ergebnis: Heute ist Dienstag, der 12.12.2017, und der nächste Sonntag ist am 17.12.2017.

Noch ein Beispiel:

Heilig-Abend fällt in <?php echo $diesesjahr; ?> auf einen <?php echo date_php2wochentag($heiligabend); ?>.

Ergebnis: Heilig-Abend fällt in 2017 auf einen Sonntag.
zum Seitenanfang



Adventskranz mit unterschiedlich vielen Kerzen

Auch ein Adventskranz mit passender Kerzenzahl je Adventswoche lässt sich realisieren:

<?php function adventskranz( $Default=0 , $CSS="" ) { // passenden Adventskranz anzeigen // bei $Default != 0 ganzjährige Anzeige // Funktion veröffentlicht von www.KlickTipps.de // optionaler Parameter: CSS für Bild, z. B. width:140px;height:140px; $CSS = trim( $CSS ); //Adventssonntage berechnen $diesesjahr = date("Y"); $heiligabend = mktime(0,0,0,12,24,$diesesjahr); $Advent4 = mktime(0,0,0,12,(24-date('w',$heiligabend)),$diesesjahr); $Advent3 = mktime(0,0,0,12,(24-7-date('w',$heiligabend)),$diesesjahr); $Advent2 = mktime(0,0,0,12,(24-14-date('w',$heiligabend)),$diesesjahr); $Advent1 = mktime(0,0,0,12,(24-21-date('w',$heiligabend)),$diesesjahr); //Montag vor dem 1. Advent $Advent0 = mktime(0,0,0,12,(24-27-date('w',$heiligabend)),$diesesjahr); $Path ="bildchen/advent/"; $Bild = ""; if( $Default != 0 ){$Bild = $Path . "Adventskranz0.gif";} if ( time() >= $Advent1 AND time() < $Advent2 ){ $Bild = $Path . "Adventskranz1.gif"; }elseif ( time() >= $Advent2 AND time() < $Advent3 ){ $Bild = $Path . "Adventskranz2.gif"; }elseif ( time() >= $Advent3 AND time() < $Advent4 ){ $Bild = $Path . "Adventskranz3.gif"; }elseif ( time() >= $Advent4 AND time() < mktime(0,0,0,12,27,$diesesjahr) ){ $Bild = $Path . "Adventskranz4.gif"; } $ausgabe = ""; if( $Bild != "" ){ $ausgabe = "<img src=\"" . $Bild . "\""; if ( $CSS!= "" ){ $ausgabe = $ausgabe . " style=\"" . $CSS . "\""; } $ausgabe = $ausgabe . "> \n"; } return ( $ausgabe ); } ?> <!-- So wird die Funktion z. B. über diesem Abschnitt im HTML genutzt (ganzjährige Anzeige, rechtsbündig): --> <?php echo adventskranz(1,"float:right;margin: 0px 0px 10px 10px;"); ?>

Ergänzung:
Der Kerzen-Cursor wurde mit einer entsprechenden .cur-Datei und CSS erzeugt: <div style="cursor:url('Kerze.cur'), auto;">.
Die Bilder der Adventskränze und den Kerzen-Cursor können Sie hier mit der Datei adventskraenze.zip herunterladen.
zum Seitenanfang




Spaß mit Ostereiern   ;-);-);-)

Die bisher vorgestellten Funktionen kann man nach Lust und Laune kombinieren. In diesem Fall werden sie benutzt, um in den Ostertagen ein paar zufällig ausgewählte Ostereier anzuzeigen.

<?php function ostereier( $anz_min=1 , $anz_max=5 , $groesse=100 ){ // Es erscheinen $anz_min bis $anz_max zufällig ausgewählte Ostereier. // Die Bildgröße kann in Prozent verändert werden. // Ohne Parametereingabe erscheinen 1 bis 5 Eier in normaler Größe. // Funktion veröffentlicht von www.KlickTipps.de if ( $anz_min <=0 ){ $anz_min = 1; } if ( $anz_max <=0 or $anz_max < $anz_min or $groesse<5){ return; } // Pfad, in dem die Bilder liegen $pfad = "bildchen/eggs/"; // die Dateinamen der Bilder $arr = array("egg1.gif", "egg2.gif", "egg3.gif"); // alt-Text $text = ";-)"; for ($i=0; $i < zufall($anz_min,$anz_max); $i++) { $bild = $pfad.$arr[zufall(0,count($arr)-1)]; echo bild_anzeigen($bild,$text,"padding-right:2px",$groesse); } } ?> <!-- So wird die Funktion z. B. über diesem Abschnitt in HTML-Umgebung genutzt (2 bis 5 Eier in 70% Größe): --> <?php ostereier( 2 , 5 , 70 ); echo " \n" ?> <!-- und so ist sie von Ostersamstag bis Mittwoch nach Ostern aktiv: --> <?php $ostern = easter_date( date("Y") ); $ostermonat = date("n" , $ostern ); $ostertag = date("j" , $ostern ); if ( termin_anzeigen($ostertag, $ostermonat, date("Y"), 1, 3) ){ ostereier( 2 , 5 , 70 ); echo " \n"; } ?>

Diese Funktion kann man natürlich auch für vieles Andere als 'nur' für Ostereier benutzen.

Ergänzung 1:
Die hier ebenfalls benutzte Funktion bild_anzeigen() wird in meiner Seite PHP-Tipps erläutert.

Ergänzung 2:
Dass der Cursor hier zum Osterei wird, geschieht nicht durch PHP, sondern durch CSS mit <div style="cursor:url('eggs2.cur'), auto;">. Mehr Informationen dazu gibt es z. B. bei greenfish-icon-editor-pro.softonic.de oder anicursor.com.
Eine .gif-Datei lässt sich z. B. mit den Programmen "IconArt" oder "Microangelo" in eine .cur-Datei oder .ani-Datei umwandeln.
Cursors zum Download z. B. bei: duering-online.de oder joescursors.tripod.com
zum Seitenanfang




Funktionen in .php-Dateien bzw. HTML-Seiten einfügen

Wie fügt man Funktionen in alle oder mehrere .php-Dateien bzw. HTML-Seiten ein?
Man schreibt die Funktionen in eine Datei, die man z. B. funktionen.inc.php nennt. Diese Datei beginnt mit <?php und endet mit ?>.
In Dateien, in denen die Funktionen benötigt werden, werden sie mit

<?php include_once ( "funktionen.inc.php" ); ?>

eingefügt.
Man benutzt include_once statt include, damit es nicht zu Problemen kommt, falls man funktionen.inc.php versehentlich mehrmals includiert.

Anmerkung: Mit include kann man natürlich auch HTML-Code in eine Homepage-Seite einbauen. Code-Teile, die in vielen Seiten benutzt werden, müssen dann nur einmalig programmiert und gepflegt werden. Allein dieser Aspekt von include ist für mich schon ein Grund, Homepages möglichst nur noch auf einem PHP-fähigen Server zu bauen.
Ich bevorzuge inzwischen www.goneo.de, weil dort bereits im kleinsten Paket zu günstigem Preis viel geboten wird.



Variablen in .php-Dateien einfügen

Manchmal verwendet man Werte in Texten, die an vielen Stellen vorkommen, die man aber gelegentlich finden und ändern muss.
In Klicktipps sind das z. B. der Grundfreibetrag der Einkommensteuer (2015: 8.472 €, 2016: 8.652 €, 2017: 8.820 €) und die Werbungskostenpauschale (1.000 €). Es könnte aber auch das Osterdatum sein.
Wenn man solche Werte an einer einzigen Stelle erzeugen oder verwalten kann, spart das viel Arbeit.

Vorgehensweise:



Den echo-Befehl ersetzen

Manchmal möchte man ganze HTML-Bereiche, also mehrere Zeielen auf einmal, ein- oder ausblenden. Mit dem Befehl echo() ist das zwar möglich, aber doch recht lästig.
Die Heredoc-Syntax erspart schon einige echo()-Befehle. Aber es geht noch wesentlich einfacher, indem man den HTML-Teil in eine PHP-Bedingung einschließt:

<?php if( irgendeine Bedingung ) { ?> <!-- ab hier können jetzt beliebig viele HTML-Zeilen stehen --> <?php }else{ ?> <!-- und hier der alternative Text --> <?php } ?>

zum Seitenanfang




© Klicktipps® (www.Klicktipps.de):
Dieser Ausdruck ist nur für den eigenen Gebrauch freigegeben.
Eine Vervielfältigung ist nicht gestattet und auch wenig sinnvoll,
da sich der Inhalt durch Aktualisierungen häufig ändert.