Neues Modul Geburtstagsliste
Verfasst: Mo 17. Apr 2006, 17:07
Anbei ein neues Modul, das die Geburtstage anzeigt.
Voraussetzung ist die Tabelle con_adressen (siehe http://contenido.org/forum/viewtopic.php?p=77504)
In der Tabelle muss zusätzlich das Feld 'Geburtstag' Typ 'date' angelegt werden.
Angezeigt wird:
Wer heute Geburtstag hat (mit Alter)
Wer in den nächsten XX Tagen Geburtstag hat (mit Alter)
Geburtstage sortiert nach Monaten mit Alter, Wochentag des Geburtstags und ob es sich um einen runden Geburtstag handelt (> 60 alle 5 Jahre, sonst 10)
Hier ein Screenshot:

Und hier das Modul:
Gruß Mc
Voraussetzung ist die Tabelle con_adressen (siehe http://contenido.org/forum/viewtopic.php?p=77504)
In der Tabelle muss zusätzlich das Feld 'Geburtstag' Typ 'date' angelegt werden.
Angezeigt wird:
Wer heute Geburtstag hat (mit Alter)
Wer in den nächsten XX Tagen Geburtstag hat (mit Alter)
Geburtstage sortiert nach Monaten mit Alter, Wochentag des Geburtstags und ob es sich um einen runden Geburtstag handelt (> 60 alle 5 Jahre, sonst 10)
Hier ein Screenshot:

Und hier das Modul:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname: Adressenliste - Geburtstage
* Author(s): Mc
* Created: 16-04-2006
* Beschreibung: Ausgabe der Geburtstage aus der Tabelle con_adressen (muss vorher neu angelegt werden)
* Anpassung: $aktiv und $tagegeb
************************************************/
$dbConnect = new DB_Contenido;
/*********** Anpassungen *****************************************/
$aktiv = 1;//aktiv =1: nur die aktiven Datensaetze
$tagegeb = "8";//wer hat Geburtstag in den naechsten x Tagen
/************* Benoetigte Funktionen ******************************/
//------------ Berechnung des Alters aus dem Geburtstag ------------
function alter($Geburtstag) {
if (!empty($Geburtstag)) {
$gebDateArray = explode("-", $Geburtstag);
$alter = date(Y) - $gebDateArray[0]; //1. Schritt
if (date(m) < $gebDateArray[1]){
$alter = date(Y) - $gebDateArray[0] - 1;
} //2. Schritt
if (date(m) == $gebDateArray[1] AND date(d) < $gebDateArray[2]){
$alter = date(Y) - $gebDateArray[0] - 1;
}//3. Schritt
return $alter = $alter." Jahre";
}
} //Ende function alter
//------------ Wochentag des Geburtstags im aktuellen Jahr ----------
function wochentag($Geburtstag) {
$gebDateArray = explode("-", $Geburtstag);
$monatgeb = $gebDateArray[1];
$taggeb = $gebDateArray[2];
$weekdays = array('Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag');
$jahr = date("Y");
$monat = $monatgeb;
$tag = $taggeb;
$jdn = gregoriantojd( $monat, $tag, $jahr );
$weekday = $weekdays[ $jdn % 7 ];
return $weekday;
}//Ende funktion wochentag
/*************** aktuelles Datum ausgeschrieben, deutsch ************/
function datum() {
$tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$monate = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober",
"November","Dezember");
$a = date("w");
$b = date("n")-1;
$c = date("d.");
$d = date("Y");
$heute = "$tage[$a], $c $monate[$b] $d";
return $heute;
}// Ende function datum
/**************** Ende Funktionen ************************************/
//----------- heute hat Geburtstag -----------------------------------
$datem = date(m);
$dated = date(d);
$result = @mysql_query("SELECT Vorname, Nachname, Geburtstag, aktiv, MONTH(Geburtstag) AS monat, DAYOFMONTH(Geburtstag) AS tag FROM con_adressen WHERE aktiv=$aktiv AND MONTH(Geburtstag)=$datem AND DAYOFMONTH(Geburtstag)=$dated");
$zaehlen = mysql_num_rows($result);
if ($zaehlen > 0) {
while ( $row = mysql_fetch_array($result) ) {
$Vorname = $row["Vorname"];
$Nachname = $row["Nachname"];
$Geburtstag = $row["Geburtstag"];
$Name = $Vorname." ".$Nachname." (".alter($Geburtstag).")";
$alle .= $Name.",</nbr> ";
}
}
if ($zaehlen > 1) {$hat1 = "haben";} else {$hat1 = "hat";}
//----------- Geburtstag in den naechsten $tagegeb Tagen --------------------
$morgen = date("md",strtotime("+1 days"));
$spaeter = date("md", strtotime("+$tagegeb days"));
$result = @mysql_query("SELECT Vorname, Nachname, Geburtstag, aktiv, MONTH(Geburtstag) AS monat, DAYOFMONTH(Geburtstag) AS tag FROM con_adressen WHERE aktiv=1 AND DATE_FORMAT(Geburtstag, '%m%d') BETWEEN $morgen AND $spaeter AND Geburtstag <> '0000-00-00' ORDER BY monat, tag");
$zaehlen = mysql_num_rows($result);
if ($zaehlen > 0) {
while ( $row = mysql_fetch_array($result) ) {
$Vorname = $row["Vorname"];
$Nachname = $row["Nachname"];
$Geburtstag = $row["Geburtstag"];
$alter = alter($Geburtstag);
$alter_zahl = split(" ",$alter);
$alter_wird = $alter_zahl[0]+1;
$gebDateArray = explode("-", $Geburtstag);
$Geburtstagdt = $gebDateArray[2].".".$gebDateArray[1].".".$gebDateArray[0];
$Name = $Vorname." ".$Nachname." (".$Geburtstagdt." - wird ".$alter_wird.")";
$alle8 .= $Name.",</nbr> ";
}
}
if ($zaehlen > 1) {$hat2 = "haben";} else {$hat2 = "hat";}
//------- assoziatives Array mit den Monaten erstellen -----
$monate = array("01"=>"Januar", "02"=>"Februar", "03"=>"März", "04"=>"April", "05"=>"Mai", "06"=>"Juni", "07"=>"Juli", "08"=>"August", "09"=>"September", "10"=>"Oktober", "11"=>"November", "12"=>"Dezember");
?>
<!--------------------- ab hier Datenausgabe ----------------------------------->
<p>
<table class="text" width="100%" cellspacing=1 cellpadding=2 bgcolor="#CCCCCC">
<tr bgcolor="#E2EDD7">
<td class="text" colspan="2">Content Management Tool von webec - Adressbuch - Geburtstage</td>
</tr>
<tr bgcolor="#F0F0F0">
<td class="text" valign="top" width="160px"><?php echo datum(); ?></td>
<td class="text" width="660px">
<?php
if (strlen($alle) > 0) {
echo "Heute $hat1 Geburtstag: ".substr($alle,0,-8);
}
else {
echo "Heute hat Geburtstag: ----------";
}
?></td>
</tr>
<?php
if (strlen($alle8) > 0) {
echo "<tr bgcolor=\"#F0F0F0\">
<td class=\"text\" colspan=\"2\">";
echo "In den nächsten $tagegeb Tagen $hat2 Geb.: ".substr($alle8,0,-8);
echo "</td>
</tr>";
}
?>
</table>
</p>
<?php
echo "<table align=\"left\" class=\"text\" width=\"100%\" cellspacing=1 cellpadding=2 bgcolor=\"#CCCCCC\">";
echo "
<tr bgcolor=\"#D7D7ED\">
<td width=\"180px\">Name, Titel Vorname</td>
<td width=\"110px\">Geburtstag</td><td width=\"100px\">Ist ".date(Y)." ein:</td>
<td width=\"100px\">Alter</td>
<td width=\"130px\">runder Geburtstag</td>
<td width =\"200px\"> </td>
</tr>";
foreach ($monate as $key => $value) {
$monat_key = $key;
echo "
<tr><td bgcolor=\"#F0F0F0\" colspan=\"6\"><b>". $value. "</b></td></tr>\n";
$result = @mysql_query("SELECT id, Titel, Vorname, Nachname, Geburtstag, aktiv, MONTH(Geburtstag) AS monat, DAYOFMONTH(Geburtstag) AS tag FROM con_adressen WHERE aktiv=$aktiv AND MONTH(Geburtstag)=$monat_key ORDER BY monat, tag");
$zaehlen = mysql_num_rows($result);
if ($zaehlen == 0){
echo "
<tr><td colspan=\"6\" bgcolor=\"ffffff\" onMouseOver=this.style.backgroundColor=\"#E2EDD7\"; onMouseOut=this.style.backgroundColor=\"#ffffff\"; valign=\"top\"> </td></tr>\n";
}
while ( $row = mysql_fetch_array($result) ) {
$id = $row["id"];
$Titel = $row["Titel"];
$Vorname = $row["Vorname"];
$Nachname = $row["Nachname"];
$Geburtstag = $row["Geburtstag"];
$aktiv = $row["aktiv"];
$monat = $row["monat"];
$gebDateArray = explode("-", $Geburtstag);
$Geburtstagdt = $gebDateArray[2].".".$gebDateArray[1].".".$gebDateArray[0];
$alter = alter($Geburtstag);
$alter_zahl = split(" ",$alter);
$alter_wird = $alter_zahl[0]+1;
$rest10 = $alter_wird%10;
$rest5 = $alter_wird%5;
$rund = false;
if ($rest10 == 0) $rund = true;
if ($rest5 == 0 AND $alter_wird > 61) $rund = true;
echo "
<tr bgcolor=\"ffffff\" onMouseOver=this.style.backgroundColor=\"#E2EDD7\"; onMouseOut=this.style.backgroundColor=\"#ffffff\"; valign=\"top\"><td><nobr>" . $Nachname . ", " . $Titel . " " . $Vorname ."</nobr></td> <td>" . $Geburtstagdt ."</td><td>". wochentag($Geburtstag) ."</td><td>". alter($Geburtstag)."</td><td>";
if ($rund == true) {
echo "wird ".$alter_wird;
}
echo "</td><td></td></tr>\n\n";
}//ende while
}//ende foreach
echo "</table>";
?>