Seite 1 von 1

[Birthday Mod] nächste Geburtstage auslesen

Verfasst: 30.04.2006 14:02
von -Andi-
Hi,
Mein Name ist Andreas. Ich bin vor einer Woche zufällig auf das PHPbb gestoßen und bin davon richtig begeistert.
Ich habe auch gleich ein paar Mods eingebaut und dabei schon das erste Problem.
Beim Birthday Mod wird ja eine Liste der User angezeigt, die in den nächsten xx Tagen Geburtstag haben.
So etwas möchte ich nun in meine Seite exportieren.
Ich habe die Seite schon ins phpbb Forum eingebunden, auf der ich die kommenden Geburtstage anzeigen möchte, brauche jetzt aber die SQL Syntax dazu.
Das Datum ist ja mit mkrealdate(tag.monat.jahr) in der Datenbank gespeichert.
Normalerweise würde ich nun den Tag des Jahren DAYOFYEAR() verwenden um den nächsten Termin herauszubekommen aber dies ist ja leider wegen der Formatierung nicht möglich.

Weiß jemand wie ich es auslesen könnte?

Mfg. -Andi-

Verfasst: 05.05.2006 08:18
von -Andi-
Weiß wirklich niemand wie ich die Leute aus der Datenbank auslese, die in den nächsten 31 Tagen Geburtstag haben?

Mfg. -Andi-

Verfasst: 05.05.2006 10:40
von -Andi-
Also ich habs mittlerweile geschafft alles auszulesen und habe den Code erweitert, sodass nur die Geburtstage der Mitglieder einer bestimmten Gruppe angezeigt werden.
Ich poste einfach mal den Code, auf dass jemand, der ein ähnliches Problem hat, hier die Lösung findet.

Mfg. -Andi-

Code: Alles auswählen

function date2timestamp($date) // Format : DD.MM.YYYY
{
  if (preg_match("/^([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})$/i",$date))
  {
    $expDate=explode(".",$date);
    return mktime(0,0,0,$expDate[1],$expDate[0],$expDate[2]);
  }
  else return false;
}


$grab_daten = $db->sql_query("SELECT u.user_id, u.username, u.user_birthday, DAYOFYEAR(NOW()) AS tdj
FROM phpbb_users AS u, phpbb_user_group AS ug, phpbb_groups AS g
WHERE u.user_id = ug.user_id
AND ug.group_id = g.group_id
AND g.group_name = 'TGI'");

  while ($row = $db->sql_fetchrow($grab_daten)) {

	//Geburtsdatum zum Format DD.MM.YYYY
	$auslesen = realdate($lang['DATE_FORMAT'],$row['user_birthday']);

	//Datum in Timestamp
	$datum = date2timestamp($auslesen);

	//Tag des Jahres des Timestamps
	$tagdesjahre = date("z", $datum);

	//Geburtstag-Tag-des-Jahres MINUS HEUTE-Tag-Des-Jahres (Wenn rechnen <= 31, dann liegt der Geburtstag in den nächsten 31 Tagen)
	$rechnen = $tagdesjahre-$row[tdj];


  if($rechnen == 1) {
    echo date("d. M Y", $datum) . " - " . $row[username] . " <em><b>(morgen)</b></em><br>";
    $bla++; }
  elseif($rechnen == 0) {
    echo "<b>" . date("d. M Y", $datum) . " - " . $row[username] . " <em>(heute)</b></em><br>";
    $bla++; }
  elseif($rechnen <= 31) {
    echo date("d. M Y", $datum) . " - " . $row[username] . "<br>";
    $bla++; }
  elseif($bla == "" && $abbruch != "ok") {
    echo "<em>keine</em>";
    $abbruch = "ok"; }


 } //Ende While