function izvjestaj_predmet() { global $userid, $user_nastavnik, $user_studentska, $user_siteadmin; // Parametri upita $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // sumiraj kolone za zadace i prisustvo if ($_REQUEST['skrati'] == "da") { $skrati = 1; } else { $skrati = 0; } // ako ova opcija nije "da", prikazuje se samo zadnji rezultat na svakom parcijalnom, ili samo integralni ispit (ako je bolji) if ($_REQUEST['razdvoji_ispite'] == "da") { $razdvoji_ispite = 1; } else { $razdvoji_ispite = 0; } // nemoj razdvajati studente po grupama (neki su trazili ovu opciju) if ($_REQUEST['sastavi_grupe'] == "da") { $sastavi_grupe = 1; } else { $sastavi_grupe = 0; } // tabela za samo jednu grupu $grupa = intval($_REQUEST['grupa']); // Naziv predmeta - ovo ujedno provjerava da li predmet postoji $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { zamgerlog("nepoznat predmet {$predmet}", 3); // nivo 3: greska biguglyerror("Traženi predmet ne postoji"); return; } $q15 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q15) < 1) { zamgerlog("nepoznata akademska godina {$ag}", 3); // nivo 3: greska biguglyerror("Tražena godina ne postoji"); return; } ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <h1><?php echo mysql_result($q10, 0, 0); ?> </h1> <h3>Akademska <?php echo mysql_result($q15, 0, 0); ?> godina - Izvještaj o predmetu</h3> <?php // Koristimo ulogu iz /index.php da odredimo da li će se prikazati imena... $imenaopt = 1; if (!$user_nastavnik && !$user_studentska && !$user_siteadmin) { $imenaopt = 0; print "<p><b>Napomena:</b> Radi zaštite privatnosti studenata, imena će biti prikazana samo ako ste prijavljeni kao nastavnik/saradnik.</p>\n"; } // SPISAK SVIH STUDENATA NA PREDMETU // Razlog za generisanje ovog spiska je sporost podupita koji vraca studente // koji nisu ni u jednoj grupi // Umjesto toga cemo napraviti spisak studenata na predmetu, a zatim izbacivati // iz njega elemente po grupama, tako da ce na kraju ostati samo oni koji nisu // u grupi $imeprezime = $brindexa = array(); $q10 = myquery("select o.id, o.prezime, o.ime, o.brindexa from osoba as o, student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and sp.student=o.id"); while ($r10 = mysql_fetch_row($q10)) { $imeprezime[$r10[0]] = "{$r10['1']} {$r10['2']}"; $brindexa[$r10[0]] = "{$r10['3']}"; } uasort($imeprezime, "bssort"); // bssort - bosanski jezik // SPISAK GRUPA $spisak_grupa = array(); if ($sastavi_grupe == 0) { if ($grupa > 0) { // Samo odabrana grupa $q20 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and id={$grupa}"); $spisak_grupa[mysql_result($q40, 0, 0)] = mysql_result($q40, 0, 1); } else { // Spisak grupa moramo sortirati $q20 = myquery("select id,naziv from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0"); while ($r20 = mysql_fetch_row($q20)) { $spisak_grupa[$r20[0]] = $r20[1]; } natsort($spisak_grupa); // "natural sort" - npr. "Grupa 10" dodje iza "Grupa 9" } } // ID grupe "[Svi studenti]" trebamo saznati iz baze $q25 = myquery("select id from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=1"); if (mysql_num_rows($q25) < 1) { zamgerlog("predmet pp{$predmet} ag{$ag} nema virtuelnu grupu!", 3); $id_virtualne_grupe = 0; } else { $id_virtualne_grupe = mysql_result($q25, 0, 0); } $spisak_grupa[0] = "[Bez grupe]"; // Dodajemo "nultu grupu" kojoj svi pripadaju // SPISAK ISPITA // Ujedno generisemo dio zaglavlja tabele koji se tice ispita $broj_ispita = 0; $ispit_zaglavlje = ""; $oldkomponenta = 0; if ($razdvoji_ispite == 1) { $orderby = "i.datum,i.komponenta"; } else { $orderby = "i.komponenta,i.datum"; } // Prikazujemo I parc, pa II parc, pa Integralni, pa Usmeni (jer tim redom idu IDovi komponenti) $q30 = myquery("select i.id, UNIX_TIMESTAMP(i.datum), k.id, k.kratki_gui_naziv, k.tipkomponente, k.maxbodova, k.prolaz, k.opcija from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by {$orderby}"); $imaintegralni = 0; $ispit_id_array = $ispit_komponenta = $komponenta_maxb = array(); while ($r30 = mysql_fetch_row($q30)) { $komponenta = $r30[2]; $imeispita = $r30[3]; $tipkomponente = $r30[4]; if ($razdvoji_ispite == 1) { $ispit_zaglavlje .= "<td align=\"center\">{$imeispita}<br/> " . date("d.m.", $r30[1]) . "</td>\n"; $broj_ispita++; } else { if ($komponenta != $oldkomponenta && $tipkomponente != 2) { // 2 = integralni $oldkomponenta = $komponenta; $ispit_zaglavlje .= "<td align=\"center\">{$imeispita}</td>\n"; $broj_ispita++; } else { if ($tipkomponente == 2) { $imaintegralni = 1; } } } $ispit_id_array[] = $r30[0]; $ispit_komponenta[$r30[0]] = $r30[2]; // Pripremamo podatke o komponentama $komponenta_tip[$r30[2]] = $r30[4]; $komponenta_maxb[$r30[2]] = $r30[5]; $komponenta_prolaz[$r30[2]] = $r30[6]; $komponenta_opcija[$r30[2]] = "{$r30['7']}"; } // Racunamo koliko je bilo moguce ostvariti bodova na predmetu (radi racunanja procenta) $mogucih_bodova = 0; foreach ($komponenta_maxb as $kid => $kmb) { if ($komponenta_tip[$kid] != 2 || $imaintegralni == 1 && $broj_ispita < 2) { // osim ako je to jedini ispit $mogucih_bodova += $kmb; } } // Ostale komponente cemo sabrati nesto kasnije... // Za slucaj da prof odrzi integralni bez parcijalnih if ($imaintegralni == 1 && $broj_ispita < 2) { // $razvdoji_ispite=1; goto // Zaglavlje tabele ispita // no php ne podržava goto :( $broj_ispita = 2; // Ovo ce i dalje biti deformisano, ali nesto manje deformisano nego ranije } // SPISAK KOMPONENTI KOJE NISU ISPITI $ostale_komponente = array(); // 1 = parcijalni ispit, 2 = integralni ispit $q40 = myquery("select k.id, k.kratki_gui_naziv, k.tipkomponente, k.maxbodova from komponenta as k, akademska_godina_predmet as agp, tippredmeta_komponenta as tpk where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente!=1 and k.tipkomponente!=2 and agp.akademska_godina={$ag}"); while ($r40 = mysql_fetch_row($q40)) { $mogucih_bodova += $r40[3]; // Ako ispis nije skraceni, u ovu kategoriju stavljamo samo fiksne komponente if ($skrati != 1 && $r40[2] != 5) { continue; } // 5 = fiksna komponenta $ostale_komponente[$r40[0]] = $r40[1]; } // SPISAK ZADACA // Generise se dio zaglavlja za zadace i jos neki korisni podaci $zadaca_zaglavlje1 = $zadaca_zaglavlje2 = ""; if ($skrati != 1) { $komponente_zadace = $zadace_maxbodova = array(); $zad_id_array = $zad_brz_array = $zad_mogucih = array(); $q115 = myquery("SELECT k.id, k.gui_naziv, k.maxbodova FROM tippredmeta_komponenta as tpk, komponenta as k, akademska_godina_predmet as p\n\tWHERE p.predmet={$predmet} and p.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=4 and p.akademska_godina={$ag} ORDER BY k.id"); while ($r115 = mysql_fetch_row($q115)) { $komponente_zadace[] = $r115[0]; $zadace_maxbodova[$r115[0]] = $r115[2]; $brzadaca = 0; $zadace_zaglavlje = ""; // Razvrstavamo zadaće po komponentama $q120 = myquery("select id,naziv,zadataka,bodova from zadaca where predmet={$predmet} and akademska_godina={$ag} and komponenta={$r115['0']} order by id"); while ($r120 = mysql_fetch_row($q120)) { $zadace_zaglavlje .= "<td width=\"60\">{$r120['1']}</td>\n"; $zad_id_array[] = $r120[0]; $zad_brz_array[$r120[0]] = $r120[2]; $zad_mogucih[$r120[0]] = $r120[3]; $brzadaca++; $minw += 60; } if ($brzadaca > 0) { $zadaca_zaglavlje1 .= "<td align=\"center\" colspan=\"{$brzadaca}\">{$r115['1']}</td>\n"; $zadaca_zaglavlje2 .= $zadace_zaglavlje; } else { $zadaca_zaglavlje1 .= "<td align=\"center\" rowspan=\"2\">{$r115['1']}</td>\n"; } } } // CACHE REZULTATA ZADAĆA // Plan je sljedeći: // Učitamo sve podatke iz tabele u nizove i onda ih samo prikažemo // Trebalo bi biti brže od komplikovanih ifova i for petlji // kao i od subqueries koji su očajno spori if ($skrati != 1) { // Ako je skracen ispis, samo cemo koristiti komponentu $zadace = array(); if ($grupa > 0) { $q50 = myquery("SELECT z.zadaca,z.redni_broj,z.student,z.status,z.bodova\n\t\tFROM zadatak as z,student_labgrupa as sl \n\t\tWHERE z.student=sl.student and sl.labgrupa={$grupa}\n\t\tORDER BY id"); } else { $q50 = myquery("SELECT z.zadaca,z.redni_broj,z.student,z.status,z.bodova\n\t\tFROM zadatak as z,student_predmet as sp, ponudakursa as pk\n\t\tWHERE z.student=sp.student and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}\n\t\tORDER BY z.id"); } while ($r50 = mysql_fetch_row($q50)) { // Ne brojimo zadatke sa statusima 1 ("Ceka na pregled") i // 4 ("Potrebno pregledati") if ($r50[3] != 1 && $r50[3] != 4) { $bodova = $r50[4] + 1; } else { $bodova = -1; } // Dodajemo 1 na status kako bismo kasnije mogli znati da li // je vrijednost niza definisana ili ne. // undef ne radi :( // Slog sa najnovijim IDom se smatra mjerodavnim // Ostali su u bazi radi historije $zadace[$r50[0]][$r50[1]][$r50[2]] = $bodova; } } // ------------------------------- // GLAVNA PETLJA ZA GRUPE foreach ($spisak_grupa as $grupa_id => $grupa_naziv) { /* if ($j<$br_grupa) { $r40 = mysql_fetch_row($q40); $grupa_id = $r40[0]; $grupa_naziv = $r40[1]; } else { $grupa_id = 0; $grupa_naziv = "[Bez grupe]"; }*/ // Ako je nulta grupa prazna (svi studenti rasporedjeni u grupe), preskacemo je if ($grupa_id == 0 && count($imeprezime) == 0) { continue; } // ----- GENERISANJE ZAGLAVLJA ----- $zaglavlje1 = $zaglavlje2 = ""; // Dva reda zaglavlja tabele // ZAGLAVLJE ZA PUNI ISPIS KOMPONENTI if ($skrati != 1) { // Ovdje dodati zaglavlje za eventualno nove komponente ... // Zaglavlje za prisustvo i spisak casova u ovoj grupi $prisustvo_id_array = array(); $prisustvo_casovi = array(); $prisustvo_mogucih = array(); $q105 = myquery("SELECT k.id, k.gui_naziv, k.maxbodova FROM tippredmeta_komponenta as tpk, komponenta as k, akademska_godina_predmet as p WHERE p.predmet={$predmet} and p.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente=3 and p.akademska_godina={$ag} ORDER BY k.id"); while ($r105 = mysql_fetch_row($q105)) { $prisustvo_id_array[] = $r105[0]; $prisustvo_mogucih[$r105[0]] = $r105[2]; if ($skrati != 1) { $cas_id_array = array(); $casova = 0; $prisustvo_zaglavlje = ""; if ($grupa_id != 0) { $q110 = myquery("SELECT id,datum,vrijeme FROM cas where labgrupa={$grupa_id} and komponenta={$r105['0']} ORDER BY datum, vrijeme"); } else { if ($id_virtualne_grupe > 0) { $q110 = myquery("SELECT id,datum,vrijeme FROM cas where labgrupa={$id_virtualne_grupe} and komponenta={$r105['0']} ORDER BY datum, vrijeme"); } else { continue; } } // ako nema virtualne grupe - preskacemo while ($r110 = mysql_fetch_row($q110)) { $cas_id = $r110[0]; list($cas_godina, $cas_mjesec, $cas_dan) = explode("-", $r110[1]); list($cas_sat, $cas_minuta, $cas_sekunda) = explode(":", $r110[2]); $prisustvo_zaglavlje .= "<td align=\"center\">{$cas_dan}.{$cas_mjesec}<br/>{$cas_sat}:{$cas_minuta}"; $prisustvo_zaglavlje .= "</td>\n"; $cas_id_array[] = $cas_id; $casova++; $minw += 40; } $prisustvo_casovi[$r105[0]] = $cas_id_array; // $prisustvo_maxbodova[$r195[0]] = $r195[2]; // $prisustvo_maxizostanaka[$r195[0]] = $r195[3]; // $prisustvo_minbodova[$r195[0]] = $r195[4]; if ($prisustvo_zaglavlje == "") { $prisustvo_zaglavlje = "<td> </td>"; $minw += 40; $casova = 1; } $zaglavlje1 .= "<td align=\"center\" colspan=\"" . ($casova + 1) . "\">{$r105['1']}</td>\n"; $zaglavlje2 .= $prisustvo_zaglavlje; $zaglavlje2 .= "<td>BOD.</td>\n"; } } $zaglavlje1 .= $zadaca_zaglavlje1; $zaglavlje2 .= $zadaca_zaglavlje2; } // if ($skrati != 1) // Ostale komponente foreach ($ostale_komponente as $kid => $knaziv) { $zaglavlje1 .= "<td rowspan=\"2\" align=\"center\">{$knaziv}</td>\n"; } ?> <center><h2><?php echo $grupa_naziv; ?> </h2></center> <table border="1" cellspacing="0" cellpadding="2"> <tr><td rowspan="2" align="center">R.br.</td> <?php if ($imenaopt) { ?> <td rowspan="2" align="center">Prezime i ime</td><?php } ?> <td rowspan="2" align="center">Br. indexa</td> <?php echo $zaglavlje1; ?> <td align="center" <?php if ($broj_ispita == 0) { ?> rowspan="2" <?php } else { ?> colspan="<?php echo $broj_ispita; ?> " <?php } ?> >Ispiti</td> <td rowspan="2" align="center"><b>UKUPNO</b></td> <td rowspan="2" align="center">Konačna<br/>ocjena</td> </tr> <tr> <?php echo $zaglavlje2; ?> <?php echo $ispit_zaglavlje; ?> </tr> <?php // ------ SPISAK STUDENATA ------ $idovi = array(); if ($grupa_id == 0) { $idovi = array_keys($imeprezime); } else { $q190 = myquery("select student from student_labgrupa where labgrupa={$grupa_id}"); while ($r190 = mysql_fetch_row($q190)) { $idovi[] = $r190[0]; } } // Petlja za ispis studenata $redni_broj = 0; foreach ($imeprezime as $stud_id => $stud_imepr) { if (!in_array($stud_id, $idovi)) { continue; } unset($imeprezime[$stud_id]); // Vise se nece javljati $redni_broj++; ?> <tr> <td><?php echo $redni_broj; ?> .</td> <?php if ($imenaopt) { ?> <td><?php echo $stud_imepr; ?> </td><?php } ?> <td><?php echo $brindexa[$stud_id]; ?> </td> <?php $ispis = ""; $bodova = 0; // Zbir bodova koje je student ostvario // PUNI ISPIS MODULA PRISUSTVO if ($skrati != 1) { foreach ($prisustvo_id_array as $pid) { $cas_id_array = $prisustvo_casovi[$pid]; $odsustvo = 0; if (count($cas_id_array) == 0) { $ispis .= "<td> </td>\n"; } else { foreach ($cas_id_array as $cid) { $q200 = mysql_query("select prisutan,plus_minus from prisustvo where student={$stud_id} and cas={$cid}"); if (mysql_num_rows($q200) > 0) { if (mysql_result($q200, 0, 0) == 1) { $ispis .= "<td bgcolor=\"#CCFFCC\" align=\"center\">DA</td>\n"; } else { $ispis .= "<td bgcolor=\"#FFCCCC\" align=\"center\">NE</td>\n"; $odsustvo++; } //$ocj = mysql_result($r4,0,1); } else { $ispis .= "<td bgcolor=\"#FFFFCC\"> / </td>\n"; } } } $q210 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$pid}"); if (mysql_num_rows($q210) == 0) { $pbodovi = 0; } else { $pbodovi = mysql_result($q210, 0, 0); } $ispis .= "<td>{$pbodovi}</td>\n"; $bodova += $pbodovi; } } // PUNI ISPIS MODULA ZADACE if ($skrati != 1) { $zbodova = 0; foreach ($zad_id_array as $n => $vid) { //print "VID: $vid ".$zad_brz_array[$vid]."</br>"; $ocjena = 0; $ima = 0; // Da li je poslao ijedan zadatak? $ispisati = 1; // Da li ima nepregledanih zadataka? for ($i = 1; $i <= $zad_brz_array[$vid]; $i++) { //print "OUT: $vid $i $stud_id ".$zadace[$vid][$i][$stud_id]."<br/>"; $bzad = $zadace[$vid][$i][$stud_id]; if ($bzad > 0) { // Svi bodovi su uvećani za 1 $ocjena += $bzad - 1; $ima = 1; } // Ispisujemo samo ako su svi zadaci pregledani if ($bzad == -1) { $ispisati = 0; } } if ($ima == 0 || $ispisati == 0) { $ispis .= "<td> / </td>\n"; } else { $ispis .= "<td> {$ocjena} </td>\n"; $zbodova = $zbodova + $ocjena; } } if (count($zad_id_array) == 0 && count($komponente_zadace) != 0) { $ispis .= "<td> </td>"; } foreach ($komponente_zadace as $kz) { $q220 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$kz}"); $zbodova = 0; while ($r220 = mysql_fetch_row($q220)) { $zbodova += $r220[0]; } $bodova += $zbodova; } } // Ovdje dodati puni ispis neke eventualno nove komponente // OSTALE KOMPONENTE foreach ($ostale_komponente as $kid => $knaziv) { $q230 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$kid}"); $obodova = 0; if (mysql_num_rows($q230) > 0) { $obodova = mysql_result($q230, 0, 0); } $ispis .= "<td>{$obodova}</td>"; $bodova += $obodova; } // ISPITI if ($broj_ispita == 0) { $ispis .= "<td> </td>"; } $komponente = $kmax = $kispis = array(); foreach ($ispit_id_array as $ispit) { $k = $ispit_komponenta[$ispit]; $q230 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$stud_id}"); if (mysql_num_rows($q230) > 0) { $ocjena = mysql_result($q230, 0, 0); if ($razdvoji_ispite == 1) { $ispis .= "<td align=\"center\">{$ocjena}</td>\n"; } if (!in_array($k, $komponente) || $ocjena > $kmax[$k]) { $kmax[$k] = $ocjena; $kispis[$k] = "<td align=\"center\">{$ocjena}</td>\n"; } } else { if ($razdvoji_ispite == 1) { $ispis .= "<td align=\"center\">/</td>\n"; } if ($kispis[$k] == "") { $kispis[$k] = "<td align=\"center\">/</td>\n"; } } if (!in_array($k, $komponente)) { $komponente[] = $k; } } // Prvo trazimo integralne ispite foreach ($komponente as $k) { if ($komponenta_tip[$k] == 2) { // Koje parcijalne ispite obuhvata integralni $dijelovi = explode("+", $komponenta_opcija[$k]); // Racunamo zbir $zbir = 0; $pao = 0; foreach ($dijelovi as $dio) { $zbir += $kmax[$dio]; if ($kmax[$dio] < $komponenta_prolaz[$dio]) { $pao = 1; } } // Eliminisemo parcijalne obuhvacene integralnim if ($kmax[$k] > $zbir || $pao == 1 && $kmax[$k] >= $komponenta_prolaz[$k]) { $bodova += $kmax[$k]; foreach ($dijelovi as $dio) { $kmax[$dio] = 0; $kispis[$dio] = ""; } $kispis[$k] = "<td align=\"center\" colspan=\"" . count($dijelovi) . "\">" . $kmax[$k] . "</td>\n"; } else { $kispis[$k] = ""; } } } // Sabiremo preostale parcijalne ispite na sumu bodova foreach ($komponente as $k) { if ($komponenta_tip[$k] != 2) { $bodova += $kmax[$k]; } if ($razdvoji_ispite != 1) { $ispis .= $kispis[$k]; } } // STATISTIKE $topscore[$stud_id] = $bodova; print $ispis; print "<td align=\"center\">{$bodova} (" . procenat($bodova, $mogucih_bodova) . ")</td>\n"; // Konacna ocjena $q508 = myquery("select ocjena from konacna_ocjena where student={$stud_id} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q508) > 0) { print "<td>" . mysql_result($q508, 0, 0) . "</td>\n"; } else { print "<td>/</td>\n"; } print "</tr>\n"; } print "</table><p> </p>"; } // while ($r40... }
function izvjestaj_anketa_sumarno() { ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php $anketa = intval($_REQUEST['anketa']); $q10 = myquery("SELECT UNIX_TIMESTAMP(aa.datum_otvaranja), UNIX_TIMESTAMP(aa.datum_zatvaranja), aa.naziv, ag.naziv, ag.id, ap.semestar, ap.predmet \r\n\t\tFROM anketa_anketa as aa, akademska_godina as ag, anketa_predmet as ap \r\n\t\tWHERE aa.id={$anketa} and ap.anketa={$anketa} and aa.akademska_godina=ag.id"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepostojeća anketa!"); zamgerlog("Pristup nepostojećoj anketi {$anketa}", 3); zamgerlog2("pristup nepostojećoj anketi", $anketa); return; } $datum_otvaranja = mysql_result($q10, 0, 0); $datum_zatvaranja = mysql_result($q10, 0, 1); $naziv_ankete = mysql_result($q10, 0, 2); $naziv_ag = mysql_result($q10, 0, 3); $ag = mysql_result($q10, 0, 4); $semestar = mysql_result($q10, 0, 5); $anketa_predmet = mysql_result($q10, 0, 6); // Ova vrsta izvještaja nema smisla za ankete koje su samo za jedan predmet // Stoga ćemo prikazati sve predmete u datoj akademskoj godini i semestru if ($anketa_predmet != 0) { niceerror("Ova anketa je vezana samo za jedan predmet"); print "Nema smisla prikazivati sumarni izvještaj za takvu anketu."; return; } if (!isset($_REQUEST['tip']) || $_REQUEST['tip'] == "izlaznost") { ?> <h2>Izlaznost na anketu <?php echo $naziv_ankete; ?> (godina <?php echo $naziv_ag; ?> )</h2> <?php } else { if ($_REQUEST['tip'] == "sveukupna") { ?> <h2>Sveukupna ocjena predmeta, anketa <?php echo $naziv_ankete; ?> (godina <?php echo $naziv_ag; ?> )</h2> <?php } } if ($datum_otvaranja > time()) { print "<p><font color=\"red\">Anketa još uvijek nije održana! Datum otvaranja je u budućnosti.</font></p>\n"; } else { if ($datum_zatvaranja > time()) { print "<p><font color=\"red\">Anketa je još uvijek otvorena! Datum zatvaranja je u budućnosti.</font></p>\n"; } } // Cachiramo broj studenata po predmetu u nizove $broj_studenata = array(); $q15 = myquery("SELECT pk.predmet, count(*) FROM student_predmet as sp, ponudakursa as pk WHERE sp.predmet=pk.id and pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} GROUP BY pk.id"); while ($r15 = mysql_fetch_row($q15)) { $broj_studenata[$r15[0]] += $r15[1]; } if (!isset($_REQUEST['tip']) || $_REQUEST['tip'] == "izlaznost") { // Glavna tabela ?> <table cellspacing="0" border="1"> <tr><th>Predmet</th><th>Uk. studenata</th><th>Nije popunilo anketu</th><th>Poništilo anketu</th><th>Učestvovalo u anketi</th></tr> <?php $predmet_bio = array(); $stari_studij = $stari_semestar = 0; $q20 = myquery("SELECT p.id, p.naziv, pk.studij, pk.semestar, s.naziv, p.institucija, s.institucija\r\n\t\tFROM predmet as p, ponudakursa as pk, studij as s\r\n\t\tWHERE pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} and pk.predmet=p.id and pk.studij=s.id\r\n\t\tand s.id<=10 " . "\r\n\t\tORDER BY s.tipstudija, s.naziv, pk.semestar, p.naziv"); while ($r20 = mysql_fetch_row($q20)) { // Svrstavamo predmete pod njihov odsjek if ($r20[5] != $r20[6] && $r20[5] != 1) { continue; } // Da li je predmet bio? $predmet = $r20[0]; if (in_array($predmet, $predmet_bio)) { continue; } array_push($predmet_bio, $predmet); // Preskačemo predmete bez studenata if ($broj_studenata[$predmet] == 0) { continue; } // Da li je novi studij $naziv_predmeta = $r20[1]; $studij = $r20[2]; $semestar = $r20[3]; if ($studij != $stari_studij || $semestar != $stari_semestar) { $naziv_studija = $r20[4]; print "<tr><td colspan='5'><b>{$naziv_studija}, {$semestar} semestar</b></td></tr>\n"; $stari_studij = $studij; $stari_semestar = $semestar; } print "<tr><td>{$naziv_predmeta}</td>\n"; /*$q30 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet=$r20[0] and pk.akademska_godina=$r20[4]"); $broj_studenata = mysql_result($q30,0,0);*/ $bs = $broj_studenata[$predmet]; // Kraće pisanje print "<td>{$bs}</td>\n"; $q40 = myquery("select id from anketa_rezultat where anketa={$anketa} and zavrsena='Y' and predmet={$r20['0']}"); $broj_neuradjenih = $bs - mysql_num_rows($q40); print "<td>{$broj_neuradjenih} (" . procenat($broj_neuradjenih, $bs) . ")</td>\n"; $ponistenih = $uradjenih = 0; while ($r40 = mysql_fetch_row($q40)) { $q50 = myquery("select count(*) from anketa_odgovor_rank where rezultat={$r40['0']}"); // TODO: dodati i ostale tipove pitanja if (mysql_result($q50, 0, 0) == 0) { $ponistenih++; } else { $uradjenih++; } } print "<td>{$ponistenih} (" . procenat($ponistenih, $bs) . ")</td>\n"; print "<td>{$uradjenih} (" . procenat($uradjenih, $bs) . ")</td>\n"; print "</tr>\n"; $suma_bs += $bs; $suma_neuradjenih += $broj_neuradjenih; $suma_ponistenih += $ponistenih; $suma_uradjenih += $uradjenih; } print "<tr><td colspan='5'><b>UKUPNO:</b></td></tr>\n"; print "<tr><td> </td><td>{$suma_bs}</td><td>{$suma_neuradjenih} (" . procenat($suma_neuradjenih, $suma_bs) . ")</td><td>{$suma_ponistenih} (" . procenat($suma_ponistenih, $suma_bs) . ")</td><td>{$suma_uradjenih} (" . procenat($suma_uradjenih, $suma_bs) . ")</td></tr>\n"; print "</table>\n"; return; } if ($_REQUEST['tip'] == "sveukupna") { // Anketno pitanje "sveukupna ocjena predmeta" $q17 = myquery("SELECT p.id, p.tekst FROM anketa_pitanje as p,anketa_tip_pitanja as t WHERE p.tip_pitanja = t.id and p.anketa={$anketa} and p.tip_pitanja=1 order by p.id"); $the_pitanje = 0; while ($r17 = mysql_fetch_row($q17)) { if (strstr($r17[1], "ocjena predmeta")) { $the_pitanje = $r17[0]; } } if ($the_pitanje == 0) { biguglyerror("Nije pronađeno anketno pitanje 'sveukupna ocjena predmeta'"); return; } // Glavna tabela ?> <table cellspacing="0" border="1"> <tr><th>Predmet</th><th>Sveukupna ocjena</th><th>Odgovora</th></tr> <?php $predmet_bio = array(); $stari_studij = $stari_semestar = 0; $q20 = myquery("SELECT p.id, p.naziv, pk.studij, pk.semestar, s.naziv, p.institucija, s.institucija\r\n\t\tFROM predmet as p, ponudakursa as pk, studij as s\r\n\t\tWHERE pk.akademska_godina={$ag} and pk.semestar mod 2={$semestar} and pk.predmet=p.id and pk.studij=s.id\r\n\t\tand s.id<=10 " . "\r\n\t\tORDER BY s.tipstudija, s.naziv, pk.semestar, p.naziv"); while ($r20 = mysql_fetch_row($q20)) { // Svrstavamo predmete pod njihov odsjek if ($r20[5] != $r20[6] && $r20[5] != 1) { continue; } // Da li je predmet bio? $predmet = $r20[0]; if (in_array($predmet, $predmet_bio)) { continue; } array_push($predmet_bio, $predmet); // Preskačemo predmete bez studenata if ($broj_studenata[$predmet] == 0) { continue; } // Da li je novi studij $naziv_predmeta = $r20[1]; $studij = $r20[2]; $semestar = $r20[3]; if ($studij != $stari_studij || $semestar != $stari_semestar) { $naziv_studija = $r20[4]; print "<tr><td colspan='3'><b>{$naziv_studija}, {$semestar} semestar</b></td></tr>\n"; $stari_studij = $studij; $stari_semestar = $semestar; } print "<tr><td>{$naziv_predmeta}</td>\n"; $bs = $broj_studenata[$predmet]; // Kraće pisanje $q40 = myquery("select id from anketa_rezultat where anketa={$anketa} and zavrsena='Y' and predmet={$r20['0']}"); $suma_ocjena = $br_ocjena = 0; while ($r40 = mysql_fetch_row($q40)) { $q50 = myquery("select izbor_id from anketa_odgovor_rank where rezultat={$r40['0']} and pitanje={$the_pitanje}"); if (mysql_num_rows($q50) > 0) { $suma_ocjena += mysql_result($q50, 0, 0); $br_ocjena++; } } if ($br_ocjena > 0) { $prosjek = round($suma_ocjena / $br_ocjena, 2); $suma_suma_ocjena += $suma_ocjena / $br_ocjena; } else { $prosjek = 0; } print "<td>{$prosjek}</td><td>{$br_ocjena} (" . procenat($br_ocjena, $bs) . ")</td>\n"; print "</tr>\n"; $suma_uradjenih += $br_ocjena; $suma_bs += $bs; $br_predmeta++; } print "<tr><td colspan='3'><b>UKUPNO:</b></td></tr>\n"; print "<tr><td> </td><td>" . round($suma_suma_ocjena / $br_predmeta, 2) . "</td><td>{$suma_uradjenih} (" . procenat($suma_uradjenih, $suma_bs) . ")</td></tr>\n"; print "</table>\n"; return; } // if ($_REQUEST['tip'] == "sveukupna") // naziv predmeta $q10 = myquery("select p.naziv,pk.akademska_godina,p.id from predmet as p, ponudakursa as pk where pk.predmet=p.id and p.id={$predmet} and pk.akademska_godina={$ag}; "); $naziv_predmeta = mysql_result($q10, 0, 0); // provjera da li je dati profesor zadužen na predmetu za koji želi pogledat izvještaj if (!$user_siteadmin && !$user_studentska) { $q20 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q20) == 0) { zamgerlog("nastavnik/izvjestaj_anketa privilegije", 3); zamgerlog2("privilegije"); biguglyerror("Nemate pravo pregledati ovaj izvještaj!"); return; } } // naziv akademske godine $q30 = myquery("select naziv from akademska_godina where id={$ag}"); $naziv_ak_god = mysql_result($q30, 0, 0); // da li postoji anketa? if ($anketa > 0) { $q40 = myquery("select id, aktivna from anketa_anketa where akademska_godina= {$ag} and id={$anketa}"); } else { $q40 = myquery("select aa.id, aa.aktivna from anketa_anketa as aa where aa.akademska_godina={$ag} and (select count(*) from anketa_rezultat as ar where ar.anketa=aa.id and ar.predmet={$predmet})>0 order by id desc"); // prikaži anketu koju je neko popunjavao if (mysql_num_rows($q40) < 1) { $q40 = myquery("select id, aktivna from anketa_anketa where akademska_godina={$ag}"); } } if (mysql_num_rows($q40) == 0) { biguglyerror("Za datu akademsku godinu nije kreirana anketa!"); return; } $anketa = mysql_result($q40, 0, 0); $aktivna = mysql_result($q40, 0, 1); if (!$user_siteadmin && !$user_studentska && $aktivna == 1) { ?> <h2>Pristup rezultatima ankete nije moguć</h2> <p>Odlukom uprave <?php echo $conf_skr_naziv_institucije_genitiv; ?> , nastavni ansambl ne može pristupiti rezultatima ankete do isteka određenog roka. Za dodatne informacije predlažemo da kontaktirate službe <?php echo $conf_skr_naziv_institucije_genitiv; ?> </p> <?php return; } if ($_REQUEST['komentar'] == "da") { // --------------------------------------------- IZVJESTAJ ZA KOMENTARE --------------------------------------------- $limit = 5; // broj kometara prikazanih po stranici $offset = intval($_REQUEST["offset"]); $q50 = myquery("select count(*) from anketa_rezultat where predmet={$predmet} and anketa = {$anketa} AND zavrsena='Y'"); $broj_anketa = mysql_result($q50, 0, 0); ?> <center> <h2>Prikaz svih komentara za predmet <?php echo $naziv_predmeta; ?> za akademsku godinu <?php echo $naziv_ak_god; ?> </h2> <h3>Broj studenata koji su pristupili anketi je: <?php echo $broj_anketa; ?> </h3> <?php // pokupimo sve komentare za dati predmet $q60 = myquery("SELECT count(*) FROM anketa_odgovor_text WHERE odgovor<>'' and rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet={$predmet} and anketa={$anketa} AND zavrsena='Y')"); $broj_odgovora = mysql_result($q60, 0, 0); $q61 = myquery(" SELECT odgovor FROM anketa_odgovor_text WHERE odgovor<>'' and rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet ={$predmet} and anketa={$anketa}) limit {$offset}, {$limit}"); if ($broj_odgovora == 0) { print "Nema rezultata!"; } else { if ($broj_odgovora > $limit) { $donja_granica = $offset + 1; $gornja_granica = $offset + 5; if ($gornja_granica > $broj_odgovora) { $gornja_granica = $broj_odgovora; } print "Prikazujem rezultate {$donja_granica}-{$gornja_granica} od {$broj_odgovora}. Stranica: "; for ($i = 0; $i < $broj_odgovora; $i += $limit) { $br = intval($i / $limit) + 1; if ($i == $offset) { print "<b>{$br}</b> "; } else { print "<a href=\"?sta=izvjestaj/anketa&predmet={$predmet}&ag={$ag}&komentar=da&offset={$i}\">{$br}</a> "; } } print "<br/>"; } } ?> <table width="650px" > <tr> <td bgcolor="#6699CC" height="10"> </td> </tr> <?php $i = 0; while ($r61 = mysql_fetch_row($q61)) { $komentar = str_replace("\n", "<br/>\n", $r61[0]); ?> <tr> <td><hr/></td> </tr> <tr> <td><?php echo $komentar; ?> </td> </tr> <?php $i++; } ?> </table> </center> <?php } else { if ($_REQUEST['rank'] == "da") { print "<center>"; print "<h2>Statistika za predmet {$naziv_predmeta} za akademsku godinu {$naziv_ak_god}</h2>\n"; $q100 = myquery("select count(*) from anketa_rezultat where predmet={$predmet} and anketa = {$anketa} AND zavrsena='Y'"); $broj_anketa = mysql_result($q100, 0, 0); print "<h3> Broj studenata koji su pristupili anketi je : {$broj_anketa} </h3>"; // broj rank pitanja $q110 = myquery("SELECT id FROM anketa_pitanje WHERE anketa ={$anketa} and tip_pitanja =1"); $i = 0; while ($r110 = mysql_fetch_row($q110)) { $j = $i + 1; $q120 = myquery("SELECT avg(izbor_id), count(izbor_id) FROM anketa_odgovor_rank WHERE rezultat IN (SELECT id FROM anketa_rezultat WHERE predmet={$predmet} and anketa={$anketa} AND zavrsena='Y') AND pitanje = {$r110['0']}"); $prosjek[$i] = mysql_result($q120, 0, 0); $broj_odgovora[$i] = mysql_result($q120, 0, 1); $i++; } // kupimo pitanja $q130 = myquery("SELECT p.id, p.tekst,t.tip FROM anketa_pitanje p,anketa_tip_pitanja t WHERE p.tip_pitanja = t.id and p.anketa ={$anketa} and p.tip_pitanja=1"); ?> <table width="800px"> <tr> <td bgcolor="#6699CC"> Pitanje</td><td bgcolor="#6699CC" width='350px'> Prosjek odgovora</td> </tr> <tr> <td colspan="2"><hr/></td> </tr> <tr> <td> </td><td bgcolor="#FF0000" width='350px'> MAX </td> </tr> <?php $i = 0; while ($r130 = mysql_fetch_row($q130)) { $tekst = $r130[1]; $procenat = $prosjek[$i] / 5 * 100; ?> <tr height='35'> <td><?php echo $i + 1; ?> . <?php echo $tekst; ?> <br><font color="#999999"><small>(<?php echo $broj_odgovora[$i]; ?> odgovora)</small></font></td> <td> <table border='0' width='350px'> <tr> <td height='30' width='<?php echo $procenat; ?> %' bgcolor="#CCCCFF"> <?php echo round($prosjek[$i], 2); ?> </td> <td width='<?php echo 100 - $procenat; ?> %'> </td> </tr></table> </td> </tr> <?php $i++; } $prosjek = array_sum($prosjek) / count($prosjek); // PITANJA TIPA IZBOR //kupimo pitanja $q200 = myquery("SELECT p.id, p.tekst,t.tip FROM anketa_pitanje p,anketa_tip_pitanja t WHERE p.tip_pitanja = t.id and p.anketa ={$anketa} and (p.tip_pitanja=3 or p.tip_pitanja=4)"); if (mysql_num_rows($q200) > 0) { ?> <table width="800px" > <tr> <td bgcolor="#6699CC"> Pitanje </td> <td bgcolor="#6699CC" width='350px'> Odgovori </td> </tr> <tr> <td colspan="2"> <hr/> </td> </tr> <tr > <td > </td> <td bgcolor="#FF0000" width='350px'> MAX </td> </tr> <?php $i = 0; while ($r200 = mysql_fetch_row($q200)) { $id_pitanja = $r200[0]; $tekst = $r200[1]; $ispis_odgovori = ""; $q210 = myquery("select ip.id, ip.izbor, ip.dopisani_odgovor, count(oi.rezultat) from anketa_izbori_pitanja as ip, anketa_odgovor_izbori as oi where ip.pitanje={$id_pitanja} and oi.pitanje={$id_pitanja} and oi.izbor_id=ip.id group by ip.id"); while ($r210 = mysql_fetch_row($q210)) { $ispis_odgovori .= $r210[1] . " - " . $r210[3] . " (" . round($r210[3] / $broj_anketa, 4) * 100 . "%)<br>\n"; if ($r210[2] == 1) { $q220 = myquery("select odgovor from anketa_odgovor_dopisani where pitanje={$id_pitanja}"); if (mysql_num_rows($q220) == 0) { continue; } $ispis_odgovori .= "<font color=\"#BBBBBB\">"; while ($r220 = mysql_fetch_row($q220)) { $ispis_odgovori .= """ . $r220[0] . "" "; } $ispis_odgovori .= "</font><br>\n"; } } $q230 = myquery("select count(distinct rezultat) from anketa_odgovor_izbori where pitanje={$id_pitanja}"); $q240 = myquery("select count(*) from anketa_odgovor_izbori where pitanje={$id_pitanja} and izbor_id=0"); $neodg = $broj_anketa - mysql_result($q230, 0, 0) + mysql_result($q240, 0, 0); $ispis_odgovori .= "<i>neodgovoreno: {$neodg} (" . round($neodg / $broj_anketa, 4) * 100 . "%)</i>"; ?> <tr height='35'> <td><?php echo $i + 1; ?> . <?php echo $tekst; ?> </td> <td width="100"><?php echo $ispis_odgovori; ?> </td> </tr> <tr><td colspan="2"><hr></td></tr> <?php $i++; } } // mysql_num_rows($result202) ?> <tr> <td colspan="2"> <hr/> </td> </tr> <!--tr > <td align="right"> Prosjek predmeta : </td> <td width='350px'> <strong><?php echo round($prosjek, 2); ?> </strong> </td> </tr--> </table> </center> <?php } } }
function izvjestaj_ispit() { global $userid, $user_nastavnik, $user_studentska, $user_siteadmin; ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php // Parametar $ispit = intval($_REQUEST['ispit']); if ($_REQUEST['ispit'] == "svi") { // Privremeno vrsim redirekciju na izvjestaj/statistika_predmeta $ponudakursa = intval($_REQUEST['predmet']); $qtmp = myquery("select predmet, akademska_godina from ponudakursa where id={$ponudakursa}"); $predmet = mysql_result($qtmp, 0, 0); $ag = mysql_result($qtmp, 0, 1); ?> <script language="JavaScript"> location.href='?sta=izvjestaj/statistika_predmeta&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> '; </script> <?php return; } // Elementarna provjera privilegija /*if (!$user_nastavnik && !$user_studentska && !$user_siteadmin) { biguglyerror("Nemate permisije za pristup ovom izvještaju"); zamgerlog ("pristup izvjestaju a nije NBA",3); // 3 = error return; }*/ // Upit za ispit $q10 = myquery("select UNIX_TIMESTAMP(i.datum), k.gui_naziv, k.maxbodova, k.prolaz, i.predmet, i.akademska_godina from ispit as i, komponenta as k where i.id={$ispit} and i.komponenta=k.id"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat ispit!"); zamgerlog("nepoznat ispit {$ispit}", 3); return; } $finidatum = date("d. m. Y.", mysql_result($q10, 0, 0)); $naziv = mysql_result($q10, 0, 1); $maxbodova = mysql_result($q10, 0, 2); $prolaz = mysql_result($q10, 0, 3); $predmet = mysql_result($q10, 0, 4); $ag = mysql_result($q10, 0, 5); // Dodatna provjera privilegija if (!$user_studentska && !$user_siteadmin) { $q20 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q20) < 1) { biguglyerror("Nemate permisije za pristup ovom izvještaju"); zamgerlog("nije admin predmeta pp{$predmet} godina ag{$ag}", 3); // 3 = error return; } } // Naziv predmeta, akademska godina $q21 = myquery("select naziv from predmet where id={$predmet}"); $q22 = myquery("select naziv from akademska_godina where id={$ag}"); ?> <p> </p> <h1><?php echo mysql_result($q21, 0, 0); ?> <?php echo mysql_result($q22, 0, 0); ?> </h1> <h3><?php echo $naziv; ?> , <?php echo $finidatum; ?> </h3> <?php // Opste statistike - pojedinacni ispit $q200 = myquery("select count(*) from ispitocjene where ispit={$ispit}"); $ukupno_izaslo = mysql_result($q200, 0, 0); $q210 = myquery("select count(*) from ispitocjene where ispit={$ispit} and ocjena>={$prolaz}"); $polozilo = mysql_result($q210, 0, 0); $q220 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); $slusa_predmet = mysql_result($q220, 0, 0); ?> <p>Ukupno izašlo studenata: <b><?php echo $ukupno_izaslo; ?> </b><br/> Položilo: <b><?php echo $polozilo; ?> </b><br/> Prolaznost: <b><?php echo procenat($polozilo, $ukupno_izaslo); ?> </b></p> <p>Od studenata koji slušaju predmet, nije izašlo: <b><?php echo $slusa_predmet - $ukupno_izaslo; ?> </b></p><?php // Po broju bodova if ($maxbodova == 20) { $rezolucija = "0.5"; } else { $rezolucija = "1"; } print "<p>Distribucija po broju bodova:<br/>(Svaki stupac predstavlja broj studenata sa određenim brojem bodova. Rezolucija je {$rezolucija} bodova)</p>"; // Odredjivanje max. broja studenata po koloni radi skaliranja grafa $max = 0; for ($i = 0; $i <= $maxbodova; $i += $rezolucija) { $q300 = myquery("select COUNT( * ) FROM ispitocjene WHERE ispit={$ispit} and ocjena>={$i} and ocjena<" . ($i + $rezolucija)); $studenata = mysql_result($q300, 0, 0); if ($studenata > $max) { $max = $studenata; } } if ($max > 0) { $koef = 80 / $max; } else { $koef = 80; } ?> <table border="0" cellspacing="0" cellpadding="0"><tr><?php for ($i = 0; $i <= $maxbodova; $i += $rezolucija) { $q310 = myquery("select COUNT( * ) FROM ispitocjene WHERE ispit={$ispit} and ocjena>={$i} and ocjena<" . ($i + $rezolucija)); $height = intval(mysql_result($q310, 0, 0) * $koef); ?> <td width="10"> <table width="10" border="0" cellspacing="0" cellpadding="0"> <tr><td> <img src="images/fnord.gif" width="1" height="<?php echo 100 - $height; ?> "> </td></tr><tr><td bgcolor="#FF0000"> <img src="images/fnord.gif" width="1" height="<?php echo $height; ?> "> </td></tr> </table> </td><td> </td><?php } ?> </tr></table> <?php // Prolaznost po grupama $q315 = myquery("select count(*) from labgrupa where predmet={$predmet} and akademska_godina={$ag} and virtualna=0"); if (mysql_result($q315, 0, 0) < 2) { // Nema grupa, preskacemo ostatak izvjestaja return; } $ukupno = array(); $polozilo = array(); $prosjek = array(); $grupe = array(); $maxprol = 0; $maxprosj = 0; $q320 = myquery("select l.id,io.ocjena,l.naziv FROM ispitocjene as io, student_labgrupa as sl, labgrupa as l, ispit as i WHERE io.ispit={$ispit} and io.student=sl.student and sl.labgrupa=l.id and i.id=io.ispit and l.predmet=i.predmet and l.akademska_godina=i.akademska_godina and l.virtualna=0 order by l.id"); while ($r320 = mysql_fetch_row($q320)) { $grupe[$r320[0]] = $r320[2]; // Nazivi grupa $ukupno[$r320[0]]++; if ($r320[1] >= $prolaz) { $polozilo[$r320[0]]++; } $prosjek[$r320[0]] = ($prosjek[$r320[0]] * ($ukupno[$r320[0]] - 1) + $r320[1]) / $ukupno[$r320[0]]; if ($prosjek[$r320[0]] > $maxprosj) { $maxprosj = $prosjek[$r320[0]]; } $prolaznost = $polozilo[$r320[0]] / $ukupno[$r320[0]]; if ($prolaznost > $maxprol) { $maxprol = $prolaznost; } } print "<p>Prolaznost po grupama:</p>"; if ($maxprol > 0) { $koef = 80 / $maxprol; } else { $koef = 0; } ?> <table border="0" cellspacing="0" cellpadding="0"><tr><?php foreach ($grupe as $id => $naziv) { $height = intval($polozilo[$id] / $ukupno[$id] * $koef); $label = intval($polozilo[$id] / $ukupno[$id] * 100) . "%"; ?> <td width="50" valign="top"> <table width="50" border="0" cellspacing="0" cellpadding="0"> <tr><td align="center"><?php echo $label; ?> </td></tr> <tr><td> <img src="images/fnord.gif" width="1" height="<?php echo 100 - $height; ?> "> </td></tr><tr><td bgcolor="#FF0000"> <img src="images/fnord.gif" width="1" height="<?php echo $height; ?> "> </td></tr> <tr><td align="center"><?php echo $naziv; ?> </td></tr> </table> </td><td width="10"> </td><?php } print "</tr></table>\n"; // Broj bodova po grupama print "<p>Prosječan broj bodova po grupama:</p>"; if ($maxprosj > 0) { $koef = 80 / $maxprosj; } else { $koef = 0; } ?> <table border="0" cellspacing="0" cellpadding="0"><tr><?php foreach ($grupe as $id => $naziv) { $height = intval($prosjek[$id] * $koef); $label = intval($prosjek[$id] * 10) / 10; ?> <td width="50" valign="top"> <table width="50" border="0" cellspacing="0" cellpadding="0"> <tr><td align="center"><?php echo $label; ?> </td></tr> <tr><td> <img src="images/fnord.gif" width="1" height="<?php echo 100 - $height; ?> "> </td></tr><tr><td bgcolor="#FF0000"> <img src="images/fnord.gif" width="1" height="<?php echo $height; ?> "> </td></tr> <tr><td align="center"><?php echo $naziv; ?> </td></tr> </table> </td><td width="10"> </td><?php } print "</tr></table>\n"; }
function izvjestaj_anketa_semestralni() { $ak_god = intval($_REQUEST['akademska_godina']); $studij = intval($_REQUEST['studij']); $semestar = intval($_REQUEST['semestar']); $dodaj = ""; if ($semestar % 2 == 0) { $dodaj = "DESC"; } $q10 = myquery("select id from anketa_anketa where akademska_godina={$ak_god} order by id {$dodaj}"); if (mysql_num_rows($q10) == 0) { // da li postoji anketa uopce biguglyerror("Ne postoji anketa za datu akademsku godinu!"); return; } // ----------------------------------------- SEMESTRALNI IZVJEŠTAJ --------------------------------------- if ($_REQUEST['akcija'] == "semestralni") { $q20 = myquery("select naziv from akademska_godina where id={$ak_god}"); $naziv_ak_god = mysql_result($q20, 0, 0); if ($studij == -1) { $naziv_studija = "Svi studiji"; } else { $q30 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q30, 0, 0); } $id_ankete = mysql_result($q10, 0, 0); $q40 = myquery("SELECT count(*) FROM anketa_pitanje WHERE anketa={$id_ankete} and tip_pitanja=1"); $broj_rank_pitanja = mysql_result($q40, 0, 0); ?> <center> <h3>Sumarna statistika za rank pitanja za akademsku godinu <?php echo $naziv_ak_god; ?> </h3> <h3><?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar</h3> </center> <table border="0" align="center"> <tr> <td width='350px'>Prikaz prosjeka odgovora po pitanjima za sve predmete</td> </tr> <tr> <td><hr/></td> </tr> <?php // Biramo pitanja za glavnu petlju $q50 = myquery("SELECT p.id, p.tekst,t.tip FROM anketa_pitanje p,anketa_tip_pitanja t WHERE p.tip_pitanja = t.id and p.anketa={$id_ankete} and p.tip_pitanja=1"); $i = 0; while ($r50 = mysql_fetch_row($q50)) { $i++; print "<tr><td align='center'>{$i}. {$r50['1']}</td><tr>"; print "<td><img src='?sta=izvjestaj/chart_semestralni&pitanje={$r50['0']}&semestar={$semestar}&studij={$studij}'><hr/></td></tr>"; } ?> </table> <?php } else { if ($_REQUEST['akcija'] == "semestralni_tab") { $q20 = myquery("select naziv from akademska_godina where id={$ak_god}"); $naziv_ak_god = mysql_result($q20, 0, 0); $tekst_pitanja = $_REQUEST['tekst_pitanja']; if ($studij == -1) { $naziv_studija = "Svi studiji"; } else { $q30 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q30, 0, 0); } $id_ankete = mysql_result($q10, 0, 0); $q40 = myquery("SELECT count(*) FROM anketa_pitanje WHERE anketa={$id_ankete} and tip_pitanja=1"); $broj_rank_pitanja = mysql_result($q40, 0, 0); // Spisak predmeta $predmeti = array(); // Ako je za studij odabrana Prva godina studija onda izbacujemo uslov // studij iz sljedeceg upita jer nakon zadnjih izmjena u Zamgeru ne postoji // više studij PGS vec su studenti odmah razvrstani po smjerovima, na ovaj // nacin objedinjujemo razultate svih ponuda kursa za isti predmet if ($studij == -1) { $q50 = myquery("select distinct p.id, p.kratki_naziv, pk.obavezan from ponudakursa pk,predmet p, studij as s, tipstudija as ts where p.id=pk.predmet and pk.semestar={$semestar} and pk.studij=s.id and s.tipstudija=2"); } else { $q50 = myquery("select distinct p.id, p.kratki_naziv, pk.obavezan \r\n\t\t\tfrom ponudakursa pk, predmet as p, institucija as i, studij as s, studij as s2\r\n\t\t\twhere p.id=pk.predmet and pk.semestar={$semestar} and s.id={$studij} and s.institucija=p.institucija and pk.studij=s2.id and s2.tipstudija=s.tipstudija"); } while ($r50 = mysql_fetch_row($q50)) { // Da li je ovaj predmet imao ijednu anketu? $q55 = myquery("select count(*) from anketa_rezultat where anketa={$id_ankete} and predmet={$r50['0']} and zavrsena='Y'"); if (mysql_result($q55, 0, 0) == 0) { continue; } $predmeti[$r50[0]] = $r50[1]; $obavezan[$r50[0]] = $r50[2]; } ?> <center> <h3>Sumarna statistika za rank pitanja za akademsku godinu <?php echo $naziv_ak_god; ?> - tabelarno</h3> <h3><?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar</h3> </center> <table border="1" align="center" cellpadding="2" cellspacing="0"> <thead> <tr> <th>Pitanje</th> <?php foreach ($predmeti as $naziv) { print "<th>{$naziv}</th>\n"; } ?> <th>Prosjek</th> </tr> </thead> <tbody> <?php // biramo pitanja za glavnu petlju $q60 = myquery("SELECT p.id, p.tekst,t.tip FROM anketa_pitanje p,anketa_tip_pitanja t WHERE p.tip_pitanja = t.id and p.anketa={$id_ankete} and p.tip_pitanja=1 order by p.id"); $i = 0; $maxpredmet = array(); while ($r60 = mysql_fetch_row($q60)) { $pitanje = $r60[0]; $i++; if (strstr($r60[1], "ocjena predmeta")) { print "<tr bgcolor=\"#FFFF00\">\n"; } else { print "<tr>\n"; } if ($tekst_pitanja === "da") { print "<td width=\"400\">{$i}. {$r60['1']}</td>\n"; } else { print "<td>{$i}</td>\n"; } $sumpitanje = 0; foreach ($predmeti as $pid => $pnaziv) { $q6730 = myquery("SELECT avg( b.izbor_id ), STDDEV_POP(b.izbor_id), count(*) FROM anketa_rezultat a, anketa_odgovor_rank b WHERE a.id = b.rezultat AND b.pitanje={$pitanje} AND a.predmet={$pid} AND zavrsena='Y'"); print "<td>" . round(mysql_result($q6730, 0, 0), 2) . "</td>\n"; $sumpitanje += mysql_result($q6730, 0, 0); if (mysql_result($q6730, 0, 2) > $maxpredmet[$pid]) { $maxpredmet[$pid] = mysql_result($q6730, 0, 2); } } if (count($predmeti) == 0) { print "<td>0</td>\n</tr>\n"; } else { print "<td>" . round($sumpitanje / count($predmeti), 2) . "</td>\n</tr>\n"; } } print "<tr>\n<td>Br.st</td>\n"; $sumaobaveznih = $brobaveznih = 0; foreach ($predmeti as $pid => $pnaziv) { print "<td>" . $maxpredmet[$pid] . "</td>\n"; if ($obavezan[$pid]) { $sumaobaveznih += $maxpredmet[$pid]; $brobaveznih++; } } if ($brobaveznih == 0) { print "<td>0</td></tr>\n"; } else { print "<td>" . round($sumaobaveznih / $brobaveznih, 1) . "</td></tr>\n"; } ?> </tbody> </table> <?php } else { if ($_REQUEST['akcija'] == "ects_krediti") { $pitanje = intval($_REQUEST['pitanje']); $q20 = myquery("select naziv from akademska_godina where id={$ak_god}"); $naziv_ak_god = mysql_result($q20, 0, 0); if ($studij == -1) { $naziv_studija = "Svi studiji"; } else { $q30 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q30, 0, 0); } $id_ankete = mysql_result($q10, 0, 0); $q40 = myquery("SELECT count(*) FROM anketa_pitanje WHERE anketa={$id_ankete} and tip_pitanja=1"); $broj_rank_pitanja = mysql_result($q40, 0, 0); // Spisak predmeta $predmeti = array(); // Ako je za studij odabrana Prva godina studija onda izbacujemo uslov // studij iz sljedeceg upita jer nakon zadnjih izmjena u Zamgeru ne postoji // više studij PGS vec su studenti odmah razvrstani po smjerovima, na ovaj // nacin objedinjujemo razultate svih ponuda kursa za isti predmet if ($studij == -1) { $q50 = myquery("select distinct p.id, p.kratki_naziv, p.ects, (p.sati_predavanja+p.sati_vjezbi+p.sati_tutorijala) from ponudakursa pk,predmet p, studij as s, tipstudija as ts where p.id=pk.predmet and pk.semestar={$semestar} and pk.studij=s.id and s.tipstudija=2"); } else { $q50 = myquery("select distinct p.id, p.kratki_naziv, p.ects, (p.sati_predavanja+p.sati_vjezbi+p.sati_tutorijala) from ponudakursa pk,predmet p where p.id=pk.predmet and pk.studij={$studij} and pk.semestar={$semestar}"); } while ($r50 = mysql_fetch_row($q50)) { // Da li je ovaj predmet imao ijednu anketu? if ($studij == -1) { $q55 = myquery("select count(*) from anketa_rezultat where anketa={$id_ankete} and predmet={$r50['0']} and zavrsena='Y'"); } else { $q55 = myquery("select count(*) from anketa_rezultat where anketa={$id_ankete} and predmet={$r50['0']} and zavrsena='Y' and studij={$studij}"); } if (mysql_result($q55, 0, 0) == 0) { continue; } $predmeti[$r50[0]] = $r50[1]; $predmet_ects[$r50[0]] = $r50[2]; $predmet_sati[$r50[0]] = $r50[3]; } ?> <center> <h3>Usporedba broja ECTS kredita sa anketnim pitanjem o vremenu</h3> <h3><?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar, <?php echo $naziv_ak_god; ?> </h3> </center> <table border="1" align="center" cellpadding="2" cellspacing="0"> <thead> <tr> <th>1<br />Predmet</th> <th>2<br />ECTS</th> <th>3<br />Uk. sati<br/> (k2 * 25 sati)</th> <th>4<br />Nastave</th> <th>5<br />Samostalno<br/> (k3 - k4)</th> <th>6<br />Sedmično<br/> (k5 / 15 sedmica)</th> <th>7<br />Sedmično<br/> (anketa)</th> <th>8<br />Razlika<br/> (k7 - k6) / k7 </th> <th>9<br />Broj anketiranih<br />studenata</th> <th>10<br />Korekcija<br/> ECTS kredita</th> </tr> </thead> <tbody> <?php foreach ($predmeti as $pid => $predmet_naziv) { $ects_sati = $predmet_ects[$pid] * 25; $samostalno_sati = $ects_sati - $predmet_sati[$pid]; $samostalno_sedmicno = $samostalno_sati / 15; $korekcija = ""; // Odredjujemo broj sati po anketi $suma = $broj = 0; if ($studij == -1) { $q0376 = myquery("select b.izbor_id from anketa_rezultat a, anketa_odgovor_rank b where a.id = b.rezultat and b.pitanje={$pitanje} and a.predmet={$pid} and zavrsena='Y'"); } else { $q0376 = myquery("select b.izbor_id from anketa_rezultat a, anketa_odgovor_rank b where a.id = b.rezultat and b.pitanje={$pitanje} and a.predmet={$pid} and zavrsena='Y' AND a.studij={$studij}"); } while ($r0376 = mysql_fetch_row($q0376)) { $suma += $r0376[0] * 2 - 1; $broj++; } if ($broj == 0) { continue; } // Niko nije odgovorio na pitanje o opterećenju $anketa_sati = $suma / $broj; $razlika_sati = $anketa_sati - $samostalno_sedmicno; if ($razlika_sati > 0.5 || $razlika_sati < -0.5) { $novi_sati = $predmet_sati[$pid] + $anketa_sati * 15; $korekcija = round($novi_sati / 25, 0); $kor_zarez = $novi_sati / 25 - $korekcija; if ($kor_zarez == -0.5) { $korekcija -= 0.5; } if ($kor_zarez > 0.3) { $korekcija += 0.5; } if ($korekcija == $predmet_ects[$pid]) { $korekcija = ""; } } $razlika_sati = procenat($razlika_sati, $samostalno_sedmicno); ?> <tr> <td><?php echo $predmet_naziv; ?> </td> <td><?php echo $predmet_ects[$pid]; ?> </td> <td><?php echo $ects_sati; ?> </td> <td><?php echo $predmet_sati[$pid]; ?> </td> <td><?php echo $samostalno_sati; ?> </td> <td><?php echo round($samostalno_sedmicno, 2); ?> </td> <td><?php echo round($anketa_sati, 2); ?> </td> <td><?php echo round($razlika_sati, 0); ?> %</td> <td><?php echo $broj; ?> </td> <td><?php echo $korekcija; ?> </td> </tr> <?php } /*while ($r60 = mysql_fetch_row($q60)) { $pitanje = $r60[0]; $i++; if (strstr($r60[1], "ocjena predmeta")) print "<tr bgcolor=\"#FFFF00\">\n"; else print "<tr>\n"; print "<td>$i</td>\n"; $sumpitanje=0; foreach ($predmeti as $pid => $pnaziv) { if ($studij==-1) $q6730 = myquery("SELECT avg( b.izbor_id ), STDDEV_POP(b.izbor_id), count(*) FROM anketa_rezultat a, anketa_odgovor_rank b WHERE a.id = b.rezultat AND b.pitanje=$pitanje AND a.predmet=$pid AND zavrsena='Y'"); else $q6730 = myquery("SELECT avg( b.izbor_id ), STDDEV_POP(b.izbor_id), count(*) FROM anketa_rezultat a, anketa_odgovor_rank b WHERE a.id = b.rezultat AND b.pitanje=$pitanje AND a.predmet=$pid AND zavrsena='Y' AND a.studij=$studij"); print "<td>".round(mysql_result($q6730,0,0),2)."</td>\n"; $sumpitanje += mysql_result($q6730,0,0); if (mysql_result($q6730,0,2) > $maxpredmet[$pid]) $maxpredmet[$pid]=mysql_result($q6730,0,2); } print "<td>".round($sumpitanje/count($predmeti),2)."</td>\n</tr>\n"; } print "<tr>\n<td>Br.st</td>\n"; foreach ($predmeti as $pid => $pnaziv) { print "<td>".$maxpredmet[$pid]."</td>\n"; } print "<td> </td></tr>\n";*/ ?> </tbody> </table> <?php } else { if ($_REQUEST['akcija'] == "po_smjerovima") { biguglyerror("Nije u funkciji... žalimo"); return; $q0111 = myquery("select naziv from akademska_godina where id = {$ak_god}"); $naziv_ak_god = mysql_result($q0111, 0, 0); //anketa za datu godinu: $q011 = myquery("select id from anketa_anketa where akademska_godina= {$ak_god}"); $anketa = mysql_result($q011, 0, 0); ?> <center> <h3>Sumarna statistika za rank pitanja za akademsku godinu <?php echo $naziv_ak_god; ?> po smjerovima</h3> <h3><?php if ($semestar == 1) { print "Zimski semestar"; } else { if ($semestar == 2) { print "Ljetni semestar"; } else { print "Cijela godina"; } } ?> </h3> </center> <table align="center"> <tr> <!-- FIXME povući studije iz baze --> <td align="center" bgcolor='#00FF00' height="20" width="150">PGS</td> <td align="center" bgcolor='#FF0000' width="150">RI</td> <td align="center" bgcolor='#0000FF' width="150">AE</td> <td align="center" bgcolor='#00FFFF' width="150">EE</td> <td align="center" bgcolor='#FFFF00' width="150">TK</td> </tr> <tr> <td colspan="5"> <img src='izvjestaj/po_smjerovima_linijski.php?anketa=<?php echo $anketa; ?> &semestar=<?php echo $semestar; ?> '> </td> </tr> </table> <?php } else { if ($_REQUEST['akcija'] == "distribucija") { $q0111 = myquery("select naziv from akademska_godina where id = {$ak_god}"); $naziv_ak_god = mysql_result($q0111, 0, 0); if ($studij == -1) { $naziv_studija = "Svi studiji"; } else { $q30 = myquery("select naziv from studij where id={$studij}"); $naziv_studija = mysql_result($q30, 0, 0); } ?> <center> <h3>Distribucija ocjena</h3> <h3><?php echo $naziv_studija; ?> , <?php echo $semestar; ?> . semestar, <?php echo $naziv_ak_god; ?> </h3> </center> <table border="1" align="center" cellpadding="2" cellspacing="0"> <thead> <tr> <th>Predmet</th> <th>Ocjena 6<br />(%)</th> <th>Ocjena 7<br />(%)</th> <th>Ocjena 8<br />(%)</th> <th>Ocjena 9<br />(%)</th> <th>Ocjena 10<br />(%)</th> <th>Odstupanje</th> </tr> </thead> <tbody> <?php // Kalkulacija prosjeka $q100 = myquery("select ocjena, count(*) from konacna_ocjena where akademska_godina={$ak_god} and ocjena>5 group by ocjena"); $sumatotal = 0; while ($r100 = mysql_fetch_row($q100)) { $suma_ocjena[$r100[0]] = $r100[1]; $sumatotal += $r100[1]; } ?> <tr bgcolor="#cccccc"> <td>ETF PROSJEK</td> <?php for ($i = 6; $i <= 10; $i++) { $procenat[$i] = procenat($suma_ocjena[$i], $sumatotal); // trebace nam za odstupanje ?> <td><?php echo $suma_ocjena[$i]; ?> <br /><?php echo $procenat[$i]; ?> </td> <?php } ?> <td>0</td> </tr> <?php if ($studij == -1) { $q110 = myquery("select distinct p.id, p.kratki_naziv from ponudakursa pk,predmet p, studij as s, tipstudija as ts where p.id=pk.predmet and pk.semestar={$semestar} and pk.studij=s.id and s.tipstudija=2"); } else { $q110 = myquery("select distinct p.id, p.kratki_naziv from ponudakursa pk,predmet p where p.id=pk.predmet and pk.studij={$studij} and pk.semestar={$semestar}"); } while ($r110 = mysql_fetch_row($q110)) { $q120 = myquery("select ocjena, count(*) from konacna_ocjena where akademska_godina={$ak_god} and ocjena>5 and predmet={$r110['0']} group by ocjena"); if (mysql_num_rows($q120) == 0) { continue; } $suma_ocjena_pr = array(); $sumatotal_pr = 0; $odstupanje = 0; while ($r120 = mysql_fetch_row($q120)) { $suma_ocjena_pr[$r120[0]] = $r120[1]; $sumatotal_pr += $r120[1]; } ?> <tr> <td><?php echo $r110[1]; ?> </td> <?php for ($i = 6; $i <= 10; $i++) { $procenat_pr = procenat($suma_ocjena_pr[$i], $sumatotal_pr); // trebace nam za odstupanje ?> <td><?php echo intval($suma_ocjena_pr[$i]); ?> <br /><?php echo $procenat_pr; ?> </td> <?php if (floatval($procenat_pr) > floatval($procenat[$i])) { $odstupanje += $procenat_pr - $procenat[$i]; } } ?> <td><?php echo $odstupanje; ?> %</td> </tr> <?php } ?> </tbody> </table> <?php } } } } } }
function izvjestaj_prolaznost() { ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php // parametri izvjestaja $akgod = intval($_REQUEST['_lv_column_akademska_godina']); $studij = intval($_REQUEST['_lv_column_studij']); $period = intval($_REQUEST['period']); // 0 = semestar, 1 = godina $semestar = intval($_REQUEST['semestar']); $godina = intval($_REQUEST['godina']); $ispit = intval($_REQUEST['ispit']); // 1 = prvi parc., 2 = drugi p., 3 = broj bodova, 4 = konacna ocjena, 5 = uslov za usmeni $cista_gen = intval($_REQUEST['cista_gen']); // 0 = svi, 1 = bez kolizije i prenesenih, 2 = redovni, 3 = cista gen. $studenti = intval($_REQUEST['studenti']); // 1 = prikazi pojedinacne studente $sortiranje = intval($_REQUEST['sortiranje']); // 0 = po prezimenu, 1 = po broju bodova, 2 = po broju indexa $oboji = $_REQUEST['oboji']; // "tajna" opcija za bojenje studija $tipstudija = intval($_REQUEST['tipstudija']); // "tajna" opcija koja se koristi u kombinaciji sa $studij = -1 (svi studiji) if ($tipstudija == 0) { $tipstudija = 2; } // Naslov $q20 = myquery("select naziv from akademska_godina where id={$akgod}"); ?> <h2>Prolaznost</h2> <p>Studij: <b><?php if ($studij == -1) { $q10 = myquery("select naziv from tipstudija where id={$tipstudija}"); } else { $q10 = myquery("select naziv from studij where id={$studij}"); } if (mysql_num_rows($q10) < 1) { niceerror("Nepoznat studij / tipstudija"); return; } if ($studij == -1) { print "Svi studenti (" . mysql_result($q10, 0, 0) . ")"; } else { print mysql_result($q10, 0, 0); } ?> </b><br/> Akademska godina: <b><?php echo mysql_result($q20, 0, 0); ?> </b><br/> Godina/semestar studija: <b><?php if ($period == 0) { if ($semestar == 0) { $semestar = 1; } print "{$semestar}. semestar"; } else { if ($godina == 0) { $godina = 1; } print "{$godina}. godina, "; } ?> </b><br/> Obuhvaćeni studenti: <b><?php if ($cista_gen == 0) { print "Redovni, Ponovci, Preneseni predmeti i kolizija"; } elseif ($cista_gen == 1) { print "Redovni, Ponovci"; } elseif ($cista_gen == 2) { print "Redovni studenti"; } elseif ($cista_gen == 3) { print "Čista generacija"; } elseif ($cista_gen == 4) { print "Ponovci"; } ?> </b><br/><br/> Vrsta izvještaja: <b><?php if ($ispit == 1) { print "I parcijalni ispit"; } elseif ($ispit == 2) { print "II parcijalni ispit"; } elseif ($ispit == 3) { print "Ukupni bodovi"; } elseif ($ispit == 4) { print "Konačna ocjena"; } elseif ($ispit == 5) { print "Uslovi za usmeni ispit"; } ?> </b><br/> </p><?php // Razni dodaci na upite ovisno o primljenim parametrima if ($period == 0) { // Semestar ili godina? $semestar_upit = "pk.semestar={$semestar}"; $sem_stud_upit = "semestar={$semestar}"; } else { $semestar_upit = "(pk.semestar=" . ($godina * 2 - 1) . " or pk.semestar=" . $godina * 2 . ")"; $sem_stud_upit = "semestar=" . ($godina * 2 - 1); // blazi kriterij za studente koji slusaju } $studij_upit_pk = ""; $studij_upit_ss = ""; $studij_upit_ss2 = ""; if ($studij > -1) { // Izbor studija $studij_upit_pk = "and pk.studij={$studij}"; $studij_upit_ss = "and ss.studij={$studij}"; $studij_upit_ss2 = "and ss2.studij={$studij}"; } else { $q25 = myquery("select id from studij where tipstudija={$tipstudija}"); while ($r25 = mysql_fetch_row($q25)) { if ($studij_upit_pk == "") { $studij_upit_pk = "and (pk.studij={$r25['0']}"; $studij_upit_ss = "and (ss.studij={$r25['0']}"; $studij_upit_ss2 = "and (ss2.studij={$r25['0']}"; } else { $studij_upit_pk .= " or pk.studij={$r25['0']}"; $studij_upit_ss .= " or ss.studij={$r25['0']}"; $studij_upit_ss2 .= " or ss2.studij={$r25['0']}"; } } $studij_upit_pk .= ")"; $studij_upit_ss .= ")"; $studij_upit_ss2 .= ")"; } // ($q30) Spisak predmeta na studij-semestru if ($studij == -1) { $q30 = myquery("select distinct p.id, p.naziv, 1 from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit} order by pk.obavezan desc, p.naziv"); } else { $q30 = myquery("select p.id, p.naziv, pk.obavezan from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit} order by pk.obavezan desc, p.naziv"); } // Dodatak upitu za studente $upit_studenti = ""; if ($cista_gen >= 1) { // Student trenutno upisan na dati studij/semestar $upit_studenti = "{$studij_upit_ss} and ss.{$sem_stud_upit} and ss.akademska_godina={$akgod}"; } if ($cista_gen == 2) { // Student nije nikada prije slusao dati studij/semestar // FIXME: pretpostavka je da IDovi akademskih godina idu redom $upit_studenti .= " and (select count(*) from student_studij as ss2 where ss2.student=io.student {$studij_upit_ss2} and ss2.{$sem_stud_upit} and ss2.akademska_godina<{$akgod})=0"; } if ($cista_gen == 3) { // Student nije nikada ponavljao godinu (nema zapisa o upisu u studij prije datog broja godina) // FIXME: pretpostavka je da IDovi akademskih godina idu redom $upisao_godine = $akgod; if ($period == 0) { $upisao_godine -= intval(($semestar + 1) / 2); } else { $upisao_godine -= $godina; } $upit_studenti .= " and (select count(*) from student_studij as ss2 where ss2.student=io.student and ss2.akademska_godina<={$upisao_godine})=0"; } if ($cista_gen == 4) { // Samo ponovci $upit_studenti .= " and (select count(*) from student_studij as ss2 where ss2.student=io.student {$studij_upit_ss2} and ss2.{$sem_stud_upit} and ss2.akademska_godina<{$akgod})>0"; } // PODIZVJESTAJ 1 // 1 = I parc., 2 = II parc., 4 = Konacna ocjena if ($ispit == 1 || $ispit == 2 || $ispit == 3 || $ispit == 4 || $ispit == 5) { global $polozio; $polozio = array(); // ne znam kako bez global :( global $suma_bodova; $suma_bodova = array(); global $brindexa; $brindexa = array(); // Zaglavlja tabela, ovisno o tome da li su navedeni pojedinacni studenti ili ne if ($studenti == 1) { print "<p>Pregled po studentima."; if ($sortiranje == 1 && $ispit == 4) { print " Spisak je sortiran po broju položenih predmeta i ocjenama.</p>\n"; } else { if ($sortiranje == 1) { print " Spisak je sortiran po broju položenih ispita i bodovima.</p>\n"; } else { print " Spisak je sortiran po prezimenu.</p>\n"; } } if ($oboji == "odsjek") { ?> <table width="100%" border="0" cellpadding="4" cellspacing="4"><tr> <td align="left"> <table border="1" bgcolor="#FF9999" width="100"><tr><td> </td></tr></table> Računarstvo i informatika </td> <td align="left"> <table border="1" bgcolor="#99FF99" width="100"><tr><td> </td></tr></table> Automatika i elektronika </td> <td align="left"> <table border="1" bgcolor="#9999FF" width="100"><tr><td> </td></tr></table> Elektroenergetika </td> <td align="left"> <table border="1" bgcolor="#FF99FF" width="100"><tr><td> </td></tr></table> Telekomunikacije </td> </tr></table> <?php } } if ($studenti == 0 && $ispit == 4) { // $studenti = prikaz individualnih studenata ?> <table border="1" cellspacing="0" cellpadding="2"> <tr><th>Predmet</th> <th>Upisalo</th> <th>Položilo</th> <th>%</th> </tr><?php } else { if ($studenti == 0 && ($ispit == 5 || $ispit == 3)) { ?> <table border="1" cellspacing="0" cellpadding="2"> <tr><th>Predmet</th> <th>Upisalo</th> <th>Ima uslove</th> <th>%</th> </tr><?php } else { if ($studenti == 0) { ?> <table border="1" cellspacing="0" cellpadding="2"> <tr><th><b>Predmet</b></th> <th><b>Izašlo</b></th> <th><b>Položilo</b></th> <th><b>%</b></th> </tr><?php } else { ?> <table border="1" cellspacing="0" cellpadding="2"> <tr> <th>R. br.</th> <th>Student</th> <th>Br. indeksa</th> <?php if ($studij == -1) { print "<th>Studij</th>\n"; } while ($r30 = mysql_fetch_row($q30)) { $kursevi[$r30[0]] = $r30[1]; $naziv = $r30[1]; if ($r30[2] == 0) { $naziv .= " *"; } print "<th>{$naziv}</th>\n"; } print "<th>UKUPNO:</th></tr>\n"; } } } // ($q40) Upit za spisak studenata if ($cista_gen == 0) { // Redovni studenti + ponovci + preneseni studenti // (svi upisani na predmete sa studija/semestra) $q40 = myquery("select distinct sp.student from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit}"); $uk_studenata = mysql_num_rows($q40); // Statisticki podaci o generaciji // Redovni studenti //$q50 = myquery("select count(*) from student_studij as ss where ss.akademska_godina=$akgod $studij_upit_ss and ss.$sem_stud_upit and (select count(*) from student_studij as ss2 where ss2.student=ss.student $studij_upit_ss2 and ss2.$sem_stud_upit and ss2.akademska_godina<$akgod)=0"); $q50 = myquery("select count(*) from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit} and ss.ponovac=0"); $redovnih = mysql_result($q50, 0, 0); // Ukupan broj studenata na studiju $q60 = myquery("select count(ss.student) from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit}"); // Posto su neki ponovci polozili sve iz ovog semestra, sljedeci upit vraca samo prenesene predmete // i kolizije kako bi ukupna statistika bila tacna, cak iako se suma ne poklapa if ($period == 0) { $prenesenoupit = "ss.semestar>{$semestar}"; // Pretpostavljamo da student ne može biti istovremeno upisan na drugi studij $kolizijaupit = "ss.semestar<{$semestar}"; } else { $prenesenoupit = "ss.semestar>" . $godina * 2; $kolizijaupit = "ss.semestar<" . ($godina * 2 - 1); } $q65 = myquery("SELECT count(distinct sp.student) FROM student_predmet as sp, ponudakursa as pk, student_studij as ss WHERE sp.predmet=pk.id {$studij_upit_pk} and {$semestar_upit} and pk.akademska_godina={$akgod} and ss.student=sp.student and {$prenesenoupit} and ss.akademska_godina={$akgod}"); $q67 = myquery("SELECT count(distinct sp.student) FROM student_predmet as sp, ponudakursa as pk, student_studij as ss WHERE sp.predmet=pk.id {$studij_upit_pk} and {$semestar_upit} and pk.akademska_godina={$akgod} and ss.student=sp.student and {$kolizijaupit} and ss.akademska_godina={$akgod}"); $ukupno_na_godini = mysql_result($q60, 0, 0); $ponovaca = $ukupno_na_godini - $redovnih; $prenesenih = mysql_result($q65, 0, 0); $kolizije = mysql_result($q67, 0, 0); $ispis_br_studenata = "Ukupno studenata:<br /> <b>{$redovnih}</b> studenata redovno upisalo godinu<br /> <b>{$ponovaca}</b> ponavlja godinu<br /> <b>{$prenesenih}</b> prenijelo predmet na iduću godinu<br /> <b>{$kolizije}</b> sluša predmete sa ove godine u koliziji"; // Ova statistika se izvrsava presporo: /* $q604a = myquery("select count(*) from student_studij as ss where ss.studij=$studij and ss.akademska_godina=$akgod and ss.$sem_stud_upit"); $q604 = myquery("select count(*) from student_studij as ss where ss.studij=$studij and ss.akademska_godina=$akgod and ss.$sem_stud_upit and (select count(*) from student_studij as ss2 where ss2.student=ss.student and ss2.studij=$studij and ss2.$sem_stud_upit and ss2.akademska_godina<$akgod)=0"); $q604b = myquery("select count(*) from student_labgrupa as sl, labgrupa as l, ponudakursa as pk where sl.labgrupa=l.id and l.predmet=pk.id and pk.akademska_godina=$akgod and pk.studij=$studij and $semestar_upit and (select count(*) from student_studij as ss where ss.student=sl.student and ss.studij=$studij and ss.akademska_godina=$akgod and ss.$sem_stud_upit)=0"); $redovnih = mysql_result($q604,0,0); $ponovaca = mysql_result($q604a,0,0) - $redovnih; $prenesenih = mysql_result($q604b,0,0); $ispis_br_studenata = "Predmete slušalo: <b>$redovnih</b> redovnih studenata + <b>$ponovaca</b> ponovaca + <b>$prenesenih</b> prenesenih predmeta"; */ } else { if ($cista_gen == 1) { // Redovni studenti i ponovci $q40 = myquery("select ss.student from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit}"); $q50 = myquery("select count(*) from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit} and (select count(*) from student_studij as ss2 where ss2.student=ss.student {$studij_upit_ss2} and ss2.{$sem_stud_upit} and ss2.akademska_godina<{$akgod})=0"); $uk_studenata = mysql_num_rows($q40); $redovnih = mysql_result($q50, 0, 0); $ponovaca = $uk_studenata - $redovnih; $ispis_br_studenata = "Semestar upisalo: <b>{$redovnih}</b> redovnih studenata + <b>{$ponovaca}</b> ponovaca"; } else { if ($cista_gen == 2) { // Samo redovni, bez ponovaca (nisu nikada slusali istu ak. godinu) $q40 = myquery("select ss.student from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit} and ss.ponovac=0 and (select count(*) from student_studij as ss2 where ss2.student=ss.student {$studij_upit_ss2} and ss2.{$sem_stud_upit} and ss2.akademska_godina<{$akgod})=0"); $uk_studenata = mysql_num_rows($q40); $ispis_br_studenata = "Semestar upisalo: <b>{$uk_studenata}</b> redovnih studenata"; } else { if ($cista_gen == 3) { // Studenti koji nisu nikada nista ponavljali (upisali fakultet prije semestar/2 godina) // FIXME: Pretpostavka je da IDovi akademskih godina idu redom $upisao_godine = $akgod; if ($period == 0) { $upisao_godine -= intval(($semestar + 1) / 2); } else { $upisao_godine -= $godina; } $q40 = myquery("select ss.student from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit} and ss.ponovac=0 and (select count(*) from student_studij as ss2 where ss2.student=ss.student and ss2.akademska_godina<={$upisao_godine})=0"); $uk_studenata = mysql_num_rows($q40); $ispis_br_studenata = "Semestar upisalo: <b>{$uk_studenata}</b> studenata "čiste generacije""; } else { if ($cista_gen == 4) { // Samo ponovci $q40 = myquery("select ss.student from student_studij as ss where ss.akademska_godina={$akgod} {$studij_upit_ss} and ss.{$sem_stud_upit} and ss.ponovac=1"); $uk_studenata = mysql_num_rows($q40); $ispis_br_studenata = "Semestar upisalo: <b>{$uk_studenata}</b> ponovaca"; } } } } } // Cache ispita za I i II parcijalni ispit // Gledamo samo redovni rok a.k.a. prvi ispit datog tipa $cache_ispiti = $cache_predmeti = array(); if ($ispit == 1 || $ispit == 2) { $q90 = myquery("select i.id, p.id from ispit as i, ponudakursa as pk, predmet as p where i.predmet=p.id and i.akademska_godina=pk.akademska_godina and pk.predmet=p.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit} and i.komponenta={$ispit} group by i.predmet,i.komponenta"); while ($r90 = mysql_fetch_row($q90)) { array_push($cache_ispiti, $r90[0]); array_push($cache_predmeti, $r90[1]); } } // Cache komponenti if ($ispit == 5) { $cache_komponente = array(); if ($studij == -1) { $q31 = myquery("select distinct p.id, p.naziv, 1 from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit} order by pk.obavezan desc, p.naziv"); } else { $q31 = myquery("select p.id, p.naziv, pk.obavezan from predmet as p, ponudakursa as pk where pk.predmet=p.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit} order by pk.obavezan desc, p.naziv"); } while ($r31 = mysql_fetch_row($q31)) { $predmet = $r31[0]; $cache_komponente[$predmet] = array(); $q95 = myquery("select k.id, k.prolaz, k.gui_naziv from komponenta as k, tippredmeta_komponenta as tpk, akademska_godina_predmet as agp where agp.predmet={$predmet} and agp.akademska_godina={$akgod} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente!=2 and k.gui_naziv != 'Usmeni' and k.gui_naziv != 'Završni ispit'"); while ($r95 = mysql_fetch_row($q95)) { $cache_komponente[$predmet][$r95[0]] = $r95[1]; } } } // GLAVNA PETLJA // Izracunavanje statistickih podataka $max_broj_polozenih = 0; while ($r40 = mysql_fetch_row($q40)) { $stud_id = $r40[0]; // Zaglavlje za poimenicni spisak studenata if ($studenti == 1) { $q100 = myquery("select ime, prezime, brindexa from osoba where id={$stud_id}"); $imeprezime[$stud_id] = mysql_result($q100, 0, 1) . " " . mysql_result($q100, 0, 0); $brindexa[$stud_id] = mysql_result($q100, 0, 2); /* Korisna informacija - kako je upotrijebiti? $q105 = myquery("select studij from student_studij where student=$stud_id"); $st_studij[$stud_id] = mysql_result($q105,0,0);*/ if ($oboji == "odsjek" || $studij == -1) { $q105 = myquery("select ss.studij, s.kratkinaziv from student_studij as ss, studij as s where ss.student={$stud_id} and ss.studij!=1 and ss.studij=s.id limit 1"); $student_studij[$stud_id] = mysql_result($q105, 0, 0); $student_studij_naziv[$stud_id] = mysql_result($q105, 0, 1); } } // Upit za I i II parcijalni ispit if ($ispit == 1 || $ispit == 2) { $broj_polozenih = 0; foreach ($cache_ispiti as $redni_broj => $id_ispita) { $id_predmeta = $cache_predmeti[$redni_broj]; $q100 = myquery("select ocjena from ispitocjene where ispit={$id_ispita} and student={$stud_id}"); if (mysql_num_rows($q100) > 0) { $ocjena = mysql_result($q100, 0, 0); $izaslo[$id_predmeta]++; if ($ocjena >= 10) { $polozilo[$id_predmeta]++; $broj_polozenih++; } if ($studenti == 1) { $ispitocjena[$stud_id][$id_predmeta] = $ocjena; $suma_bodova[$stud_id] += $ocjena; } } else { if ($studenti == 1) { $ispitocjena[$stud_id][$id_predmeta] = "/"; } } } $ispita_polozenih[$broj_polozenih]++; if ($broj_polozenih > $max_broj_polozenih) { $max_broj_polozenih = $broj_polozenih; } if ($studenti == 1) { $polozio[$stud_id] = $broj_polozenih; } // Po ukupnom broju bodova } else { if ($ispit == 3) { // $stud_predmeti_ar=array(); $broj_polozenih = 0; if ($studij == -1) { $q200 = myquery("select pk.predmet, kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id {$studij_upit_pk} and pk.akademska_godina={$akgod} and {$semestar_upit}"); } else { $q200 = myquery("select pk.predmet, kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id {$studij_upit_pk} and pk.akademska_godina={$akgod} and {$semestar_upit}"); } while ($r200 = mysql_fetch_row($q200)) { $suma_bodova[$stud_id] += $r200[1]; $ispitocjena[$stud_id][$r200[0]] += $r200[1]; // array_push($stud_predmeti_ar,$r200[0]); } foreach ($ispitocjena[$stud_id] as $id_predmeta => $m_bodova) { if ($m_bodova >= 40) { $polozilo[$id_predmeta]++; $broj_polozenih++; } $izaslo[$id_predmeta]++; } $ispita_polozenih[$broj_polozenih]++; if ($broj_polozenih > $max_broj_polozenih) { $max_broj_polozenih = $broj_polozenih; } if ($studenti == 1) { $polozio[$stud_id] = $broj_polozenih; } // Konacna ocjena } else { if ($ispit == 4) { if ($studij == -1) { $q110 = myquery("select pk.predmet,ko.ocjena from konacna_ocjena as ko, ponudakursa as pk, student_predmet as sp where ko.student={$stud_id} and ko.predmet=pk.predmet and ko.akademska_godina={$akgod} {$studij_upit_pk} and pk.akademska_godina={$akgod} and {$semestar_upit} and sp.student={$stud_id} and sp.predmet=pk.id and ko.odluka IS NULL"); } else { $q110 = myquery("select pk.predmet,ko.ocjena from konacna_ocjena as ko, ponudakursa as pk where ko.student={$stud_id} and ko.predmet=pk.predmet and ko.akademska_godina={$akgod} {$studij_upit_pk} and pk.akademska_godina={$akgod} and {$semestar_upit} and ko.odluka IS NULL"); } $broj_polozenih = 0; while ($r110 = mysql_fetch_row($q110)) { if ($r110[1] >= 6) { $polozilo[$r110[0]]++; $broj_polozenih++; } if ($studenti == 1) { $ispitocjena[$stud_id][$r110[0]] = $r110[1]; $suma_bodova[$stud_id] += $r110[1]; } } $ispita_polozenih[$broj_polozenih]++; if ($broj_polozenih > $max_broj_polozenih) { $max_broj_polozenih = $broj_polozenih; } if ($studenti == 1) { $polozio[$stud_id] = $broj_polozenih; } // Niz $izaslo punimo brojem studenata upisanih na predmet if ($studij == -1) { $q120 = myquery("select pk.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit}"); } else { $q120 = myquery("select pk.predmet from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit}"); } while ($r120 = mysql_fetch_row($q120)) { $izaslo[$r120[0]]++; if ($studenti == 1 && $ispitocjena[$stud_id][$r120[0]] < 6) { // Ako student sluša predmet, a nije ga položio, stavljamo minus $ispitocjena[$stud_id][$r120[0]] = "-"; } } // Ima li uslove za usmeni? } else { if ($ispit == 5) { $broj_polozenih = 0; if ($studij == -1) { $q120 = myquery("select pk.predmet, pk.id from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit}"); } else { $q120 = myquery("select pk.predmet, pk.id from student_predmet as sp, ponudakursa as pk where sp.student={$stud_id} and sp.predmet=pk.id and pk.akademska_godina={$akgod} {$studij_upit_pk} and {$semestar_upit}"); } while ($r120 = mysql_fetch_row($q120)) { $predmet = $r120[0]; $ponudakursa = $r120[1]; $izaslo[$predmet]++; $polozenih_komponenti = 0; foreach ($cache_komponente[$predmet] as $komponenta_id => $komponenta_prolaz) { $q250 = myquery("select bodovi from komponentebodovi where student={$stud_id} and predmet={$ponudakursa} and komponenta={$komponenta_id}"); if (mysql_num_rows($q250) > 0) { $bodovi = mysql_result($q250, 0, 0); $ispitocjena[$stud_id][$predmet] += $bodovi; if ($bodovi >= $komponenta_prolaz) { $polozenih_komponenti++; } } else { if ($komponenta_prolaz == 0) { $polozenih_komponenti++; } } } if ($polozenih_komponenti == count($cache_komponente[$predmet])) { $polozilo[$predmet]++; $broj_polozenih++; } } $ispita_polozenih[$broj_polozenih]++; if ($broj_polozenih > $max_broj_polozenih) { $max_broj_polozenih = $broj_polozenih; } if ($studenti == 1) { $polozio[$stud_id] = $broj_polozenih; } } } } } } // Ispis podataka if ($studenti == 0) { // Ispisujemo samo sumarne podatke while ($r30 = mysql_fetch_row($q30)) { $naziv = $r30[1]; if ($r30[2] == 0) { $naziv .= " *"; } ?> <tr><td><?php echo $naziv; ?> </td> <td><?php echo intval($izaslo[$r30[0]]); ?> </td> <td><?php echo intval($polozilo[$r30[0]]); ?> </td> <td><?php echo procenat($polozilo[$r30[0]], $izaslo[$r30[0]]); ?> </td></tr><?php } } else { // Sortiranje niza studenata if ($sortiranje == 0) { // po prezimenu i imenu uasort($imeprezime, "bssort"); // bssort - bosanski jezik } else { if ($sortiranje == 1) { // po broju bodova i polozenih ispita function tablica_sort($a, $b) { global $polozio, $suma_bodova; if ($polozio[$a] > $polozio[$b]) { return -1; } else { if ($polozio[$a] < $polozio[$b]) { return 1; } else { if ($suma_bodova[$a] > $suma_bodova[$b]) { return -1; } } } return 1; } uksort($imeprezime, "tablica_sort"); } else { if ($sortiranje == 2) { // po broju indeksa function indeks_sort($a, $b) { global $brindexa; if (intval($brindexa[$a]) < intval($brindexa[$b])) { return -1; } if (intval($brindexa[$a]) > intval($brindexa[$b])) { return 1; } return 0; } uksort($imeprezime, "indeks_sort"); } } } // Ispis redova za studente $rbr = 0; $oldsuma = -1; $oldpolozio = -1; foreach ($imeprezime as $stud_id => $imepr) { $rbr++; // Kod sortiranja po broju bodova, // redni broj se ne uvecava ako je broj bodova jednak if ($sortiranje == 0 || $oldsuma != $suma_bodova[$stud_id] || $oldpolozio != $polozio[$stud_id]) { $rrbr = $rbr; } $bgcolor = "#FFFFFF"; if ($oboji == "odsjek") { if ($student_studij[$stud_id] == 2) { $bgcolor = "#FFCCCC"; } else { if ($student_studij[$stud_id] == 3) { $bgcolor = "#CCFFCC"; } else { if ($student_studij[$stud_id] == 4) { $bgcolor = "#CCCCFF"; } else { if ($student_studij[$stud_id] == 5) { $bgcolor = "#FFCCFF"; } } } } } ?> <tr bgcolor="<?php echo $bgcolor; ?> "> <td><?php echo $rrbr; ?> </td> <td><?php echo $imepr; ?> </td> <td><?php echo $brindexa[$stud_id]; ?> </td><?php if ($studij == -1) { print "<td>" . $student_studij_naziv[$stud_id] . "</td>\n"; } foreach ($kursevi as $kurs_id => $kurs) { if ($ispitocjena[$stud_id][$kurs_id] === NULL) { $ispitocjena[$stud_id][$kurs_id] = "/"; } print "<td>" . $ispitocjena[$stud_id][$kurs_id] . "</td>\n"; } print "<td>" . $polozio[$stud_id] . "</td></tr>\n"; $oldsuma = $suma_bodova[$stud_id]; $oldpolozio = $polozio[$stud_id]; } // Sumarni podaci na kraju tabele print '<tr><td colspan="3" align="right">'; if ($ispit == 1 || $ispit == 2) { print 'PRISTUPILO ISPITU: </td>'; } else { print 'UPISALO PREDMET: </td>'; } if ($studij == -1) { print "<td> </td>"; } foreach ($kursevi as $kurs_id => $kurs) { print "<td>" . intval($izaslo[$kurs_id]) . "</td>\n"; } print "<td> </td></tr>\n"; print '<tr><td colspan="3" align="right">POLOŽILO: </td>'; if ($studij == -1) { print "<td> </td>"; } foreach ($kursevi as $kurs_id => $kurs) { print "<td>" . intval($polozilo[$kurs_id]) . "</td>\n"; } print "<td> </td></tr>\n"; print '<tr><td colspan="3" align="right">PROCENAT: </td>'; if ($studij == -1) { print "<td> </td>"; } foreach ($kursevi as $kurs_id => $kurs) { print "<td>" . procenat($polozilo[$kurs_id], $izaslo[$kurs_id]) . "</td>\n"; } print "<td> </td></tr>\n"; } // Statistika broja studenata print "</table>\n* Predmet je izborni\n\n<br/><br/>{$ispis_br_studenata}<br/><br/>\n"; // Suma po broju polozenih ispita/predmeta if ($ispit == 4) { $tekst = "predmeta"; } else { $tekst = "ispita"; } for ($i = $max_broj_polozenih; $i >= 0; $i--) { print "Položilo {$i} {$tekst}: <b>" . $ispita_polozenih[$i] . "</b> (" . procenat($ispita_polozenih[$i], $uk_studenata) . ")<br/>\n"; } } else { if ($studenti == 0 && $ispit == 3) { // Ovo će biti komplikovano.... } else { if ($studenti == 1 && $ispit == 3) { // tabela kurseva i studenata $kursevi = array(); $imeprezime = array(); $brind = array(); $sirina = 200; while ($r30 = mysql_fetch_row($q30)) { $kursevi[$r30[0]] = $r30[1]; $q601 = myquery("select s.id, s.ime, s.prezime, s.brindexa from student as s, student_labgrupa as sl, labgrupa as l where sl.student=s.id and sl.labgrupa=l.id and l.predmet={$r30['0']}"); while ($r601 = mysql_fetch_row($q601)) { $imeprezime[$r601[0]] = "{$r601['2']} {$r601['1']}"; $brind[$r601[0]] = $r601[3]; } $sirina += 200; } uasort($imeprezime, "bssort"); // bssort - bosanski jezik // array zadaća - optimizacija $kzadace = array(); foreach ($kursevi as $kurs_id => $kurs) { $q600a = myquery("select z.id, z.zadataka from zadaca as z, ponudakursa as pk where pk.id={$kurs_id} and pk.predmet=z.predmet and pk.akademska_godina=z.akademska_godina"); $tmpzadaca = array(); while ($r600a = mysql_fetch_row($q600a)) { $tmpzadaca[$r600a[0]] = $r600a[1]; } $kzadace[$kurs_id] = $tmpzadaca; } ?> <table width="<?php echo $sirina; ?> " border="1" cellspacing="0" cellpadding="2"> <tr> <td rowspan="2" valign="center">R. br.</td> <td rowspan="2" valign="center">Broj indeksa</td> <td rowspan="2" valign="center">Prezime i ime</td> <?php foreach ($kursevi as $kurs) { print '<td colspan="6" align="center">' . $kurs . "</td>\n"; } ?> <td rowspan="2" valign="center" align="center">UKUPNO</td> </tr> <tr> <?php for ($i = 0; $i < count($kursevi); $i++) { ?> <td align="center">I</td> <td align="center">II</td> <td align="center">Int</td> <td align="center">P</td> <td align="center">Z</td> <td align="center">Ocjena</td> <?php } print "</tr>\n"; $rbr = 1; // Slušalo / položilo predmet $slusalo = array(); $polozilo = array(); foreach ($imeprezime as $stud_id => $stud_imepr) { ?> <tr> <td><?php echo $rbr++; ?> </td> <td><?php echo $brind[$stud_id]; ?> </td> <td><?php echo $stud_imepr; ?> </td> <?php $polozio = 0; foreach ($kursevi as $kurs_id => $kurs) { $slusalo[$kurs_id]++; $q602 = myquery("select io.ocjena,i.komponenta from ispit as i, ispitocjene as io, ponudakursa as pk where io.ispit=i.id and io.student={$stud_id} and i.predmet=pk.predmet and i.akademska_godina=pk.akademska_godina and pk.id={$kurs_id}"); $ispit = array(); $ispit[1] = $ispit[2] = $ispit[3] = "/"; while ($r602 = mysql_fetch_row($q602)) { if ($r602[0] > $ispit[$r602[1]] || $ispit[$r602[1]] == "/") { $ispit[$r602[1]] = $r602[0]; } } for ($i = 1; $i < 4; $i++) { if ($ispit[$i] >= 0) { print "<td>{$ispit[$i]}</td>\n"; } else { print "<td> </td>\n"; } } $q603 = myquery("select count(*) from prisustvo as p,cas as c, labgrupa as l where p.student={$stud_id} and p.cas=c.id and c.labgrupa=l.id and l.predmet={$kurs_id} and p.prisutan=0"); if (mysql_result($q603, 0, 0) <= 3) { print "<td>10</td>\n"; $ukupno += 10; } else { print "<td>0</td>\n"; } $zadaca = 0; foreach ($kzadace[$kurs_id] as $zid => $zadataka) { for ($i = 1; $i <= $zadataka; $i++) { $q605 = myquery("select status,bodova from zadatak where zadaca={$zid} and redni_broj={$i} and student={$stud_id} order by id desc limit 1"); if ($r605 = mysql_fetch_row($q605)) { if ($r605[0] == 5) { $zadaca += $r605[1]; } } // $zadaca .= $i." "; } } print "<td>{$zadaca}</td>\n"; $q606 = myquery("select ko.ocjena from konacna_ocjena as ko, ponudakursa as pk where ko.student={$stud_id} and ko.predmet=pk.predmet and ko.akademska_godina=pk.akademska_godina and pk.id={$kurs_id}"); if (mysql_num_rows($q606) > 0) { $ocj = mysql_result($q606, 0, 0); print "<td>{$ocj}</td>\n"; if ($ocj >= 6) { $polozio++; } $polozilo[$kurs_id]++; } else { print "<td> </td>\n"; } } print "<td>{$polozio}</td></tr>\n"; $i++; } print '<tr><td colspan="3" align="right">SLUŠALO</td>'; foreach ($kursevi as $kurs_id => $kurs) { print '<td colspan="5">' . $slusalo[$kurs_id] . "</td>\n"; } print '<td> </td></tr><tr><td colspan="3" align="right">POLOŽILO</td>'; foreach ($kursevi as $kurs_id => $kurs) { if (intval($polozilo[$kurs_id]) == 0) { $polozilo[$kurs_id] = "0"; } print '<td colspan="5">' . $polozilo[$kurs_id] . "</td>\n"; } print '<td> </td></tr><tr><td colspan="3" align="right">PROCENAT</td>'; foreach ($kursevi as $kurs_id => $kurs) { $proc = intval($polozilo[$kurs_id] / $slusalo[$kurs_id] * 100) / 100; print '<td colspan="5">' . $proc . "%</td>\n"; } print '<td> </td></tr></table>'; } } } }
function izvjestaj_statistika_predmeta() { global $userid, $user_nastavnik, $user_studentska, $user_siteadmin; ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // akademska godina // Provjera permisija /*if (!$user_nastavnik && !$user_studentska && !$user_siteadmin) { biguglyerror("Nemate permisije za pristup ovom izvještaju"); zamgerlog ("pristup izvjestaju a nije NBA",3); // 3 = error return; }*/ if (!$user_studentska && !$user_siteadmin) { $q2 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q2) < 1) { biguglyerror("Nemate permisije za pristup ovom izvještaju"); zamgerlog("nije admin predmeta pp{$predmet}, godina ag{$ag}", 3); // 3 = error zamgerlog2("nije saradnik na predmetu", $predmet, $ag); // 3 = error return; } } // Naziv predmeta, akademske godine $q10 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("nepoznat predmet {$predmet}", 3); zamgerlog2("nepoznat predmet", $predmet); return; } $q12 = myquery("select tippredmeta from akademska_godina_predmet where predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("nepoznat predmet {$predmet}", 3); zamgerlog2("nije definisan tip predmeta", $predmet, $ag); return; } $tippredmeta = mysql_result($q12, 0, 0); $q15 = myquery("select naziv from akademska_godina where id={$ag}"); if (mysql_num_rows($q15) < 1) { biguglyerror("Nepoznata akademska godina"); zamgerlog("nepoznat akademska godina {$ag}", 3); zamgerlog2("nepoznat akademska godina", $ag); return; } ?> <p> </p> <h1><?php echo mysql_result($q10, 0, 0); ?> <?php echo mysql_result($q15, 0, 0); ?> </h1> <h3>Sumarna statistika za sve ispite</h3> <p>(Detaljnije informacije možete dobiti koristeći Puni izvještaj)</p> <?php // Tijelo izvjestaja // Osnovne statistike $q30 = myquery("select sp.student from student_predmet as sp, ponudakursa as pk where sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); $slusa_predmet = mysql_num_rows($q30); $q40 = myquery("select id from ispit where predmet={$predmet} and akademska_godina={$ag}"); $odrzano_ispita = mysql_num_rows($q40); $upisano_puta = array(); $maxput = 0; $upisano_puta[0] = $upisano_puta[1] = $upisano_puta[3] = $upisano_puta[4] = $upisano_puta[5] = 0; // Ako nije održan nijedan ispit, ipak je dobro da vidimo neke stastistike //if ($odrzano_ispita>0) { // Spisak ispita $ispiti = array(); while ($r40 = mysql_fetch_row($q40)) { array_push($ispiti, $r40[0]); } // Spisak komponenti $knazivi = $kprolaz = $ktip = $kpolozilo = $kfalisamo = array(); $q50 = myquery("select k.id, k.gui_naziv, k.prolaz, k.tipkomponente, k.uslov from komponenta as k, tippredmeta_komponenta as tpk where tpk.tippredmeta={$tippredmeta} and tpk.komponenta=k.id and k.gui_naziv != 'Usmeni'"); while ($r50 = mysql_fetch_row($q50)) { $knazivi[$r50[0]] = $r50[1]; // k.gui_naziv $kprolaz[$r50[0]] = $r50[2]; // k.prolaz $ktip[$r50[0]] = $r50[3]; // k.tipkomponente $kpolozilo[$r50[0]] = 0; $kuslov[$r50[0]] = $r50[4]; } // Prolazimo kroz studente $uslov40 = $uslov35 = $uslov0 = $nisu_izlazili = $polozilo = $integralno = $usmeni = $puk = 0; $uslovkomponente = 0; while ($r30 = mysql_fetch_row($q30)) { $student = $r30[0]; $uslovUslov = 1; // Da li je polozio predmet? $q52 = myquery("select count(*) from konacna_ocjena where student={$student} and predmet={$predmet} and akademska_godina={$ag} and ocjena>5"); $polozio_predmet = mysql_result($q52, 0, 0); if ($polozio_predmet > 0) { $polozilo++; } // Odredjujem ponudukursa $q55 = myquery("select pk.id from ponudakursa as pk, student_predmet as sp where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag}"); $ponudakursa = mysql_result($q55, 0, 0); // Koliko puta je slusao predmet? $q58 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$student} and sp.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina<{$ag}"); $puta = intval(mysql_result($q58, 0, 0)); if ($puta > $maxput) { $maxput = $puta; } $upisano_puta[$puta]++; // Komponente $sumbodovi = $pao = $izasao = 0; $komponente = $polozene_komponente = array(); foreach ($ktip as $komponenta => $tip) { $q60 = myquery("select bodovi from komponentebodovi where student={$student} and predmet={$ponudakursa} and komponenta={$komponenta}"); if (mysql_num_rows($q60) > 0) { $komponente[$komponenta] = 1; $bodovi = mysql_result($q60, 0, 0); if ($tip == 1 || $tip == 2) { $izasao++; } if ($kprolaz[$komponenta] == 0) { $kpolozilo[$komponenta]++; $polozene_komponente[$komponenta] = 1; } else { if ($bodovi >= $kprolaz[$komponenta]) { $kpolozilo[$komponenta]++; $polozene_komponente[$komponenta] = 1; } else { $pao++; if ($kuslov[$komponenta] == 1) { $uslovUslov = 0; } } } $sumbodovi += $bodovi; // Ako student nije imao bodova, neće postojati zapis u tabeli komponentebodovi } else { if ($kprolaz[$komponenta] == 0) { // Komponenta ne traži bodove za prolaz $kpolozilo[$komponenta]++; $knemabodova[$komponenta]++; $polozene_komponente[$komponenta] = 1; } else { if ($tip != 2) { // tip 2 = integralni ispit $pao++; if ($kuslov[$komponenta] == 1) { $uslovUslov = 0; } } } } } // Da li je zadovoljio uslove? if ($pao == 0) { if ($sumbodovi >= 40) { $uslov40++; } if ($sumbodovi >= 35) { $uslov35++; } if ($uslovUslov == 1) { $uslovkomponente++; } $uslov0++; if ($polozio_predmet == 0) { $usmeni++; } } else { if ($pao == 1) { // Studenti kojima je ostao samo jedan ispit i koji if ($polozio_predmet == 0) { foreach ($ktip as $komponenta => $tip) { if ($tip != 1) { continue; } if ($polozene_komponente[$komponenta] != 1) { $kfalisamo[$komponenta]++; } } } // PUK } else { if ($sumbodovi < 20) { $puk++; } else { if ($polozio_predmet == 0) { $integralno++; } } } } // Studenti koji nikada nisu izašli niti na jedan ispit if ($izasao == 0) { $nisu_izlazili++; } } $stvarno_slusa = $slusa_predmet - $nisu_izlazili; //} ?> <p>Ukupno upisalo predmet: <b><?php echo $slusa_predmet; ?> </b> studenata.<br/> <ul> <?php for ($i = 0; $i <= $maxput; $i++) { if ($upisano_puta[$i] == 0) { continue; } print "<li>" . ($i + 1) . ". put: <b>" . $upisano_puta[$i] . "</b> studenata</li>\n"; } print "</ul>\n"; if ($odrzano_ispita == 0) { ?> Nije održan nijedan ispit.</p> <p>Položilo (konačna ocjena 6 ili više): <b><?php echo $polozilo; ?> </b> studenata (<b><?php echo procenat($polozilo, $slusa_predmet); ?> </b>).</p><?php return; } else { ?> Nije izašlo ni na jedan ispit: <b><?php echo $nisu_izlazili; ?> </b> studenata.<br/> Položilo (konačna ocjena 6 ili više): <b><?php echo $polozilo; ?> </b> studenata (<b><?php echo procenat($polozilo, $slusa_predmet); ?> </b>).<br/> Zadovoljilo uslove za usmeni *:<br/> svi ispiti i min. 40 bodova: <b><?php echo $uslov40; ?> </b> studenata (<b><?php echo procenat($uslov40, $slusa_predmet); ?> </b>).<br/> svi ispiti i min. 35 bodova: <b><?php echo $uslov35; ?> </b> studenata (<b><?php echo procenat($uslov35, $slusa_predmet); ?> </b>).<br/> svi ispiti: <b><?php echo $uslov0; ?> </b> studenata (<b><?php echo procenat($uslov0, $slusa_predmet); ?> </b>).<br/> svi uslovni ispiti: <b><?php echo $uslovkomponente; ?> </b> studenata (<b><?php echo procenat($uslovkomponente, $slusa_predmet); ?> </b>).<br/> <br/> <?php // Komponente foreach ($ktip as $komponenta => $tip) { if ($kpolozilo[$komponenta] == 0 || $knemabodova[$komponenta] == $slusa_predmet) { continue; } // ova komponenta nije u funkciji if ($tip == 1 || $tip == 2) { ?> Položilo <?php echo $knazivi[$komponenta]; ?> ispit: <b><?php echo $kpolozilo[$komponenta]; ?> </b> studenata (<b><?php echo procenat($kpolozilo[$komponenta], $slusa_predmet); ?> </b>).<br/> <?php } } print "<br/>\n"; // Ostalo samo foreach ($ktip as $komponenta => $tip) { if ($kpolozilo[$komponenta] == 0 || $knemabodova[$komponenta] == $slusa_predmet) { continue; } // ova komponenta nije u funkciji if ($tip == 1) { if ($kfalisamo[$komponenta] == 0) { $kfalisamo[$komponenta] = "0"; } ?> Ostao samo <?php echo $knazivi[$komponenta]; ?> ispit: <b><?php echo $kfalisamo[$komponenta]; ?> </b> studenata.<br/> <?php } } ?> Ostao integralni ispit: <b><?php echo $integralno; ?> </b> studenata.<br/> Ostao usmeni ispit**: <b><?php echo $usmeni; ?> </b> studenata.<br/> Ponovo upisuje kurs***: <b><?php echo $puk; ?> </b> studenata.<br/> </p> <p><b>Napomene:</b><br> * - Pod "uslov za usmeni" misli se na uobičajenu šemu dva parcijalna ispita + jedan integralni ispit.<br> ** - Ovaj broj je određen pod pretpostavkom da ne postoji minimalan broj bodova kao uslov za usmeni ispit. Ukoliko postoji takav uslov, profesor posebno definiše na koji način ovi studenti mogu prikupiti preostale potrebne bodove.<br> *** - Studenti koji nisu skupili 20 bodova ne mogu pristupiti popravnom ispitu. Ukoliko se ovo pravilo ne odnosi na ovaj predmet, ove studente treba pribrojiti studentima koji izlaze na ispit integralno.</p> <?php // DISTRIBUCIJA OCJENA $moguce_ocjene = array(6, 7, 8, 9, 10); $broj_ocjena = array(); $uk_broj = 0; foreach ($moguce_ocjene as $moguca_ocjena) { $q100 = myquery("select count(*) from konacna_ocjena where predmet={$predmet} and akademska_godina={$ag} and ocjena={$moguca_ocjena}"); $br_ocjena = mysql_result($q100, 0, 0); $broj_ocjena[$moguca_ocjena] = $br_ocjena; $uk_broj += $br_ocjena; } if ($uk_broj > 0) { ?> <h4>Distribucija ocjena</h4> <div id="grafik"> <?php $max_ocjena = max($broj_ocjena); ?> <div style="width:250px;height:200px;margin:5px;"> <?php foreach ($broj_ocjena as $oc => $broj) { if ($broj == 0) { $broj_pixela_print = 170; } else { $broj_pixela = $broj / $max_ocjena * 200; $broj_pixela_print = intval(200 - $broj_pixela); } ?> <div style="width:45px; height:200px; background:green;margin-left:5px;float:left;"> <div style="width:45px;height:<?php echo $broj_pixela_print; ?> px;background:white;"> </div> <span style="color:white;font-size: 25px; text-align: center; "> <?php echo $oc; ?> </span> </div> <?php } ?> </div> <div style="width:250px;height:200px;margin:5px;"> <?php foreach ($broj_ocjena as $oc => $broj) { ?> <div style="width:45px; margin-left:5px; text-align: center; float:left; "> <?php echo $broj; ?> (<?php echo procenat($broj, $uk_broj); ?> ) </div> <?php } ?> </div> </div> <?php } return; } }
function izvjestaj_uspjesnost() { ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <h2>Uspješnost studenata i prosječno trajanje studija</h2> <?php // Parametar izvještaja $studij = intval($_REQUEST['studij']); if ($studij == 0) { $studij = intval($_REQUEST['_lv_column_studij']); } $q10 = myquery("SELECT s.naziv, ts.id, ts.trajanje, ts.ects FROM studij as s, tipstudija as ts WHERE s.id={$studij} AND s.tipstudija=ts.id"); if (mysql_num_rows($q10) < 1) { biguglyerror("Nepostojeći studij"); return; } $tipstudija = mysql_result($q10, 0, 1); $trajanje_studija = mysql_result($q10, 0, 2); // u semestrima $ects_studija = mysql_result($q10, 0, 2); ?> <h3><?php echo mysql_result($q10, 0, 0); ?> </h3> <table> <tr> <th> </th> <th>Upisalo<br> studij</th> <th>Završilo<br> studij</th> <th>Još uvijek<br> studira</th> <th>Odustalo od<br> studija</th> <th>Prosječno trajanje<br>(godina)</th> </tr> <?php $q20 = myquery("SELECT ss.student, ss.akademska_godina, ss.semestar, ss.studij FROM student_studij AS ss, studij AS s WHERE ss.studij=s.id AND s.tipstudija={$tipstudija} ORDER BY ss.akademska_godina, ss.semestar"); $student_pocetna_godina = $student_krajnja_godina = $student_krajnji_semestar = $student_studij = array(); $maxgodina = 0; while ($r20 = mysql_fetch_row($q20)) { $student_krajnja_godina[$r20[0]] = $r20[1]; $student_krajnji_semestar[$r20[0]] = $r20[2]; if (!isset($student_pocetna_godina[$r20[0]])) { $student_pocetna_godina[$r20[0]] = $r20[1]; } $maxgodina = $r20[1]; $student_studij[$r20[0]] = $r20[3]; // Zbog promjene odsjeka bitno je u kojoj godini je završio } $godina_upisalo = $godina_zavrsilo = $godina_studira = $godina_odustalo = $godina_suma_trajanja = array(); foreach ($student_pocetna_godina as $student => $pocetna_godina) { if ($student_studij[$student] != $studij) { continue; } $godina_upisalo[$pocetna_godina]++; // Studenti koji su potencijalno završili studij if ($student_krajnji_semestar[$student] == $trajanje_studija) { // Da bismo odredili da li je student završio studij, provjerićemo da li ima min. 180 ECTS kredita u zbiru // Koristimo početnu i krajnju godinu da eliminišemo predmete sa drugog ciklusa $q30 = myquery("SELECT SUM(p.ects) FROM predmet AS p, konacna_ocjena AS ko WHERE ko.student={$student} AND ko.predmet=p.id AND ko.akademska_godina>={$pocetna_godina} AND ko.akademska_godina<=" . $student_krajnja_godina[$student]); if (mysql_result($q30, 0, 0) >= $ects_studija) { $godina_zavrsilo[$pocetna_godina]++; $godina_suma_trajanja[$pocetna_godina] += $student_krajnja_godina[$student] - $pocetna_godina + 1; } else { if ($student_krajnja_godina[$student] == $maxgodina) { $godina_studira[$pocetna_godina]++; } else { $godina_odustalo[$pocetna_godina]++; } } } else { if ($student_krajnja_godina[$student] == $maxgodina) { $godina_studira[$pocetna_godina]++; } else { $godina_odustalo[$pocetna_godina]++; } } } // Ispisujemo tabelu samo za one akademske godine u kojima ima završenih studenata $suma_upisalo = $suma_zavrsilo = $suma_studira = $suma_odustalo = $suma_trajanje = 0; foreach ($godina_zavrsilo as $godina => $zavrsilo) { $prosjecno_trajanje = round($godina_suma_trajanja[$godina] / $zavrsilo, 2); $upisalo = $godina_upisalo[$godina]; // shortcut $q40 = myquery("SELECT naziv FROM akademska_godina WHERE id = {$godina}"); ?> <tr> <td><?php echo mysql_result($q40, 0, 0); ?> </td> <td><?php echo $upisalo; ?> </td> <td><?php echo $zavrsilo; ?> (<?php echo procenat($zavrsilo, $upisalo); ?> )</td> <td><?php echo $godina_studira[$godina]; ?> (<?php echo procenat($godina_studira[$godina], $upisalo); ?> )</td> <td><?php echo $godina_odustalo[$godina]; ?> (<?php echo procenat($godina_odustalo[$godina], $upisalo); ?> )</td> <td><?php echo $prosjecno_trajanje; ?> </td> </tr> <?php $suma_upisalo += $godina_upisalo[$godina]; $suma_zavrsilo += $zavrsilo; $suma_studira += $godina_studira[$godina]; $suma_odustalo += $godina_odustalo[$godina]; $suma_trajanje += $godina_suma_trajanja[$godina]; } $uk_prosjek_trajanja = round($suma_trajanje / $suma_zavrsilo, 2); ?> <tr> <td>UKUPNO</td> <td><?php echo $suma_upisalo; ?> </td> <td><?php echo $suma_zavrsilo; ?> (<?php echo procenat($suma_zavrsilo, $suma_upisalo); ?> )</td> <td><?php echo $suma_studira; ?> (<?php echo procenat($suma_studira, $suma_upisalo); ?> )</td> <td><?php echo $suma_odustalo; ?> (<?php echo procenat($suma_odustalo, $suma_upisalo); ?> )</td> <td><?php echo $uk_prosjek_trajanja; ?> </td> </tr> </table> <?php }
function izvjestaj_termini_ispita() { global $userid, $user_nastavnik, $user_studentska, $user_siteadmin; ?> <p>Univerzitet u Sarajevu<br/> Elektrotehnički fakultet Sarajevo</p> <p>Datum i vrijeme izvještaja: <?php echo date("d. m. Y. H:i"); ?> </p> <?php // Parametar if (isset($_REQUEST['termin'])) { $termin_id_url = intval($_REQUEST['termin']); } if (isset($_REQUEST['ispit'])) { $ispit = intval($_REQUEST['ispit']); } else { $q8 = myquery("select ispit from ispit_termin where id={$termin_id_url}"); if (mysql_num_rows($q8) < 1) { niceerror("Nepostojeći termin."); return; } $ispit = mysql_result($q8, 0, 0); } $q9 = myquery("select komponenta from ispit where id={$ispit}"); if (mysql_num_rows($q9) < 1) { niceerror("Nepostojeći ispit."); return; } $komp = mysql_result($q9, 0, 0); // Upit za ispit if ($komp <= 4) { // FIXME Oznake komponente <= 4 se koriste za regularne ispite $q10 = myquery("select UNIX_TIMESTAMP(i.datum), k.gui_naziv, i.predmet, i.akademska_godina from ispit as i, komponenta as k where i.id={$ispit} and i.komponenta=k.id"); } else { $q10 = myquery("select UNIX_TIMESTAMP(i.datum), d.naziv, i.predmet, i.akademska_godina from ispit as i, dogadjaj as d where i.id={$ispit} and i.komponenta=d.id"); } $predmet = mysql_result($q10, 0, 2); $ag = mysql_result($q10, 0, 3); $finidatum = date("d. m. Y.", mysql_result($q10, 0, 0)); $naziv = mysql_result($q10, 0, 1); // Dodatna provjera privilegija if (!$user_studentska && !$user_siteadmin) { $q20 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q20) < 1) { biguglyerror("Nemate permisije za pristup ovom izvještaju"); zamgerlog("nije admin predmeta pp{$predmet} godina ag{$ag}", 3); // 3 = error return; } $privilegija = mysql_result($q20, 0, 0); } // Cool editing box if ($privilegija == "nastavnik" || $privilegija == "super_asistent" || $user_siteadmin) { cool_box('ajah_start("index.php?c=N&sta=common/ajah&akcija=izmjena_ispita&idpolja="+zamger_coolbox_origcaller.id+"&vrijednost="+coolboxedit.value, "undo_coolbox()", "zamger_coolbox_origcaller=false");'); ?> <script language="JavaScript"> function undo_coolbox() { var greska = document.getElementById("zamger_ajah-info").innerText || document.getElementById("zamger_ajah-info").textContent; alert(greska); zamger_coolbox_origcaller.innerHTML = zamger_coolbox_origvalue; zamger_coolbox_origcaller=false; } </script> <?php } // Naziv predmeta, akademska godina $q21 = myquery("select naziv from predmet where id={$predmet}"); $q22 = myquery("select naziv from akademska_godina where id={$ag}"); ?> <p> </p> <h3><?php echo $naziv; ?> , <?php echo $finidatum; ?> </h3> <p><?php echo mysql_result($q21, 0, 0); ?> <?php echo mysql_result($q22, 0, 0); ?> </p> <?php print ajah_box(); $imeprezime = $brindexa = array(); $qtermini = myquery("SELECT it.id,UNIX_TIMESTAMP(it.datumvrijeme)\n\t\t\t\t FROM ispit_termin it\n\t\t\t\t\t INNER JOIN ispit i ON i.id = it.ispit\n\t\t\t\t\t WHERE i.id={$ispit}\n\t\t\t\t\t ORDER BY it.datumvrijeme\n\t\t\t\t\t"); $broj_termina = 0; if (isset($_REQUEST['termin'])) { $termin_id_from_url = intval($_REQUEST['termin']); ?> <p><a href="?sta=izvjestaj/termini_ispita&termin=<?php echo $termin_id_from_url; ?> ">Refresh</a></p> <?php } else { ?> <p><a href="?sta=izvjestaj/termini_ispita&ispit=<?php echo $ispit; ?> ">Refresh</a></p> <?php } while ($rtermini = mysql_fetch_row($qtermini)) { $broj_termina++; $id_termina = $rtermini[0]; if (isset($_REQUEST['termin'])) { $termin_id_from_url = intval($_REQUEST['termin']); if ($termin_id_from_url != $id_termina) { continue; } } $datum_termina = date("d. m. Y. ( H:i )", $rtermini[1]); if (isset($_REQUEST['ispit'])) { $ispit = intval($_REQUEST['ispit']); } else { $q8 = myquery("select ispit from ispit_termin where id={$termin_id_url}"); $ispit = mysql_result($q8, 0, 0); } print "Termin {$broj_termina} : <h4 style=\"display:inline\"> {$datum_termina}</h4><br></br>"; $q10 = myquery("select o.id, o.prezime, o.ime, o.brindexa \n\t\t\t\t\tfrom osoba as o, student_predmet as sp, ponudakursa as pk, student_ispit_termin sit, ispit_termin it, ispit i\n\t\t\t\t\twhere \n\t\t\t\t\t\tsp.predmet=pk.id \n\t\t\t\t\t\tand sp.student=o.id\n\t\t\t\t\t\tand sit.student=o.id\n\t\t\t\t\t\tand sit.ispit_termin=it.id\n\t\t\t\t\t\tand it.ispit = i.id\n\t\t\t\t\t\tand pk.predmet={$predmet} \n\t\t\t\t\t\tand pk.akademska_godina={$ag}\n\t\t\t\t\t\tand i.id={$ispit}\n\t\t\t\t\t\tand it.id = {$id_termina}\n\t\t\t\t\t\t"); if (mysql_num_rows($q10) < 1) { print "<p>------------------------------------------------------</p>"; print "<p>Nijedan student nije prijavljen na ovaj termin.</p>"; print "<p>------------------------------------------------------</p>"; continue; } while ($r10 = mysql_fetch_row($q10)) { $imeprezime[$r10[0]] = "{$r10['1']} {$r10['2']}"; $brindexa[$r10[0]] = "{$r10['3']}"; } uasort($imeprezime, "bssort"); // bssort - bosanski jezik // Ima li grupa na predmetu? $q27 = myquery("SELECT count(*) FROM labgrupa WHERE predmet={$predmet} AND akademska_godina={$ag} AND virtualna=0"); if (mysql_result($q27, 0, 0) > 0) { $treba_grupe = true; } else { $treba_grupe = false; } $broj_ispita = 0; $ispit_zaglavlje = ""; $oldkomponenta = 0; $ispit_id_array = array(); $q30 = myquery("select i.id, UNIX_TIMESTAMP(i.datum), k.id, k.kratki_gui_naziv, k.tipkomponente, k.maxbodova, k.prolaz, k.opcija from ispit as i, komponenta as k where i.predmet={$predmet} and i.akademska_godina={$ag} and i.komponenta=k.id order by i.datum, i.komponenta"); $imaintegralni = 0; while ($r30 = mysql_fetch_row($q30)) { $komponenta = $r30[2]; $imeispita = $r30[3]; $tipkomponente = $r30[4]; $ispit_zaglavlje .= "<td align=\"center\">{$imeispita}<br/> " . date("d.m.", $r30[1]) . "</td>\n"; $broj_ispita++; $ispit_id_array[] = $r30[0]; $ispit_komponenta[$r30[0]] = $r30[2]; // Pripremamo podatke o komponentama $komponenta_tip[$r30[2]] = $r30[4]; $komponenta_maxb[$r30[2]] = $r30[5]; $komponenta_prolaz[$r30[2]] = $r30[6]; $komponenta_opcija[$r30[2]] = "{$r30['7']}"; } // Racunamo koliko je bilo moguce ostvariti bodova na predmetu (radi racunanja procenta) $mogucih_bodova = 0; foreach ($komponenta_maxb as $kid => $kmb) { if ($komponenta_tip[$kid] != 2 || $imaintegralni == 1 && $broj_ispita < 2) { // osim ako je to jedini ispit $mogucih_bodova += $kmb; } } // Ostale komponente cemo sabrati nesto kasnije... // Za slucaj da prof odrzi integralni bez parcijalnih if ($imaintegralni == 1 && $broj_ispita < 2) { // $razvdoji_ispite=1; goto // Zaglavlje tabele ispita // no php ne podržava goto :( $broj_ispita = 2; // Ovo ce i dalje biti deformisano, ali nesto manje deformisano nego ranije } // SPISAK KOMPONENTI KOJE NISU ISPITI $ostale_komponente = array(); // 1 = parcijalni ispit, 2 = integralni ispit $q40 = myquery("select k.id, k.kratki_gui_naziv, k.tipkomponente, k.maxbodova from komponenta as k, akademska_godina_predmet as agp, tippredmeta_komponenta as tpk where agp.predmet={$predmet} and agp.tippredmeta=tpk.tippredmeta and tpk.komponenta=k.id and k.tipkomponente!=1 and k.tipkomponente!=2 and agp.akademska_godina={$ag}"); while ($r40 = mysql_fetch_row($q40)) { $mogucih_bodova += $r40[3]; $ostale_komponente[$r40[0]] = $r40[1]; } $zaglavlje1 = $zaglavlje2 = ""; // Dva reda zaglavlja tabele // Ostale komponente foreach ($ostale_komponente as $kid => $knaziv) { $zaglavlje1 .= "<td rowspan=\"2\" align=\"center\">{$knaziv}</td>\n"; } ?> <table border="1" cellspacing="0" cellpadding="2"> <tr><td rowspan="2" align="center">R.br.</td> <td rowspan="2" align="center">Prezime i ime</td> <td rowspan="2" align="center">Br. indexa</td> <?php if ($treba_grupe) { ?> <td rowspan="2" align="center">Grupa</td><?php } ?> <?php echo $zaglavlje1; ?> <td align="center" <?php if ($broj_ispita == 0) { ?> rowspan="2" <?php } else { ?> colspan="<?php echo $broj_ispita; ?> " <?php } ?> >Ispiti</td> <td rowspan="2" align="center"><b>UKUPNO</b></td> <td rowspan="2" align="center">Konačna<br/>ocjena</td> </tr> <tr> <?php echo $zaglavlje2; ?> <?php echo $ispit_zaglavlje; ?> </tr> <?php // ------ SPISAK STUDENATA ------ $idovi = array_keys($imeprezime); // Petlja za ispis studenata $redni_broj = 0; foreach ($imeprezime as $stud_id => $stud_imepr) { if (!in_array($stud_id, $idovi)) { continue; } unset($imeprezime[$stud_id]); // Vise se nece javljati $redni_broj++; ?> <tr> <td><?php echo $redni_broj; ?> .</td> <td><?php echo $stud_imepr; ?> </td> <td><?php echo $brindexa[$stud_id]; ?> </td> <?php if ($treba_grupe) { $q220 = myquery("SELECT l.naziv FROM labgrupa as l, student_labgrupa as sl WHERE l.predmet={$predmet} AND l.akademska_godina={$ag} AND l.virtualna=0 AND l.id=sl.labgrupa AND sl.student={$stud_id}"); if (mysql_num_rows($q220) == 0) { $grupa = " "; } else { $grupa = mysql_result($q220, 0, 0); } ?> <td><?php echo $grupa; ?> </td> <?php } $ispis = ""; $bodova = 0; // Zbir bodova koje je student ostvario // OSTALE KOMPONENTE foreach ($ostale_komponente as $kid => $knaziv) { $q230 = myquery("select kb.bodovi from komponentebodovi as kb, ponudakursa as pk where kb.student={$stud_id} and kb.predmet=pk.id and pk.predmet={$predmet} and pk.akademska_godina={$ag} and kb.komponenta={$kid}"); $obodova = 0; if (mysql_num_rows($q230) > 0) { $obodova = mysql_result($q230, 0, 0); } $ispis .= "<td>{$obodova}</td>"; $bodova += $obodova; } // ISPITI if ($broj_ispita == 0) { $ispis .= "<td> </td>"; } $komponente = $kmax = $kispis = array(); foreach ($ispit_id_array as $ispit) { $k = $ispit_komponenta[$ispit]; $q230 = myquery("select ocjena from ispitocjene where ispit={$ispit} and student={$stud_id}"); if (mysql_num_rows($q230) > 0) { $ocjena = mysql_result($q230, 0, 0); $ispis .= "<td align=\"center\" id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">{$ocjena}</td>\n"; if (!in_array($k, $komponente) || $ocjena > $kmax[$k]) { $kmax[$k] = $ocjena; $kispis[$k] = "<td align=\"center\" id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">{$ocjena}</td>\n"; } } else { $ispis .= "<td align=\"center\" id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">/</td>\n"; if ($kispis[$k] == "") { $kispis[$k] = "<td align=\"center\" id=\"ispit-{$stud_id}-{$ispit}\" ondblclick=\"coolboxopen(this)\">/</td>\n"; } } if (!in_array($k, $komponente)) { $komponente[] = $k; } } // Prvo trazimo integralne ispite foreach ($komponente as $k) { if ($komponenta_tip[$k] == 2) { // Koje parcijalne ispite obuhvata integralni $dijelovi = explode("+", $komponenta_opcija[$k]); // Racunamo zbir $zbir = 0; $pao = 0; foreach ($dijelovi as $dio) { $zbir += $kmax[$dio]; if ($kmax[$dio] < $komponenta_prolaz[$dio]) { $pao = 1; } } // Eliminisemo parcijalne obuhvacene integralnim if ($kmax[$k] > $zbir || $pao == 1 && $kmax[$k] >= $komponenta_prolaz[$k]) { $bodova += $kmax[$k]; foreach ($dijelovi as $dio) { $kmax[$dio] = 0; $kispis[$dio] = ""; } $kispis[$k] = "<td align=\"center\" colspan=\"" . count($dijelovi) . "\">" . $kmax[$k] . "</td>\n"; } else { $kispis[$k] = ""; } } } // Sabiremo preostale parcijalne ispite na sumu bodova foreach ($komponente as $k) { if ($komponenta_tip[$k] != 2) { $bodova += $kmax[$k]; } } // STATISTIKE $topscore[$stud_id] = $bodova; print $ispis; print "<td align=\"center\">{$bodova} (" . procenat($bodova, $mogucih_bodova) . ")</td>\n"; // Konacna ocjena $q508 = myquery("select ocjena from konacna_ocjena where student={$stud_id} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q508) > 0) { print "<td id=\"ko-{$stud_id}-{$predmet}-{$ag}\" ondblclick=\"coolboxopen(this)\">" . mysql_result($q508, 0, 0) . "</td>\n"; } else { print "<td id=\"ko-{$stud_id}-{$predmet}-{$ag}\" ondblclick=\"coolboxopen(this)\">/</td>\n"; } print "</tr>\n"; } print "</table><p> </p>"; } ?> <?php }
function nastavnik_kvizovi() { global $userid, $user_siteadmin; global $_lv_; // Parametri $predmet = intval($_REQUEST['predmet']); $ag = intval($_REQUEST['ag']); // Naziv predmeta $q5 = myquery("select naziv from predmet where id={$predmet}"); if (mysql_num_rows($q5) < 1) { biguglyerror("Nepoznat predmet"); zamgerlog("ilegalan predmet {$predmet}", 3); //nivo 3: greska zamgerlog2("nepoznat predmet", $predmet); return; } $predmet_naziv = mysql_result($q5, 0, 0); // Da li korisnik ima pravo ući u modul? if (!$user_siteadmin) { $q10 = myquery("select nivo_pristupa from nastavnik_predmet where nastavnik={$userid} and predmet={$predmet} and akademska_godina={$ag}"); if (mysql_num_rows($q10) < 1 || mysql_result($q10, 0, 0) == "asistent") { zamgerlog("nastavnik/ispiti privilegije (predmet pp{$predmet})", 3); zamgerlog2("nije nastavnik na predmetu", $predmet, $ag); biguglyerror("Nemate pravo pristupa ovoj opciji"); return; } } ?> <p> </p> <p><h3><?php echo $predmet_naziv; ?> - Kvizovi</h3></p> <p>Napomena: Ovaj modul je još uvijek u fazi razvoja i nije dovoljno testiran. Ne preporučujemo njegovo korištenje.</p> <?php // Akcija - editovanje pitanja if ($_REQUEST['akcija'] == "pitanja") { $kviz = intval($_REQUEST['kviz']); $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}"); if (mysql_num_rows($q200) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz); return; } if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz); return; } $naziv_kviza = mysql_result($q200, 0, 0); // Subakcije if ($_REQUEST['subakcija'] == "potvrda_novo" && check_csrf_token()) { $tekst = my_escape($_REQUEST['tekst']); $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova'])); if ($_REQUEST['vidljivo']) { $vidljivo = 1; } else { $vidljivo = 0; } $tip = my_escape($_REQUEST['tip']); $q300 = myquery("insert into kviz_pitanje set kviz={$kviz}, tip='{$tip}', tekst='{$tekst}', bodova={$bodova}, vidljivo={$vidljivo}"); $pitanje = mysql_insert_id(); // Ako je korisnik unosio odgovore prije kreiranja pitanja, njihov id pitanja je 0 $q315 = myquery("update kviz_odgovor set kviz_pitanje={$pitanje} where kviz_pitanje=0"); nicemessage("Pitanje uspješno dodano"); zamgerlog2("dodano pitanje na kviz", $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "potvrda_izmjene" && check_csrf_token()) { $pitanje = intval($_REQUEST['pitanje']); $tekst = my_escape($_REQUEST['tekst']); $bodova = floatval(str_replace(',', '.', $_REQUEST['bodova'])); if ($_REQUEST['vidljivo']) { $vidljivo = 1; } else { $vidljivo = 0; } $tip = my_escape($_REQUEST['tip']); $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0) { niceerror("Pitanje je obrisano!"); zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} ne postoji", 3); zamgerlog2("pitanje na kvizu ne postoji (potvrda editovanja)", $pitanje); return; } if (mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("potvrda editovanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda editovanja)", $pitanje, $kviz); return; } $q330 = myquery("update kviz_pitanje set tekst='{$tekst}', tip='{$tip}', bodova={$bodova}, vidljivo={$vidljivo} where id={$pitanje}"); nicemessage("Pitanje uspješno izmijenjeno"); zamgerlog2("izmijenjeno pitanje na kvizu", $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "obrisi") { // brisanje pitanja - ovdje ce nam trebati potvrda! $pitanje = intval($_REQUEST['pitanje']); $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0) { niceerror("Pitanje je već obrisano!"); zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} ne postoji", 3); zamgerlog2("pitanje ne postoji (potvrda brisanja)", $pitanje); return; } if (mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("potvrda brisanja pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (potvrda brisanja)", $pitanje, $kviz); return; } $q335 = myquery("delete from kviz_odgovor where kviz_pitanje={$pitanje}"); $q336 = myquery("delete from kviz_pitanje where id={$pitanje}"); nicemessage("Pitanje uspješno obrisano"); zamgerlog2("obrisano pitanje sa kviza", $kviz, $pitanje); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php return; } if ($_REQUEST['subakcija'] == "dodaj_odgovor" && check_csrf_token()) { $pitanje = intval($_REQUEST['pitanje']); $tekst = my_escape($_REQUEST['tekst']); if ($_REQUEST['tacan']) { $tacan = 1; } else { $tacan = 0; } if ($pitanje > 0) { $q320 = myquery("select kviz from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q320) == 0 || mysql_result($q320, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("dodavanje odgovora: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (dodavanje odgovora)", $pitanje, $kviz); return; } } $q340 = myquery("insert into kviz_odgovor set kviz_pitanje={$pitanje}, tekst='{$tekst}', tacan={$tacan}"); nicemessage("Odgovor uspješno dodan"); zamgerlog2("dodan odgovor na pitanje", mysql_insert_id()); if ($pitanje > 0) { ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $pitanje; ?> '; </script> <?php } else { ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php } return; } if ($_REQUEST['subakcija'] == "obrisi_odgovor") { // && check_csrf_token()) { $odgovor = intval($_REQUEST['odgovor']); $q350 = myquery("select kp.kviz, kp.id from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id"); if (mysql_num_rows($q350) == 0) { // Moguće da je odgovor dat prije pitanja $q355 = myquery("select kviz_pitanje from kviz_odgovor where id={$odgovor}"); if (mysql_num_rows($q355) == 0) { niceerror("Odgovor je već obrisan!"); zamgerlog("brisanje odgovora: odgovor {$odgovor} ne postoji", 3); zamgerlog2("odgovor ne postoji (brisanje odgovora)", $odgovor); return; } } else { if (mysql_result($q350, 0, 0) != $kviz) { niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza"); zamgerlog("brisanje odgovora: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id odgovora i kviza se ne poklapaju (brisanje odgovora)", $odgovor, $kviz); return; } } $q360 = myquery("delete from kviz_odgovor where id={$odgovor}"); nicemessage("Odgovor uspješno obrisan"); $dodaj = ""; if (mysql_num_rows($q350) != 0) { $dodaj = "&subakcija=izmijeni&pitanje=" . mysql_result($q350, 0, 1); } zamgerlog2("obrisan odgovor sa kviza", $odgovor, $kviz); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja<?php echo $dodaj; ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "toggle_tacnost") { // && check_csrf_token()) { $odgovor = intval($_REQUEST['odgovor']); $q370 = myquery("select kp.kviz, kp.id, ko.tacan from kviz_pitanje as kp, kviz_odgovor as ko where ko.id={$odgovor} and ko.kviz_pitanje=kp.id"); if (mysql_num_rows($q370) == 0 || mysql_result($q370, 0, 0) != $kviz) { niceerror("Odgovor ne postoji ili pitanje nije sa ovog kviza"); zamgerlog("toggle tacnost: odgovor {$odgovor} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id odgovora i kviza se ne poklapaju (toggle tacnosti)", $odgovor, $kviz); return; } if (mysql_result($q370, 0, 2) == 1) { $tacan = 0; } else { $tacan = 1; } $q380 = myquery("update kviz_odgovor set tacan={$tacan} where id={$odgovor}"); nicemessage("Odgovor proglašen za (ne)tačan"); zamgerlog2("odgovor proglasen za (ne)tacan", $odgovor, $tacan); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo mysql_result($q370, 0, 1); ?> '; </script> <?php return; } if ($_REQUEST['subakcija'] == "kopiraj_pitanja" && check_csrf_token()) { $drugi_kviz = intval($_REQUEST['_lv_column_kviz']); $q740 = myquery("SELECT naziv FROM kviz WHERE id={$drugi_kviz}"); // Dozvoljavamo kopiranje sa kviza sa drugog predmeta!? if (mysql_num_rows($q740) == 0) { niceerror("Nepoznat kviz"); zamgerlog2("nepoznat ID kviza", $drugi_kviz); return; } $q700 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$drugi_kviz}"); while ($r700 = mysql_fetch_row($q700)) { $staro_pitanje = $r700[0]; $tekst = mysql_real_escape_string($r700[2]); $q710 = myquery("INSERT INTO kviz_pitanje SET kviz={$kviz}, tip='{$r700['1']}', tekst='{$tekst}', bodova={$r700['3']}, vidljivo={$r700['4']}"); $novo_pitanje = mysql_insert_id(); // Kreiranje odgovora na pitanje $q720 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}"); while ($r720 = mysql_fetch_row($q720)) { $tekst = mysql_real_escape_string($r720[0]); $q730 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r720['1']}, vidljiv={$r720['2']}"); } } nicemessage("Prekopirana pitanja sa kviza"); zamgerlog2("prekopirana pitanja sa kviza", $kviz, $drugi_kviz); ?> <script language="JavaScript"> location.href='?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja'; </script> <?php return; } ?> <h3>Izmjena pitanja za kviz "<?php echo $naziv_kviza; ?> "</h3> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &_lv_nav_id=<?php echo $kviz; ?> ">Nazad na podešavanje parametara kviza</a><br><br> <table border="0" cellspacing="1" cellpadding="2"> <tr bgcolor="#999999"> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">R.br.</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Tekst pitanja</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Odgovori</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Bodova</font></td> <td><font style="font-family:DejaVu Sans,Verdana,Arial,sans-serif;font-size:11px;color:white;">Vidljivo?</font></td> <td> </td> </tr> <?php $rbr = 0; $q210 = myquery("select id, tip, tekst, bodova, vidljivo from kviz_pitanje where kviz={$kviz}"); while ($r210 = mysql_fetch_row($q210)) { // Pribavljamo odgovore $odgovori = ""; $q220 = myquery("select tekst, tacan from kviz_odgovor where kviz_pitanje={$r210['0']} order by tacan desc"); if (mysql_num_rows($q220) < 1) { $odgovori = "<font color=\"red\">Nema ponuđenih odgovora</font>"; } $broj_tacnih = 0; while ($r220 = mysql_fetch_row($q220)) { $odgovori .= "'{$r220['0']}'"; if ($r220[1] == 1) { $odgovori .= " (*)"; $broj_tacnih++; } $odgovori .= ", "; } if (mysql_num_rows($q220) > 0 && $broj_tacnih == 0) { $odgovori = "<font color=\"red\">Nije ponuđen tačan odgovor</font><br>\n" . $odgovori; } else { if (mysql_num_rows($q220) > 0 && $r210[1] == 'mcma' && $broj_tacnih == 1) { $odgovori = "<font color=\"red\">Ponuđen je samo jedan tačan odgovor</font><br>\n" . $odgovori; } } $vidljivo = "NE"; if ($r210[4] == 1) { $vidljivo = "DA"; } $rbr++; ?> <tr> <td><?php echo $rbr; ?> </td> <td><?php echo $r210[2]; ?> </td> <td><?php echo $odgovori; ?> </td> <td><?php echo $r210[3]; ?> </td> <td><?php echo $vidljivo; ?> </td> <td><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=obrisi&pitanje=<?php echo $r210[0]; ?> ">Obriši</a> * <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $r210[0]; ?> ">Izmijeni</a></td> </tr> <?php } print "</table>\n<br><br>\n"; if (mysql_num_rows($q210) == 0) { print genform("POST"); ?> <input type="hidden" name="subakcija" value="kopiraj_pitanja"> <p>Kopiraj pitanja sa kviza:<?php $_lv_["where:predmet"] = $predmet; $_lv_["where:akademska_godina"] = $ag; print db_dropdown("kviz"); ?> <input type="submit" value=" Kreni "> </p></form><?php } if ($_REQUEST['subakcija'] == "izmijeni") { ?> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja">Dodaj novo pitanje</a><br><br> <a name="izmjena"></a> <b>Izmjena pitanja</b><br> <?php $pitanje = intval($_REQUEST['pitanje']); $q230 = myquery("select kviz, tip, tekst, bodova, vidljivo from kviz_pitanje where id={$pitanje}"); if (mysql_num_rows($q230) < 1) { niceerror("Nepostojeće pitanje {$pitanje}"); zamgerlog("editovanje pitanja: nepostojece pitanje {$pitanje}", 3); zamgerlog2("nepostojece pitanje (editovanje pitanja)", $pitanje); return; } if (mysql_result($q230, 0, 0) != $kviz) { niceerror("Pitanje nije sa ovog kviza"); zamgerlog("editovanje pitanja: pitanje {$pitanje} nije sa kviza {$kviz} (pp{$predmet} ag{$ag})", 3); zamgerlog2("id pitanja i kviza se ne poklapaju (editovanje pitanja)", $pitanje, $kviz); return; } $tip = mysql_result($q230, 0, 1); $tekst = mysql_result($q230, 0, 2); $bodova = mysql_result($q230, 0, 3); if (mysql_result($q230, 0, 4) == 1) { $vidljivo = "CHECKED"; } else { $vidljivo = ""; } $subakcija = "potvrda_izmjene"; } else { print "<b>Dodajte novo pitanje</b><br>\n"; $tekst = $vidljiv = ""; $bodova = $pitanje = 0; $tip = "mcsa"; $subakcija = "potvrda_novo"; } unset($_REQUEST['subakcija']); unset($_GET['subakcija']); ?> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="<?php echo $subakcija; ?> "> <input type="hidden" name="pitanje" value="<?php echo $pitanje; ?> "> <table border="0"> <tr><td>Tekst pitanja:</td><td><input type="text" size="50" name="tekst" value="<?php echo $tekst; ?> "></td></tr> <tr><td>Bodova:</td><td><input type="text" size="5" name="bodova" value="<?php echo $bodova; ?> "></td></tr> <tr><td>Tip pitanja:</td><td> <select name="tip"> <option value="mcsa" <?php if ($tip == "mcsa") { print "SELECTED"; } ?> >MCSA</option> <option value="mcma" <?php if ($tip == "mcma") { print "SELECTED"; } ?> >MCMA</option> <option value="tekstualno" <?php if ($tip == "tekstualno") { print "SELECTED"; } ?> >Tekstualno</option> </select> <a href="#" onclick="javascript:window.open('legenda-pitanja.html','blah6','width=320,height=300');">Legenda tipova pitanja</a> </td></tr> <tr><td align="right"><input type="checkbox" name="vidljivo" value="1" <?php echo $vidljivo; ?> ></td><td>Pitanje vidljivo</td></tr> </table> <br>Ponuđeni odgovori:<br> <ul> <?php $q240 = myquery("select id, tekst, tacan, vidljiv from kviz_odgovor where kviz_pitanje={$pitanje}"); if (mysql_num_rows($q240) == 0) { print "<li>Do sada nije unesen nijedan odgovor</li>\n"; } while ($r240 = mysql_fetch_row($q240)) { print "<li>"; if ($r240[3] == 0) { print "<font color=\"#AAAAAA\">"; } print $r240[1]; if ($r240[2] == 1) { print " (TAČAN)"; $toggle_link = "Proglasi za netačan"; } else { $toggle_link = "Proglasi za tačan"; } if ($r240[3] == 0) { print "</font> - nevidljiv"; } ?> - <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=obrisi_odgovor&odgovor=<?php echo $r240[0]; ?> ">Obriši</a> - <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=toggle_tacnost&odgovor=<?php echo $r240[0]; ?> "><?php echo $toggle_link; ?> </a></li> <?php } ?> </ul> <input type="submit" value="Promjena pitanja"><br> </form> <br> Dodajte odgovor na ovo pitanje:<br> <?php echo genform("POST"); ?> <input type="hidden" name="subakcija" value="dodaj_odgovor"> <input type="hidden" name="pitanje" value="<?php echo $pitanje; ?> "> Tekst odgovora: <input type="text" name="tekst" size="50"><br> <input type="checkbox" name="tacan" value="1"> Tačan<br> <input type="submit" value="Dodaj"><br> </form> <?php return; } // Akcija - statistički pregled rezultata kviza if ($_REQUEST['akcija'] == "rezultati") { $kviz = intval($_REQUEST['kviz']); $q600 = myquery("select naziv, predmet, akademska_godina, broj_pitanja, prolaz_bodova from kviz where id={$kviz}"); if (mysql_num_rows($q600) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("editovanje pitanja: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (editovanje pitanja)", $kviz); return; } if (mysql_result($q600, 0, 1) != $predmet || mysql_result($q600, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("editovanje pitanja: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (editovanje pitanja)", $predmet, $ag, $kviz); return; } $naziv_kviza = mysql_result($q600, 0, 0); $max_bodova = mysql_result($q600, 0, 3); $prolaz_bodova = mysql_result($q600, 0, 4); $broj_bodova = array(); $ukupno = $max_broj = $ukupno_prolaz = 0; for ($i = 0; $i <= $max_bodova; $i++) { $q620 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=1 AND bodova>={$i} AND bodova<" . ($i + 1)); $broj_bodova[$i] = mysql_result($q620, 0, 0); $ukupno += $broj_bodova[$i]; if ($broj_bodova[$i] > $max_broj) { $max_broj = $broj_bodova[$i]; } if ($i >= $prolaz_bodova) { $ukupno_prolaz += $broj_bodova[$i]; } } $q630 = myquery("SELECT COUNT(*) FROM kviz_student WHERE kviz={$kviz} AND dovrsen=0"); $nedovrsenih = mysql_result($q630, 0, 0); ?> <p>Popunilo kviz: <b><?php echo $ukupno; ?> </b> studenata<br /> Nisu dovršili popunjavanje kviza: <b><?php echo $nedovrsenih; ?> </b> studenata<br /> Ostvarilo prolazne bodove: <b><?php echo $ukupno_prolaz; ?> </b> studenata (<?php echo procenat($ukupno_prolaz, $ukupno); ?> )</p> <h3><?php echo $naziv_kviza; ?> </h3> <h4>Distribucija bodova</h4> <div id="grafik"> <div style="width:300px;height:200px;margin:5px;"> <?php foreach ($broj_bodova as $bod => $broj) { if ($broj == 0) { $broj_pixela_print = 170; } else { $broj_pixela = $broj / $max_broj * 200; $broj_pixela_print = intval(200 - $broj_pixela); } if ($bod < $prolaz_bodova) { $boja = "red"; } else { $boja = "green"; } ?> <div style="width:45px; height:200px; background:<?php echo $boja; ?> ;margin-left:5px;float:left;"> <div style="width:45px;height:<?php echo $broj_pixela_print; ?> px;background:white;"> </div> <span style="color:white;font-size: 25px; text-align: center; "> <?php echo $bod; ?> </span> </div> <?php } ?> </div> <div style="width:300px;height:50px;margin:5px;"> <?php foreach ($broj_bodova as $bod => $broj) { ?> <div style="width:45px; margin-left:5px; text-align: center; float:left; "> <?php echo $broj; ?> (<?php echo procenat($broj, $ukupno); ?> ) </div> <?php } ?> </div> </div> <?php // Statistika pitanja ?> <h3>Statistika pitanja</h3> <table border="1" style="border-collapse:collapse"> <tr><th>Pitanje</th><th>Uk. odgovora</th><th>Tačnih</th></tr> <?php $q640 = myquery("SELECT id, tekst, ukupno, tacnih FROM kviz_pitanje WHERE kviz={$kviz} ORDER BY tacnih/ukupno"); while ($r640 = mysql_fetch_row($q640)) { $id_pitanja = $r640[0]; $pitanje = $r640[1]; if (strlen($pitanje) > 60) { $skr_pitanje = mb_substr($pitanje, 0, 50) . "..."; } else { $skr_pitanje = $pitanje; } $odgovora = $r640[2]; $tacnih = $r640[3]; ?> <tr> <td title="<?php echo $pitanje; ?> "> <a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja&subakcija=izmijeni&pitanje=<?php echo $id_pitanja; ?> #izmjena"><?php echo $skr_pitanje; ?> </a></td> <td><?php echo $odgovora; ?> </td> <td><?php echo $tacnih; ?> (<?php echo procenat($tacnih, $odgovora); ?> )</td> </tr> <?php } ?> </table> <?php return; } // Kopiranje kvizova sa prošlogodišnjeg predmeta if ($_REQUEST['akcija'] === "prosla_godina" && strlen($_POST['nazad']) < 1) { $old_ag = $ag - 1; // Ovo je po definiciji prošla godina $greska = false; $q499 = myquery("SELECT naziv FROM akademska_godina WHERE id={$old_ag}"); if (mysql_num_rows($q499) == 0) { niceerror("Nije pronađena prošla akademska godina."); zamgerlog("nije pronadjena akademska godina {$old_ag}"); zamgerlog2("nije pronadjena akademska godina", $old_ag); $greska = true; } if (!$greska) { $q500 = myquery("SELECT naziv FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}"); if (mysql_num_rows($q500) == 0) { niceerror("Prošle godine nije bio definisan nijedan kviz"); zamgerlog("prosle godine nije bio definisan nijedan kviz {$predmet} {$old_ag}"); zamgerlog2("prosle godine nije bio definisan nijedan kviz", $predmet, $old_ag); $greska = true; } } if (!$greska && $_REQUEST['potvrda'] === "potvrdjeno" && check_csrf_token()) { $q510 = myquery("SELECT id, naziv, vrijeme_pocetak, vrijeme_kraj, ip_adrese, prolaz_bodova, broj_pitanja, trajanje_kviza, aktivan FROM kviz WHERE predmet={$predmet} AND akademska_godina={$old_ag}"); while ($r510 = mysql_fetch_row($q510)) { // Kreiranje novog kviza $stari_kviz = $r510[0]; print "<p>Kopiram kviz {$r510['1']}...</p>"; $naziv = mysql_real_escape_string($r510[1]); $q520 = myquery("INSERT INTO kviz SET naziv='{$naziv}', predmet={$predmet}, akademska_godina={$ag}, vrijeme_pocetak='{$r510['2']}', vrijeme_kraj='{$r510['3']}', ip_adrese='{$r510['4']}', prolaz_bodova={$r510['5']}, broj_pitanja={$r510['6']}, trajanje_kviza={$r510['7']}, aktivan={$r510['8']}"); $novi_kviz = mysql_insert_id(); // Kreiranje pitanja $q530 = myquery("SELECT id, tip, tekst, bodova, vidljivo FROM kviz_pitanje WHERE kviz={$stari_kviz}"); while ($r530 = mysql_fetch_row($q530)) { $staro_pitanje = $r530[0]; $tekst = mysql_real_escape_string($r530[2]); $q540 = myquery("INSERT INTO kviz_pitanje SET kviz={$novi_kviz}, tip='{$r530['1']}', tekst='{$tekst}', bodova={$r530['3']}, vidljivo={$r530['4']}"); $novo_pitanje = mysql_insert_id(); // Kreiranje odgovora na pitanje $q550 = myquery("SELECT tekst, tacan, vidljiv FROM kviz_odgovor WHERE kviz_pitanje={$staro_pitanje}"); while ($r550 = mysql_fetch_row($q550)) { $tekst = mysql_real_escape_string($r550[0]); $q560 = myquery("INSERT INTO kviz_odgovor SET kviz_pitanje={$novo_pitanje}, tekst='{$tekst}', tacan={$r550['1']}, vidljiv={$r550['2']}"); } } } nicemessage("Kopiranje završeno!"); print "<a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}\">Povratak na stranicu kvizova</a>\n"; return; } else { if (!$greska) { nicemessage("Kopiram sljedeće kvizove iz akademske " . mysql_result($q499, 0, 0) . ". godine."); print "\n<ul>\n"; while ($r500 = mysql_fetch_row($q500)) { print "<li>{$r500['0']}</li>\n"; } print "</ul>\n"; print genform("POST"); ?> <input type="hidden" name="potvrda" value="potvrdjeno"> <p>Da li ste sigurni?</p> <p><input type="submit" name="nazad" value=" Nazad "> <input type="submit" value=" Potvrda"></p> </form> <?php } } return; } // Korektno brisanje kviza if ($_REQUEST['_lv_action_delete']) { $kviz = intval($_REQUEST['_lv_column_id']); $q200 = myquery("select naziv, predmet, akademska_godina from kviz where id={$kviz}"); if (mysql_num_rows($q200) < 1) { niceerror("Nepostojeći kviz {$kviz}"); zamgerlog("brisanje kviza: nepostojeci kviz {$kviz}", 3); zamgerlog2("nepostojeci kviz (brisanje kviza)", $kviz); return; } if (mysql_result($q200, 0, 1) != $predmet || mysql_result($q200, 0, 2) != $ag) { niceerror("Kviz nije sa ovog predmeta"); zamgerlog("brisanje kviza: kviz {$kviz} nije sa predmeta pp{$predmet} ag{$ag}", 3); zamgerlog2("id kviza i predmeta se ne poklapaju (brisanje kviza)", $predmet, $ag, $kviz); return; } $q400 = myquery("select id from kviz_pitanje where kviz={$kviz}"); // Brisemo odgovore while ($r400 = mysql_fetch_row($q400)) { $q410 = myquery("delete from kviz_odgovor where kviz_pitanje={$r400['0']}"); } $q420 = myquery("delete from kviz_pitanje where kviz={$kviz}"); $q430 = myquery("delete from kviz_student where kviz={$kviz}"); // db_form() će pobrisati stavku iz tabele kviz zamgerlog2("obrisan kviz", $predmet, $ag, $kviz); } // Provjeravamo da li je raspon dobro unesen if (($_REQUEST['_lv_action'] == "edit" || $_REQUEST['_lv_action'] == "add") && !$_REQUEST['_lv_action_delete']) { $ip_adresa_losa = false; if ($_REQUEST['_lv_action'] == "edit") { $id_kviza = intval($_REQUEST['_lv_column_id']); // Dodajemo logging zamgerlog("izmijenjen kviz {$id_kviza} (pp{$predmet})", 2); zamgerlog2("izmijenjen kviz", $id_kviza); } else { $labgrupa = intval($_REQUEST['_lv_column_labgrupa']); $naziv = my_escape($_REQUEST['_lv_column_naziv']); $pb = floatval($_REQUEST['_lv_column_prolaz_bodova']); $q100 = myquery("select id from kviz where predmet={$predmet} and akademska_godina={$ag} and naziv='{$naziv}' and labgrupa={$labgrupa} and prolaz_bodova={$pb}"); $id_kviza = mysql_result($q100, 0, 0); zamgerlog("dodan novi kviz {$id_kviza} (pp{$predmet})", 2); zamgerlog2("dodan kviz", $id_kviza); } $ip_adrese = $_REQUEST['_lv_column_ip_adrese']; foreach (explode(",", $ip_adrese) as $blok) { if (strstr($blok, "/")) { // blok adresa u CIDR formatu list($baza, $maska) = explode("/", $blok); if ($baza != long2ip(ip2long($baza))) { $ip_adresa_losa = true; break; } if ($maska != intval($maska)) { $ip_adresa_losa = true; break; } if ($maska < 1 || $maska > 32) { $ip_adresa_losa = true; break; } } else { if (strstr($blok, "-")) { // raspon adresa sa crticom list($pocetak, $kraj) = explode("-", $blok); if ($pocetak != long2ip(ip2long($pocetak))) { $ip_adresa_losa = true; break; } if ($kraj != long2ip(ip2long($kraj))) { $ip_adresa_losa = true; break; } } else { // pojedinačna adresa if ($blok != long2ip(ip2long($blok))) { $ip_adresa_losa = true; break; } } } } // Vraćamo se na editovanje lošeg kviza if ($ip_adresa_losa) { $_REQUEST['_lv_nav_id'] = $id_kviza; $_GET['_lv_nav_id'] = $id_kviza; $_POST['_lv_nav_id'] = $id_kviza; niceerror("Neispravan format IP adrese"); ?> <p>Raspon IP adresa treba biti u jednom od formata:<br> - CIDR format (npr. 123.45.67.89/24)<br> - raspon početak-kraj sa crticom (npr. 123.45.67.89-123.45.67.98)<br> - pojedinačna adresa<br> Takođe možete navesti više raspona ili pojedinačnih adresa razdvojenih zarezom.</p> <?php } } // Spisak postojećih kvizova $_lv_["where:predmet"] = $predmet; $_lv_["where:akademska_godina"] = $ag; $_lv_["new_link"] = "Unos novog kviza"; print "Odaberite neki od postojećih kvizova koji želite administrirati:<br/>\n"; print db_list("kviz"); $q1000 = myquery("SELECT COUNT(*) FROM kviz WHERE predmet={$predmet} AND akademska_godina={$ag}"); if (mysql_result($q1000, 0, 0) == 0) { print "<p><a href=\"?sta=nastavnik/kvizovi&predmet={$predmet}&ag={$ag}&akcija=prosla_godina\">Prekopiraj kvizove sa prošle akademske godine</a></p>\n"; } print "<hr>\n"; $kviz = intval($_REQUEST['_lv_nav_id']); if ($kviz > 0) { ?> <h3>Izmjena kviza</h3> <ul> <li><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=pitanja">Izmijenite pitanja na kvizu</a></li> <li><a href="?sta=nastavnik/kvizovi&predmet=<?php echo $predmet; ?> &ag=<?php echo $ag; ?> &kviz=<?php echo $kviz; ?> &akcija=rezultati">Rezultati kviza (do sada poslani odgovori)</a></li> </ul> <?php } else { ?> <h3>Kreiranje novog kviza</h3> <p>Unesite podatke o novom kvizu koji želite kreirati:</p><br> <?php } $_lv_["label:vrijeme_pocetak"] = "Početak"; $_lv_["label:vrijeme_kraj"] = "Kraj"; $_lv_["label:labgrupa"] = "Samo za studente iz grupe"; $_lv_["label:ip_adrese"] = "Ograniči na IP adrese"; $_lv_["label:prolaz_bodova"] = "Minimum bodova za prolaz"; $_lv_["label:trajanje_kviza"] = "Trajanje kviza (u sekundama)"; $_lv_["hidden:predmet"] = 1; $_lv_["hidden:akademska_godina"] = 1; print db_form("kviz", "kvizform"); // Markiramo loše polje if ($ip_adresa_losa) { ?> <script> var element = document.getElementsByName('_lv_column_ip_adrese'); element[0].style.backgroundColor = "#FF9999"; element[0].focus(); element[0].select(); </script> <?php } }