So, muss mich nun doch nochmal melden... (sorry für Doppelpost)
Ich hab das Problem erst mal gelöst (für meine Bedürfnisse). Ich habe den Code in ein PHP File gepackt, das ich innerhalb von Admidio über die Navigation öffne. Deshalb habe ich auch das Standard Layout gleich mit eingebunden.
Eine Frage hätte ich aber noch: Und zwar dauert es 28 Sekunden, bis die Seite komplett geladen ist... Eine ganz schöne Dauer für eine kleine Statistikseite. Liegt das daran, dass ich lauter if s eingebaut habe, statt der else if s? Oder liegt das einfach daran, dass die Schleife ewig braucht, bis sie komplett durchgelaufen ist?
Hoffe ich vergesse jetzt nichts... Anzupassen sind:
- Pfad zur Common PHP
- EDIT: In der SQL Abfrage muss die rol_id angepasst werden auf die Rollen ID('s) die abgefragt werden soll(en)
- Berechnungen der Altersklassen (bei Bedarf)
- Überschriften der verschiedenen Statistikbereiche
Hier der Code:
Code: Alles auswählen
<?php
include_once($_SERVER['DOCUMENT_ROOT']. "/admidio/adm_program/system/common.php");
// Url-Stack loeschen
$_SESSION['navigation']->clear();
// Html-Kopf ausgeben
$g_layout['title'] = 'Statistiken';
$g_layout['header'] = '<link rel="stylesheet" href="'. THEME_PATH. '/css/overview_modules.css" type="text/css" />';
require(THEME_SERVER_PATH. '/overall_header.php');
echo'<div class="formLayout" id="modules_list_form">
<div class="formHead">Statistiken</div>
<div class="formBody">
<ul class="formFieldList">';
$anzahl_mitglieder = 0;
$anzahl_maenner = 0;
$anzahl_frauen = 0;
$anzahl_sonstige = 0;
$alter_mitglieder = 0;
$alter_maenner = 0;
$alter_frauen = 0;
$juengster = 200;
$aeltester = 0;
//Variablen zur Altersstatistik Maenner
$m6 = 0;
$m714 = 0;
$m1518 = 0;
$m1926 = 0;
$m2740 = 0;
$m4160 = 0;
$m60pl = 0;
//Variablen zur Altersstatistik Frauen
$f6 = 0;
$f714 = 0;
$f1518 = 0;
$f1926 = 0;
$f2740 = 0;
$f4160 = 0;
$f60pl = 0;
//Variablen zur Altersstatistik gesamt
$g6 = 0;
$g714 = 0;
$g1518 = 0;
$g1926 = 0;
$g2740 = 0;
$g4160 = 0;
$g60pl = 0;
function Geburtstag($gebdat)
{
$tag = substr($gebdat,8,2);
$monat = substr($gebdat,5,2);
$jahr = substr($gebdat,0,4);
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$gb = mktime(0,0,0,$monat,$tag,$jahr);
$alter = intval(($jetzt - $gb) / (3600 * 24 * 365));
return $alter;
}
$sql = "SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
WHERE rol_id in (5)
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";
$result = $g_db->query($sql);
while($row = $g_db->fetch_array($result))
{
$user = new User($g_db, $row['usr_id']);
// Anzahl und Alter der Männer / Frauen
$geschlecht = $user->getValue("Geschlecht");
$geburtstag = Geburtstag($user->getValue("Geburtstag"));
if($geschlecht == 1)
{
$anzahl_maenner++;
$alter_maenner = $alter_maenner+$geburtstag;
if($geburtstag <= 6)
{
$m6++;
}
if(($geburtstag >= 7) AND ($geburtstag <= 14))
{
$m714++;
}
if(($geburtstag >= 15) AND ($geburtstag <= 18))
{
$m1518++;
}
if(($geburtstag >= 19) AND ($geburtstag <= 26))
{
$m1926++;
}
if(($geburtstag >= 27) AND ($geburtstag <= 40))
{
$m2740++;
}
if(($geburtstag >= 41) AND ($geburtstag <= 60))
{
$m4160++;
}
if($geburtstag >= 61)
{
$m60pl++;
}
//Ende Statistik Maenner
}
else if($geschlecht == 2)
{
$anzahl_frauen++;
$alter_frauen = $alter_frauen+$geburtstag;
if($geburtstag <= 6)
{
$f6++;
}
if(($geburtstag >= 7) AND ($geburtstag <= 14))
{
$f714++;
}
if(($geburtstag >= 15) AND ($geburtstag <= 18))
{
$f1518++;
}
if(($geburtstag >= 19) AND ($geburtstag <= 26))
{
$f1926++;
}
if(($geburtstag >= 27) AND ($geburtstag <= 40))
{
$f2740++;
}
if(($geburtstag >= 41) AND ($geburtstag <= 60))
{
$f4160++;
}
if($geburtstag >= 61)
{
$f60pl++;
}
//Ende Statistik Frauen
}
else
{
$anzahl_sonstige++;
$alter_sonstige = $alter_sonstige+$geburtstag;
}
if($geburtstag > $aeltester)
{
$aeltester = $geburtstag;
}
if($geburtstag < $juengster)
{
$juengster = $geburtstag;
}
if($geburtstag <= 6)
{
$g6++;
}
if(($geburtstag >= 7) AND ($geburtstag <= 14))
{
$g714++;
}
if(($geburtstag >= 15) AND ($geburtstag <= 18))
{
$g1518++;
}
if(($geburtstag >= 19) AND ($geburtstag <= 26))
{
$g1926++;
}
if(($geburtstag >= 27) AND ($geburtstag <= 40))
{
$g2740++;
}
if(($geburtstag >= 41) AND ($geburtstag <= 60))
{
$g4160++;
}
if($geburtstag >= 61)
{
$g60pl++;
}
//Schleifenende
}
echo "<h2>Allgemeine Statistiken:</h2>";
echo "<br>";
echo "Anzahl Mitglieder: ". ($anzahl_frauen+$anzahl_maenner+$anzahl_sonstige);
echo "<br>";
echo "Anzahl Frauen: ". $anzahl_frauen;
echo "<br>";
echo "Anzahl Männer: ". $anzahl_maenner;
echo "<br>";
echo "Durchschnittsalter: ". round((($alter_maenner+$alter_frauen+$alter_sonstige)/($anzahl_frauen+$anzahl_maenner+$anzahl_sonstige)),0);
echo "<br>";
echo "Durchschnittsalter Frauen: ". round(($alter_frauen/$anzahl_frauen),0);
echo "<br>";
echo "Durchschnittsalter Männer: ". round(($alter_maenner/$anzahl_maenner),0);
echo "<br>";
echo "Jüngstes Mitglied: ". $juengster;
echo "<br>";
echo "Ältestes Mitglied: ". $aeltester;
echo "<br>";
echo "<br>";
echo "<h2>Statistiken Männer:</h2>";
echo "<br>";
echo "Männer bis 6 Jahre: ". $m6;
echo "<br>";
echo "Männer 7 bis 14 Jahre: ". $m714;
echo "<br>";
echo "Männer 15 bis 18 Jahre: ". $m1518;
echo "<br>";
echo "Männer 19 bis 26 Jahre: ". $m1926;
echo "<br>";
echo "Männer 27 bis 40 Jahre: ". $m2740;
echo "<br>";
echo "Männer 41 bis 60 Jahre: ". $m4160;
echo "<br>";
echo "Männer Älter 60 Jahre: ". $m60pl;
echo "<br>";
echo "<br>";
echo "<h2>Statistiken Frauen:</h2>";
echo "<br>";
echo "Frauen bis 6 Jahre: ". $f6;
echo "<br>";
echo "Frauen 7 bis 14 Jahre: ". $f714;
echo "<br>";
echo "Frauen 15 bis 18 Jahre: ". $f1518;
echo "<br>";
echo "Frauen 19 bis 26 Jahre: ". $f1926;
echo "<br>";
echo "Frauen 27 bis 40 Jahre: ". $f2740;
echo "<br>";
echo "Frauen 41 bis 60 Jahre: ". $f4160;
echo "<br>";
echo "Frauen Älter 60 Jahre: ". $f60pl;
echo "<br>";
echo "<br>";
echo "<h2>Gesamtstatistiken:</h2>";
echo "<br>";
echo "Gesamt bis 6 Jahre: ". $g6;
echo "<br>";
echo "Gesamt 7 bis 14 Jahre: ". $g714;
echo "<br>";
echo "Gesamt 15 bis 18 Jahre: ". $g1518;
echo "<br>";
echo "Gesamt 19 bis 26 Jahre: ". $g1926;
echo "<br>";
echo "Gesamt 27 bis 40 Jahre: ". $g2740;
echo "<br>";
echo "Gesamt 41 bis 60 Jahre: ". $g4160;
echo "<br>";
echo "Gesamt Älter 60 Jahre: ". $g60pl;
echo "<br>";
echo '
</ul>
</div>
</div>';
require(THEME_SERVER_PATH. '/overall_footer.php');
?>
Ich hoffe, dass ich einigen von euch damit helfen konnte. Ein Dank auch nochmal an Gerhard, für das Grundgerüst des PHP Files. Ebenso an Matze und das Team für die Hilfe, die sie im anderen Thread Gerhard zukommen lassen haben.
Gruß
Chris