, * Andreas Oesterreicher , * Rudolf Hangl and * Gerald Simane-Sequens . */ /** * Auswertung fuer den Reihungstest */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/datum.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); function sortByField($multArray,$sortField,$desc=true) { $tmpKey=''; $ResArray=array(); if(!is_array($multArray)) return array(); $maIndex=array_keys($multArray); $maSize=count($multArray)-1; for($i=0; $i < $maSize ; $i++) { $minElement=$i; $tempMin=$multArray[$maIndex[$i]]->$sortField; $tmpKey=$maIndex[$i]; for($j=$i+1; $j <= $maSize; $j++) { if($multArray[$maIndex[$j]]->$sortField < $tempMin ) { $minElement=$j; $tmpKey=$maIndex[$j]; $tempMin=$multArray[$maIndex[$j]]->$sortField; } } $maIndex[$minElement]=$maIndex[$i]; $maIndex[$i]=$tmpKey; } if($desc) for($j=0;$j<=$maSize;$j++) $ResArray[$maIndex[$j]]=$multArray[$maIndex[$j]]; else for($j=$maSize;$j>=0;$j--) $ResArray[$maIndex[$j]]=$multArray[$maIndex[$j]]; return $ResArray; } $ergebnis=''; $gebiet=array(); $kategorie=array(); $erg_kat=array(); $datum_obj = new datum(); $datum_von = isset($_POST['datum_von'])?$_POST['datum_von']:''; $datum_bis = isset($_POST['datum_bis'])?$_POST['datum_bis']:''; $reihungstest = isset($_POST['reihungstest'])?$_POST['reihungstest']:''; $studiengang = isset($_POST['studiengang'])?$_POST['studiengang']:''; if($reihungstest!='' && !is_numeric($reihungstest)) die('ReihungstestID ist ungueltig'); if($studiengang!='' && !is_numeric($studiengang)) die('Studiengang ist ungueltig'); if($datum_von!='') $datum_von = $datum_obj->formatDatum($datum_von, 'Y-m-d'); if($datum_bis!='') $datum_bis = $datum_obj->formatDatum($datum_bis, 'Y-m-d'); // Reihungstests laden $sql_query="SELECT * FROM public.tbl_reihungstest WHERE date_part('year',datum)=date_part('year',now()) ORDER BY datum,uhrzeit"; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); while ($row=$db->db_fetch_object($result)) { $rtest[$row->reihungstest_id]->reihungstest_id=$row->reihungstest_id; $rtest[$row->reihungstest_id]->studiengang_kz=$row->studiengang_kz; $rtest[$row->reihungstest_id]->ort_kurzbz=$row->ort_kurzbz; $rtest[$row->reihungstest_id]->anmerkung=$row->anmerkung; $rtest[$row->reihungstest_id]->datum=$row->datum; $rtest[$row->reihungstest_id]->uhrzeit=$row->uhrzeit; } if (isset($_POST['reihungstest'])) { // Vorkommende Gebiete laden $sql_query=" SELECT DISTINCT gebiet_id, gebiet FROM testtool.vw_auswertung JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_reihungstest ON(vw_auswertung.reihungstest_id=tbl_reihungstest.reihungstest_id) WHERE 1=1"; if($reihungstest!='') $sql_query.=" AND vw_auswertung.reihungstest_id='".addslashes($reihungstest)."'"; if($datum_von!='') $sql_query.=" AND tbl_reihungstest.datum>='$datum_von'"; if($datum_bis!='') $sql_query.=" AND tbl_reihungstest.datum<='$datum_bis'"; if($studiengang!='') $sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($studiengang)."'"; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); while ($row=$db->db_fetch_object($result)) { $gebiet[$row->gebiet_id]->name=$row->gebiet; $gebiet[$row->gebiet_id]->gebiet_id=$row->gebiet_id; } // Alle Personen des Reihungstests laden $sql_query="SELECT * FROM testtool.vw_auswertung JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_reihungstest ON(vw_auswertung.reihungstest_id=tbl_reihungstest.reihungstest_id) WHERE 1=1"; if($reihungstest!='') $sql_query.=" AND vw_auswertung.reihungstest_id='".addslashes($reihungstest)."'"; if($datum_von!='') $sql_query.=" AND tbl_reihungstest.datum>='$datum_von'"; if($datum_bis!='') $sql_query.=" AND tbl_reihungstest.datum<='$datum_bis'"; if($studiengang!='') $sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($studiengang)."'"; //echo $sql_query; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); while ($row=$db->db_fetch_object($result)) { $ergebnis[$row->pruefling_id]->prestudent_id=$row->prestudent_id; $ergebnis[$row->pruefling_id]->pruefling_id=$row->pruefling_id; $ergebnis[$row->pruefling_id]->nachname=$row->nachname; $ergebnis[$row->pruefling_id]->vorname=$row->vorname; $ergebnis[$row->pruefling_id]->gebdatum=$row->gebdatum; $ergebnis[$row->pruefling_id]->geschlecht=$row->geschlecht; $ergebnis[$row->pruefling_id]->idnachweis=$row->idnachweis; $ergebnis[$row->pruefling_id]->registriert=$row->registriert; $ergebnis[$row->pruefling_id]->stg_kurzbz=$row->stg_kurzbz; $ergebnis[$row->pruefling_id]->stg_bez=$row->stg_bez; $ergebnis[$row->pruefling_id]->semester=$row->semester; $ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->name=$row->gebiet; $ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->punkte=(($row->punkte>=$row->maxpunkte)?$row->maxpunkte:$row->punkte); //wenn maxpunkte ueberschritten wurde -> 100% if($row->punkte>=$row->maxpunkte) $prozent=100; else $prozent = ($row->punkte/$row->maxpunkte)*100; $ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->prozent=$prozent; if (isset($ergebnis[$row->pruefling_id]->gesamt)) $ergebnis[$row->pruefling_id]->gesamt+=$prozent*$row->gewicht; else $ergebnis[$row->pruefling_id]->gesamt=$prozent*$row->gewicht; } $ergb=sortByField($ergebnis,'gesamt'); // Vorkommende Kategorien laden $sql_query="SELECT DISTINCT kategorie_kurzbz, (SELECT sum(punkte) FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id) WHERE tbl_frage.kategorie_kurzbz=vw_auswertung_kategorie.kategorie_kurzbz) as gesamtpunkte FROM testtool.vw_auswertung_kategorie JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_reihungstest ON(vw_auswertung_kategorie.reihungstest_id=tbl_reihungstest.reihungstest_id) WHERE 1=1"; if($reihungstest!='') $sql_query.=" AND vw_auswertung_kategorie.reihungstest_id='".addslashes($reihungstest)."'"; if($datum_von!='') $sql_query.=" AND tbl_reihungstest.datum>='$datum_von'"; if($datum_bis!='') $sql_query.=" AND tbl_reihungstest.datum<='$datum_bis'"; if($studiengang!='') $sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($studiengang)."'"; //echo $sql_query; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); $gesamtpunkte=array(); while ($row=$db->db_fetch_object($result)) { $gesamtpunkte[$row->kategorie_kurzbz]=$row->gesamtpunkte; $kategorie[$row->kategorie_kurzbz]->name=$row->kategorie_kurzbz; } // Ergebnisse laden $sql_query=" SELECT vw_auswertung_kategorie.*, (SELECT typ FROM testtool.tbl_kriterien WHERE gebiet_id=vw_auswertung_kategorie.gebiet_id AND punkte=vw_auswertung_kategorie.punkte AND kategorie_kurzbz=vw_auswertung_kategorie.kategorie_kurzbz) as typ FROM testtool.vw_auswertung_kategorie JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_reihungstest ON(vw_auswertung_kategorie.reihungstest_id=tbl_reihungstest.reihungstest_id) WHERE 1=1"; if($reihungstest!='') $sql_query.=" AND vw_auswertung_kategorie.reihungstest_id='".addslashes($reihungstest)."'"; if($datum_von!='') $sql_query.=" AND tbl_reihungstest.datum>='$datum_von'"; if($datum_bis!='') $sql_query.=" AND tbl_reihungstest.datum<='$datum_bis'"; if($studiengang!='') $sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($studiengang)."'"; $sql_query.=" ORDER BY nachname, vorname"; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); while ($row=$db->db_fetch_object($result)) { $erg_kat[$row->pruefling_id]->pruefling_id=$row->pruefling_id; $erg_kat[$row->pruefling_id]->prestudent_id=$row->prestudent_id; $erg_kat[$row->pruefling_id]->nachname=$row->nachname; $erg_kat[$row->pruefling_id]->vorname=$row->vorname; $erg_kat[$row->pruefling_id]->gebdatum=$row->gebdatum; $erg_kat[$row->pruefling_id]->geschlecht=$row->geschlecht; $erg_kat[$row->pruefling_id]->idnachweis=$row->idnachweis; $erg_kat[$row->pruefling_id]->registriert=$row->registriert; $erg_kat[$row->pruefling_id]->stg_kurzbz=$row->stg_kurzbz; $erg_kat[$row->pruefling_id]->stg_bez=$row->stg_bez; $erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->name=$row->kategorie_kurzbz; $erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->typ=$row->typ; $erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->punkte=number_format($row->punkte,2).'/'.number_format($gesamtpunkte[$row->kategorie_kurzbz],2); } } //Studiengaenge laden $stg_obj = new studiengang(); $stg_obj->getAll('typ, kurzbz', false); $stg_arr = array(); foreach($stg_obj->result as $row) $stg_arr[$row->studiengang_kz]=$row->kuerzel; ?> Testtool - Auswertung

