Seite 1 von 1

durschschnittsalter Mod erstellen

Verfasst: 19.10.2007 14:54
von TiCar
Hi,

aufbauend auf dem Birthday Mod würde ich mir gern eine Erweiterung des Statistikmods erstellen wollen, der mir das Durchschnittsalter des Boards anzeigt, bzw. verschiedene Kriterien/Verteilungen ausgibt.

Soweit ich das sehe werden die Geburtstage in der Datenbank immer die Tage von 01.01.1970 an gerechnet abgelegt.

D.h. hat man am 13.03.1970 Geburtstag, dann steht in der Datenbank 71 für 71 Tage, Entsprechend für den 14.03.1972 wären es dann 803 Tage.

D.h. der Wert in der DB rechnet sich wie folgt aus:
Unixtimestamp der beiden Werte:
01.01.1970 00:00:00 = 0
13.03.1970 00:00:00 = 6134400

6134400/60sek = 102240
102240/60min = 1704
1704/24h = 71

Bis dahin einfach denke ich.

Wie errechnet sich das korrekte Alter eines Users:
Today = 1192752000
13.03.1970 00:00:00 = 6134400

1. Ansatz:
1192752000-6134400 = 1186617600
1186617600/60/60/24 = 13734 Tage
Da ich aber nicht über die Schaltjahre bescheid weiß, bringt mich das relativ wenig weiter denke ich, d.h. hier ist mit diesem Ansatz schluß, es seidenn jemand weiß eine einfach Lösung per PHP.

2. Ansatz (rein theoretisch, syntaktisch nicht korrekt was php angeht):
years = year(today() - year(birthday['user'])
months = month(today()) - month(birthday['user'])
if( months < 0 ) { years = years - 1 }
if( months = 0 ) {
if ( day(today()) - day(birthday['user']) < 0 ) { years = years -1 }
}

sum(years)/anzahl der ausgewerten User = Durchschnittsalter

Hat an dieser Stelle jemand eine Idee ob das auch einfacher geht?

wenn nicht, würde ich diese Berechnung als Funktion in php bauen.

So weiter im text mit der Altersverteilung, denn das wäre bisher nur Grundlagen gewesen.

Aufbauen auf diese Funktion würde ich entsprechend weiter vorgehen:
age[]=0; // Array von über die möglichen Altersgruppen 1-99 Jahre
$sql = 'SELECT user_birthday FROM phpbb_users WHERE user_active = 1 AND user_birthday != 999999';
if ($result = sql_query($sql) ) {
foreacht $row =sql_fetchrow($result) {
$age[get_age($row['user_birthday'])]++; //keine Ahnung ob sowas geht mit Arrays?!?
}
}

foreach $i = 1; $i < 99; $i++ {
echo "Anzahl ". $i ." jährigen: " + $age[$i];
}

Bitte nicht hauen wenn die php Syntax grotten verkehrt ist (das weiß ich, war auch nur asu dem Kopf so rausgetippt), das war momentan auch nicht mein Hauptaugenmerk, sondern es ging mir mehr die grundsätzliche Lösung. Gerade mit Array hab ich keine Ahnung wie man eine Aufsummiernug geschickt und clever lösen könnte.

Wenn natürlich jemand von einem entsprechenden Mod schon weiß immer her damit :)

Verfasst: 19.10.2007 15:51
von Andi1111
wie wärs denn damit?
http://www.phpbbhacks.com/download/477

da ist das modul für das durchschnittsalter dabei, für den alten statistik mod habe ich das auch noch irgendwo :)

Verfasst: 19.10.2007 18:34
von TiCar
öhm, kannst mal übersetzen welcher Eintrag der für Alter etc. ist, das würde die Suche deutlich erleichtern *urgs* :D

Edit: hab da was gefunden
-> http://www.phpbb2.de/dload.php?action=file&file_id=192