From 7a7f87f8924810fae80f3d7edf2e8a8e81033efe Mon Sep 17 00:00:00 2001 From: james Date: Wed, 12 Dec 2007 23:35:51 +0000 Subject: [PATCH] Better statistics, less database queries --- admin/registration_list.php | 135 +++++++++++++++++++++++++----------- 1 file changed, 96 insertions(+), 39 deletions(-) diff --git a/admin/registration_list.php b/admin/registration_list.php index becaca5a..d4dd707f 100644 --- a/admin/registration_list.php +++ b/admin/registration_list.php @@ -81,6 +81,14 @@ function openstudentinfo(id) echo ""; echo ""; +$q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); +while($r=mysql_fetch_object($q)) + $cats[$r->id]=$r->category; + +$q=mysql_query("SELECT * FROM projectdivisions WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); +while($r=mysql_fetch_object($q)) + $divs[$r->id]=$r->division; + if($_GET['showstatus']) $wherestatus="AND status='".$_GET['showstatus']."' "; else $wherestatus=""; switch($_GET['sort']) @@ -133,14 +141,18 @@ else $wherestatus=""; $stats_totalstudents=0; $stats_divisions=array(); $stats_categories=array(); - $stats_catdiv=array(); + $stats_students_catdiv=array(); + $stats_projects_catdiv=array(); + $stats_students_schools=array(); + $stats_projects_schools=array(); + $schools_names=array(); while($r=mysql_fetch_object($q)) { $stats_totalprojects++; $stats_divisions[$r->projectdivisions_id]++; $stats_categories[$r->projectcategories_id]++; - $stats_catdiv[$r->projectcategories_id][$r->projectdivisions_id]++; + $stats_projects_catdiv[$r->projectcategories_id][$r->projectdivisions_id]++; switch($r->status) { @@ -158,22 +170,14 @@ else $wherestatus=""; echo "$r->projectnumber"; echo "reg_id\">$r->title"; - - //now get thh category and division - $catq=mysql_query("SELECT category FROM projectcategories WHERE year='".$config['FAIRYEAR']."' AND id='".$r->projectcategories_id."'"); - $catr=mysql_fetch_object($catq); - $divq=mysql_query("SELECT division FROM projectdivisions WHERE year='".$config['FAIRYEAR']."' AND id='".$r->projectdivisions_id."'"); - $divr=mysql_fetch_object($divq); - - - echo "".i18n("$catr->category").""; - - echo "".i18n("$divr->division").""; + echo "".i18n($cats[$r->projectcategories_id]).""; + echo "".i18n($divs[$r->projectdivisions_id]).""; $sq=mysql_query("SELECT students.firstname, students.lastname, students.id, - schools.school + schools.school, + schools.id AS schools_id FROM students,schools WHERE @@ -188,11 +192,17 @@ else $wherestatus=""; $students=""; while($studentinfo=mysql_fetch_object($sq)) { -// $students.="id)\">$studentinfo->firstname $studentinfo->lastname
"; $students.="reg_id\">$studentinfo->firstname $studentinfo->lastname
"; $schools.="$studentinfo->school
"; $stats_totalstudents++; + $stats_students_catdiv[$r->projectcategories_id][$r->projectdivisions_id]++; + $stats_students_schools[$r->projectcategories_id][$studentinfo->schools_id]++; + $schools_names[$studentinfo->schools_id]=$studentinfo->school; + $lastschoolid=$studentinfo->schools_id; } + //this really isnt right, its only taking the school from the last student in the project to count towards the school's project totals + //but there's really no other way + $stats_projects_schools[$r->projectcategories_id][$lastschoolid]++; echo "$schools"; echo "$students"; echo ""; @@ -206,44 +216,91 @@ else $wherestatus=""; echo "
"; echo ""; - echo ""; - echo "\n"; - echo "\n"; - echo ""; - - echo ""; - $q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); - while($r=mysql_fetch_object($q)) - $cats[$r->id]=$r->category; - - $q=mysql_query("SELECT * FROM projectdivisions WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); - while($r=mysql_fetch_object($q)) - $divs[$r->id]=$r->division; - + echo ""; echo "

".i18n("Project / Student totals")."

".i18n("Total Projects").":$stats_totalprojects
".i18n("Total Students").": $stats_totalstudents

".i18n("Projects per age category / division")."

".i18n("Students / projects per age category / division")."

"; - echo ""; - echo ""; + echo "
"; + echo ""; foreach($cats AS $c=>$cn) { - echo ""; + echo ""; } - echo ""; + echo ""; echo ""; foreach($divs AS $d=>$dn) { - echo ""; + echo ""; + $tstud=0; + $tproj=0; foreach($cats AS $c=>$cn) - echo ""; - echo ""; + { + echo ""; + $tstud+=$stats_students_catdiv[$c][$d]; + $tproj+=$stats_projects_catdiv[$c][$d]; + + $tstudcat[$c]+=$stats_students_catdiv[$c][$d]; + $tprojcat[$c]+=$stats_projects_catdiv[$c][$d]; + } + echo ""; echo ""; } echo ""; foreach($cats AS $c=>$cn) { - echo ""; + echo ""; } - echo ""; + echo ""; echo ""; echo "
$cn$cn
".i18n("Stud | Proj")."
".i18n("Total")."".i18n("Total")."
".i18n("Stud | Proj")."
$dn
$dn".($stats_catdiv[$c][$d]?$stats_catdiv[$c][$d]:0)."".($stats_divisions[$d]?$stats_divisions[$d]:0).""; + echo ($stats_students_catdiv[$c][$d]?$stats_students_catdiv[$c][$d]:0); + echo "    "; + echo ($stats_projects_catdiv[$c][$d]?$stats_projects_catdiv[$c][$d]:0); + echo ""; + echo ($tstud?$tstud:0); + echo "    "; + echo ($tproj?$tproj:0); + echo "
".i18n("Total")."".($stats_categories[$c]?$stats_categories[$c]:0).""; + echo ($tstudcat[$c]?$tstudcat[$c]:0); + echo "    "; + echo ($tprojcat[$c]?$tprojcat[$c]:0); + echo "".($stats_totalprojects?$stats_totalprojects:0).""; + echo ($stats_totalstudents?$stats_totalstudents:0); + echo "    "; + echo ($stats_totalprojects?$stats_totalprojects:0); + echo "
"; - echo "
"; + echo ""; + + echo "
"; + echo "

".i18n("Students / projects per age category / school")."

"; + echo ""; + echo ""; + echo ""; + foreach($cats AS $c=>$cn) { + echo ""; + } + echo ""; + echo ""; + + asort($schools_names); + foreach($schools_names AS $id=>$sn) + { + echo ""; + $tstud=0; + $tproj=0; + foreach($cats AS $c=>$cn) { + echo ""; + $tstud+=$stats_students_schools[$c][$id]; + $tproj+=$stats_projects_schools[$c][$id]; + } + echo ""; + echo ""; + } + echo "
$cn
".i18n("Stud | Proj")."
".i18n("Total")."
".i18n("Stud | Proj")."
$sn".($stats_students_schools[$c][$id]?$stats_students_schools[$c][$id]:0); + echo "    "; + echo ($stats_projects_schools[$c][$id]?$stats_projects_schools[$c][$id]:0)."".($tstud?$tstud:0); + echo "    "; + echo ($tproj?$tproj:0)."
"; + echo i18n("%1 schools total",array(count($schools_names))); + + echo ""; + echo ""; echo "
"; echo i18n("Note: statistics reflect the numbers of the current 'Status' selected at the top of the page");