Auswertung Reihungstest

Reihungstest wählen: 
Studiengang:  '; echo 'bis Datum: '; ?>
Auswertung auf Fragenebene

Technischer Teil

$gbt->name"; ?> Punkte"; ?> "; // foreach ($gebiet AS $gbt) if (isset($erg->gebiet[$gbt->gebiet_id])) echo ''; else echo ''; echo ''; echo ''; } } ?>
PrestudentIDNachnameVornamen GebDatumG RegistriertSTGStudiengang Gesamt
ProzentProzentpunkte
$erg->prestudent_id$erg->nachname$erg->vorname$erg->gebdatum$erg->geschlecht $erg->registriert$erg->stg_kurzbz$erg->stg_bez$erg->idnachweis'.number_format($erg->gebiet[$gbt->gebiet_id]->punkte,2,',',' ').''.number_format($erg->gebiet[$gbt->gebiet_id]->prozent,2,',',' ').' %'.number_format($erg->gesamt,2,',',' ').'

Kategorien

$gbt->name"; ?> Punkte"; ?> "; // foreach ($kategorie AS $gbt) echo ''; echo ''; } ?>
IDNachnameVornamen GebDatumG RegistriertSTGStudiengang
Typ
$erg->pruefling_id$erg->nachname$erg->vorname$erg->gebdatum$erg->geschlecht $erg->registriert$erg->stg_kurzbz$erg->stg_bez$erg->idnachweis'.$erg->kategorie[$gbt->name]->punkte.''.$erg->kategorie[$gbt->name]->typ.'