function student_ugovoroucenju() { global $userid; require "lib/manip.php"; // Naslov ?> <h3>Ugovor o učenju</h3> <?php // Za koju godinu se prijavljuje? $q1 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $q2 = myquery("select id, naziv from akademska_godina where id>" . mysql_result($q1, 0, 0) . " order by id limit 1"); if (mysql_num_rows($q2) < 1) { // nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); // return; // Pretpostavljamo da se upisuje u aktuelnu? $zagodinu = mysql_result($q1, 0, 0); $zagodinunaziv = mysql_result($q1, 0, 1); $q3 = myquery("select id from akademska_godina where id<{$zagodinu} order by id desc limit 1"); $proslagodina = mysql_result($q3, 0, 0); } else { $proslagodina = mysql_result($q1, 0, 0); $zagodinu = mysql_result($q2, 0, 0); $zagodinunaziv = mysql_result($q2, 0, 1); } ?> <p>Za akademsku <?php echo $zagodinunaziv; ?> godinu.</p> <?php // Ulazni podaci $studij = intval($_REQUEST['studij']); $godina = intval($_REQUEST['godina']); // Provjera ispravnosti podataka if ($studij != 0) { $q5 = myquery("select zavrsni_semestar from studij where id={$studij}"); if (mysql_num_rows($q5) < 1) { niceerror("Neispravan studij"); $studij = 0; unset($_POST['akcija']); } else { if ($godina < 1 || $godina > mysql_result($q5, 0, 0) / 2) { $godina = 1; } } } else { unset($_POST['akcija']); } // Odabir plana studija $plan_studija = 0; if ($studij > 0) { $q5a = myquery("SELECT studij, plan_studija FROM student_studij WHERE student={$userid} AND akademska_godina<={$zagodinu} ORDER BY akademska_godina DESC LIMIT 1"); if (mysql_num_rows($q5a) > 0 && $studij == mysql_result($q5a, 0, 0)) { $plan_studija = mysql_result($q5a, 0, 1); } if ($plan_studija == 0) { // Student nije prethodno studirao na istom studiju ili plan studija nije bio definisan // Uzimamo najnoviji plan za odabrani studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $plan_studija = mysql_result($q6, 0, 0); } } // Akcija - kreiranje ugovora if ($_POST['akcija'] == "kreiraj_ugovor") { // Provjera da li student ima minimalno 30 ECTS kredita po semestru // Ako je ovaj uslov ispunjen za oba semestra, slijedi i da ima minimalno // 60 ECTS kredita po godini $s1predmeti = $s2predmeti = array(); // Ujedno punimo nizove izbornih predmeta for ($sem = $godina * 2 - 1; $sem <= $godina * 2; $sem++) { $semestar_ects = 0; $q100 = myquery("select p.ects, p.naziv from predmet as p, plan_studija as ps where ps.godina_vazenja={$plan_studija} and ps.studij={$studij} and ps.semestar={$sem} and ps.obavezan=1 and ps.predmet=p.id"); while ($r100 = mysql_fetch_row($q100)) { $semestar_ects += $r100[0]; } $q110 = myquery("select distinct predmet from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$sem} and obavezan=0"); while ($r110 = mysql_fetch_row($q110)) { $izabran = $_REQUEST["is{$r110['0']}"]; if ($izabran == "odsjek{$sem}") { // izborni predmet sa drugog odsjeka $izabran = intval($_REQUEST["odsjek-{$r110['0']}"]); } else { $izabran = intval($izabran); } if ($izabran > 0) { $q120 = myquery("select ects, naziv from predmet where id={$izabran}"); if (mysql_num_rows($q120) < 1) { niceerror("Ilegalan izborni predmet"); return; } if (provjeri_kapacitet($izabran, $zagodinu, $plan_studija) == 0) { niceerror("Predmet " . mysql_result($q120, 0, 1) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $izabran); return; } $semestar_ects += mysql_result($q120, 0, 0); if ($sem == $godina * 2 - 1) { $s1predmeti[] = $izabran; } else { $s2predmeti[] = $izabran; } // Ako spisak izbornih predmeta nije radio buttons // nego checkboxes, $izabran ce biti 0 } else { foreach ($_REQUEST as $ime => $vrijednost) { $komad = "iz{$r110['0']}-"; if (substr($ime, 0, strlen($komad)) == $komad) { // izborni predmet sa drugog odsjeka if (substr($ime, strlen($komad)) == "odsjek") { $izabran = intval($_REQUEST["odsjek-{$r110['0']}"]); } else { $izabran = intval($vrijednost); } $q130 = myquery("select ects, naziv from predmet where id={$izabran}"); if (mysql_num_rows($q130) < 1) { niceerror("Ilegalan izborni predmet"); return; } if (provjeri_kapacitet($izabran, $zagodinu, $plan_studija) == 0) { niceerror("Predmet " . mysql_result($q130, 0, 1) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $izabran); return; } $semestar_ects += mysql_result($q130, 0, 0); if ($sem == $godina * 2 - 1) { $s1predmeti[] = $izabran; } else { $s2predmeti[] = $izabran; } } } } } if ($semestar_ects < 30) { niceerror("Niste izabrali dovoljno izbornih predmeta u {$sem}. semestru (ukupno {$semestar_ects} ECTS kredita, a potrebno je 30)"); return; } } // Sve ok, brišemo stari ugovor iz baze $q140 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu}"); while ($r140 = mysql_fetch_row($q140)) { $q145 = myquery("delete from ugovoroucenju where id={$r140['0']}"); $q145 = myquery("delete from ugovoroucenju_izborni where ugovoroucenju={$r140['0']}"); } // Ubacujemo novi ugovor u bazu $q150 = myquery("insert into ugovoroucenju set student={$userid}, akademska_godina={$zagodinu}, studij={$studij}, semestar=" . ($godina * 2 - 1)); // Uzimamo ID ugovora $q160 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu} and studij={$studij} and semestar=" . ($godina * 2 - 1)); $id1 = mysql_result($q160, 0, 0); foreach ($s1predmeti as $predmet) { $q170 = myquery("insert into ugovoroucenju_izborni set ugovoroucenju={$id1}, predmet={$predmet}"); } // Isto za parni semestar $q180 = myquery("insert into ugovoroucenju set student={$userid}, akademska_godina={$zagodinu}, studij={$studij}, semestar=" . $godina * 2); $q190 = myquery("select id from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu} and studij={$studij} and semestar=" . $godina * 2); $id2 = mysql_result($q190, 0, 0); foreach ($s2predmeti as $predmet) { $q200 = myquery("insert into ugovoroucenju_izborni set ugovoroucenju={$id2}, predmet={$predmet}"); } zamgerlog("student u{$userid} kreirao ugovor o ucenju (ID: {$id1} i {$id2})", 2); // 2 - edit zamgerlog2("kreirao ugovor o ucenju", intval($id1), intval($id2)); nicemessage("Kreirali ste Ugovor o učenju!"); ?> <p><a href="?sta=student/ugovoroucenjupdf">Kliknite ovdje da biste ga isprintali.</a></p> <?php return; } // Da li student već ima kreiran ugovor o učenju za sljedeću godinu? $q9 = myquery("select count(*) from ugovoroucenju where student={$userid} and akademska_godina={$zagodinu}"); if (mysql_result($q9, 0, 0) > 0) { ?> <p>Već imate kreiran Ugovor o učenju.<br />Možete ga preuzeti <a href="?sta=student/ugovoroucenjupdf">klikom ovdje</a>, ili možete kreirati novi ugovor ispod (pri čemu će stari biti pobrisan).</p> <p> </p> <?php } // --- Prikaz formulara za kreiranje ugovora // Studij nije odabran, biramo onaj koji student trenutno sluša if ($studij == 0) { $q10 = myquery("select ss.studij, ss.semestar, s.zavrsni_semestar, s.institucija, s.tipstudija, ss.plan_studija from student_studij as ss, studij as s where ss.student={$userid} and ss.akademska_godina={$proslagodina} and ss.studij=s.id order by semestar desc limit 1"); if (mysql_num_rows($q10) > 0) { $studij = mysql_result($q10, 0, 0); $godina = mysql_result($q10, 0, 1) / 2 + 1; $plan_studija = mysql_result($q10, 0, 5); if (mysql_result($q10, 0, 1) >= mysql_result($q10, 0, 2)) { $q20 = myquery("select id from studij where moguc_upis=1 and institucija=" . mysql_result($q10, 0, 3) . " and tipstudija>" . mysql_result($q10, 0, 4)); // FIXME pretpostavka je da su tipovi studija poredani po ciklusima if (mysql_num_rows($q20) > 0) { $studij = mysql_result($q20, 0, 0); $godina = 1; $plan_studija = 0; // Uzećemo najnoviji plan za odabrani studij } else { // Nema gdje dalje... postavljamo sve na nulu $studij = 0; $godina = 1; } } if ($plan_studija == 0) { // Određujemo najnoviji plan za novi studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $plan_studija = mysql_result($q6, 0, 0); } } else { niceerror("Niste nikada bili naš student!"); // Radi testiranja dozvolićemo nestudentima da uđu $godina = 1; } } ?> <SCRIPT language="JavaScript"> // Refresh stranice sa novim izbornim predmetima function refresh() { var studij = parseInt(document.getElementById('studij').value); var godina = parseInt(document.getElementById('godina').value); location.replace("index.php?sta=student/ugovoroucenju&studij="+studij+"&godina="+godina); } // Da bismo spriječili da pritisak na Enter submituje formu function noenter() { if (window.event && window.event.keyCode == 13) { refresh(); return false; } } // Funckija koja ne dozvoljava da se selektuje različit broj polja od navedenog var globalna; function jedanod(slot, clicked) { var template = "iz"+slot; var found=false; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox") continue; if (el==clicked) continue; if (template == el.name.substr(0,template.length)) { if (clicked.checked==true && el.checked==true) { el.checked=false; found=true; break; } if (clicked.checked==false && el.checked==false) { el.checked=true; found=true; break; } } } if (!found) { globalna=clicked; setTimeout("revertuj()", 100); } return found; } function drugiodsjek(slot, semestar, enable) { var template = "iz"+slot; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox" && el.type != "radio") continue; if (el.name.substr(0,template.length) == template) continue; if (el.name.substr(0,template.length) == "is"+slot) continue; if (el.value == "odsjek"+semestar) el.disabled=enable; } } function revertuj() { if (globalna.checked) globalna.checked=false; else globalna.checked=true; } </SCRIPT> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/ugovoroucenju"> <input type="hidden" name="akcija" value="kreiraj_ugovor"> <p>Bjanko Ugovor o učenju: <a href="images/content/150dpi/domestic-contract-0.png">stranica 1</a>, <a href="images/content/150dpi/domestic-contract-1.png">stranica 2</a>!</p> <p>Studij: <select name="studij" id="studij" onchange="javascript:refresh()"><option></option> <?php // Spisak studija $q30 = myquery("select id, naziv from studij where moguc_upis=1 order by tipstudija, naziv"); while ($r30 = mysql_fetch_row($q30)) { print "<option value=\"{$r30['0']}\""; if ($r30[0] == $studij) { print " selected"; } print ">{$r30['1']}</option>\n"; } $semestar = $godina * 2 - 1; ?> </select></p> <p>Godina studija: <input type="text" name="godina" id="godina" value="<?php echo $godina; ?> " onchange="javascript:refresh()" onkeypress="javascript:return noenter()"></p> <p> </p> <p><b>Izborni predmeti:</b></p> <p><?php echo $semestar; ?> . semestar:<br /> <?php // Spisak izbornih predmeta $ops = $count = 0; $q40 = myquery("select predmet from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$semestar} and obavezan=0 order by predmet"); if (mysql_num_rows($q40) < 1) { print "Nema izbornih predmeta."; } else { $ops = $count = 0; $slotovi = array(); while ($r40 = mysql_fetch_row($q40)) { $slotovi[] = $r40[0]; } $slotovi[] = 0; foreach ($slotovi as $slot) { if ($ops == 0) { /* nop */ } else { if ($slot == $ops) { $count++; } else { if ($count == 0) { $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"radio\" name=\"is{$ops}\" value=\"{$r45['0']}\" onchange=\"drugiodsjek('{$ops}',{$semestar},false);\""; if ($prvi) { print " CHECKED"; $prvi = 0; } print ">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"radio\" name=\"is{$ops}\" value=\"odsjek{$semestar}\" onchange=\"drugiodsjek('{$ops}',{$semestar},true);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r47[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r52[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); // sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } else { print "(izaberite " . ($count + 1) . " predmeta)<br />\n"; $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id and p.moguc_upis=1"); $prvi = $count + 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"checkbox\" name=\"iz{$ops}-{$r45['0']}\" value=\"{$r45['0']}\""; if ($prvi) { print " CHECKED"; $prvi--; } print " onchange=\"javascript:jedanod('{$ops}',this)\">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"checkbox\" name=\"iz{$ops}-odsjek\" value=\"odsjek{$semestar}\" onchange=\"javascript:jedanod('{$ops}',this); drugiodsjek('{$ops}',{$semestar},this.checked);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r47[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio // $q49 = myquery("select count(*) from konacna_ocjena where student=$userid and predmet=$r52[0] and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); // sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } } } $ops = $slot; } } $semestar = $godina * 2; ?> </p> <p><?php echo $semestar; ?> . semestar:<br /> <?php $q40 = myquery("select predmet from plan_studija as ps where godina_vazenja={$plan_studija} and studij={$studij} and semestar={$semestar} and obavezan=0 order by predmet"); if (mysql_num_rows($q40) < 1) { print "Nema izbornih predmeta."; } else { $ops = $count = 0; $slotovi = array(); while ($r40 = mysql_fetch_row($q40)) { $slotovi[] = $r40[0]; } $slotovi[] = 0; foreach ($slotovi as $slot) { if ($ops == 0) { /* nop */ } else { if ($slot == $ops) { $count++; } else { if ($count == 0) { $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"radio\" name=\"is{$ops}\" value=\"{$r45['0']}\" onchange=\"drugiodsjek('{$ops}',{$semestar},false);\""; if ($prvi) { print " CHECKED"; $prvi = 0; } print ">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"radio\" name=\"is{$ops}\" value=\"odsjek{$semestar}\" onchange=\"drugiodsjek('{$ops}',{$semestar},true);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r47['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r52['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); //sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } else { print "(izaberite " . ($count + 1) . " predmeta)<br />\n"; $q45 = myquery("select p.id, p.naziv from predmet as p, izborni_slot as iz where iz.id={$ops} and iz.predmet=p.id"); $prvi = $count + 1; while ($r45 = mysql_fetch_row($q45)) { print "<input type=\"checkbox\" name=\"iz{$ops}-{$r45['0']}\" value=\"{$r45['0']}\""; if ($prvi) { print " CHECKED"; $prvi--; } print " onchange=\"javascript:jedanod('{$ops}',this)\">{$r45['1']}</input><br />\n"; } // Predmet sa drugog studija print "<input type=\"checkbox\" name=\"iz{$ops}-odsjek\" value=\"odsjek{$semestar}\" onchange=\"javascript:jedanod('{$ops}',this); drugiodsjek('{$ops}',{$semestar},this.checked);\">Predmet sa drugog odsjeka</input><br />\n"; print "<select name=\"odsjek-{$ops}\">\n"; $spisak_predmeta_drugi_studij = array(); $drugi_studiji = array(); $q46 = myquery("select tipstudija from studij where id={$studij}"); $studij_ts = intval(mysql_result($q46, 0, 0)); $q47 = myquery("select ps.predmet, p.naziv, s.kratkinaziv, s.id from plan_studija as ps, studij as s, predmet as p where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=1 and ps.studij=s.id and s.tipstudija={$studij_ts} and ps.predmet=p.id order by s.kratkinaziv, ps.semestar, p.naziv"); while ($r47 = mysql_fetch_row($q47)) { $drugi_studiji[$r47[3]] = $r47[2]; // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r47['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r47['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r47[0]] = "{$r47['1']} ({$r47['2']})"; //print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } // A sada i izborni $q51 = myquery("select ps.predmet, s.kratkinaziv, s.id from plan_studija as ps, studij as s where ps.godina_vazenja={$plan_studija} and ps.studij!={$studij} and ps.semestar={$semestar} and ps.obavezan=0 and ps.studij=s.id and s.tipstudija={$studij_ts} order by s.kratkinaziv"); while ($r51 = mysql_fetch_row($q51)) { $drugi_studiji[$r51[2]] = $r51[1]; $q52 = myquery("select izs.predmet, p.naziv from izborni_slot as izs, predmet as p where izs.id={$r51['0']} and izs.predmet=p.id order by p.naziv"); while ($r52 = mysql_fetch_row($q52)) { // Ne uzimamo u obzir predmete koji su zajednicki za vise studija, pa ce ih student svakako slusati ili ih je vec slusao $q48 = myquery("select count(*) from plan_studija where godina_vazenja={$plan_studija} and studij={$studij} and obavezan=1 and predmet={$r52['0']}"); if (mysql_result($q48, 0, 0) > 0) { continue; } // Ne nudimo predmete koje je student eventualno vec polozio $q49 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r52['0']} and ocjena>5"); // if (mysql_result($q49,0,0)>0) continue; $spisak_predmeta_drugi_studij[$r52[0]] = "{$r52['1']} ({$r51['1']})"; } // print "<option value=\"$r47[0]\">$r47[1] ($r47[2])</option>\n"; } sort($drugi_studiji); //sort($spisak_predmeta_drugi_studij); foreach ($drugi_studiji as $studij_id => $studij_naziv) { foreach ($spisak_predmeta_drugi_studij as $predmet_id => $predmet_naziv) { if (strstr($predmet_naziv, "({$studij_naziv})")) { print "<option value=\"{$predmet_id}\">{$predmet_naziv}</option>\n"; } } } print "</select><br>\n"; } } } $ops = $slot; } } ?> </p> <input type="button" value="Osvježi spisak predmeta" onclick="javascript:refresh()"><br /><br /> <input type="submit" value="Kreiraj ugovor"></form> <p><b>Napomene:</b><br> * Ukoliko obnavljate godinu, trebate ponovo izabrati one predmete koje ste već položili.<br> * Možete izabrati najviše jedan predmet s drugog odsjeka po semestru, a u zbiru trebate imati najmanje 30 ECTS kredita po semestru odnosno 60 ECTS kredita po godini.<br> * Ako želite slušati izborni predmet sa drugog fakulteta, sada ovdje izaberite neki predmet sa našeg fakulteta a ujedno pokrenite proceduru (koja podrazumijeva odobrenje oba fakulteta).</p> <?php }
function student_kolizija() { global $userid; require "lib/manip.php"; // Naslov ?> <h3>Kolizija</h3> <?php // Za koju godinu se prijavljuje? $q1 = myquery("select id, naziv from akademska_godina where aktuelna=1"); $q2 = myquery("select id, naziv from akademska_godina where id>" . mysql_result($q1, 0, 0) . " order by id limit 1"); if (mysql_num_rows($q2) < 1) { // nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); // return; // Pretpostavljamo da se upisuje u aktuelnu? $zagodinu = mysql_result($q1, 0, 0); $zagodinunaziv = mysql_result($q1, 0, 1); $q3 = myquery("select id from akademska_godina where id<{$zagodinu} order by id desc limit 1"); $proslagodina = mysql_result($q3, 0, 0); if (mysql_num_rows($q3) < 1) { // Definisana je samo jedna akademska godina u bazi nicemessage("U ovom trenutku nije aktiviran upis u sljedeću akademsku godinu."); return; } } else { $proslagodina = mysql_result($q1, 0, 0); $zagodinu = mysql_result($q2, 0, 0); $zagodinunaziv = mysql_result($q2, 0, 1); } ?> <p>Za akademsku <?php echo $zagodinunaziv; ?> godinu.</p> <?php // Ulazni podaci $studij = intval($_REQUEST['studij']); $godina = intval($_REQUEST['godina']); $prenosi = intval($_REQUEST['prenosi']); // Provjera ispravnosti podataka if ($studij != 0) { $q5 = myquery("select naziv, zavrsni_semestar from studij where id={$studij}"); if (mysql_num_rows($q5) < 1) { niceerror("Neispravan studij"); $studij = 0; unset($_POST['akcija']); } else { if ($godina < 1 || $godina > mysql_result($q5, 0, 1) / 2) { $godina = 1; } } $naziv_studija = mysql_result($q5, 0, 0); } else { unset($_POST['akcija']); } // Šta trenutno sluša student? $q10 = myquery("select ss.studij, ss.semestar, s.zavrsni_semestar, s.institucija, s.tipstudija, s.naziv, ss.plan_studija from student_studij as ss, studij as s where ss.student={$userid} and ss.akademska_godina={$proslagodina} and ss.studij=s.id order by semestar desc limit 1"); if (mysql_num_rows($q10) > 0) { $trenutni_studij = mysql_result($q10, 0, 0); $trenutni_semestar = mysql_result($q10, 0, 1); // Podaci koji nam trebaju radi prelaska sa BSc na MSc $szavrsni_semestar = mysql_result($q10, 0, 2); $sinstitucija = mysql_result($q10, 0, 3); $stipstudija = mysql_result($q10, 0, 4); $snazivstudija = mysql_result($q10, 0, 5); $najnoviji_plan = mysql_result($q10, 0, 6); } else { niceerror("Niste nikada bili naš student!"); return; // dozvoliti testiranje nestudentima bi bilo prilično komplikovano, obzirom na dio "provjera uslova za koliziju" } // Modul kolizija zahtijeva plan studija if ($najnoviji_plan == 0) { niceerror("Modul za koliziju ne može biti aktiviran ako nije definisan plan studija"); print "Kontaktirajte vašeg administratora."; return; } // PROVJERA USLOVA ZA KOLIZIJU // Od predmeta koje je slušao, koliko je pao? $predmet_naziv = $predmet_ects = $predmet_semestar = $predmet_stari = array(); $izborni = array(); $q30 = myquery("select semestar, predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$trenutni_studij} and semestar<={$trenutni_semestar} order by semestar"); while ($r30 = mysql_fetch_row($q30)) { if ($r30[2] == 1) { // obavezan $q50 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r30['1']} and ocjena>5"); if (mysql_result($q50, 0, 0) < 1) { $q40 = myquery("select naziv,ects from predmet where id={$r30['1']}"); $predmet_naziv[$r30[1]] = mysql_result($q40, 0, 0); $predmet_ects[$r30[1]] = mysql_result($q40, 0, 1); $predmet_semestar[$r30[1]] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$r30[1]] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } else { // izborni predmet $izborni[$r30[1]]++; $q60 = myquery("select p.id, p.naziv, p.ects from izborni_slot as iz, predmet as p, ponudakursa as pk, student_predmet as sp where iz.id={$r30['1']} and iz.predmet=p.id and p.id=pk.predmet and pk.akademska_godina={$proslagodina} and pk.id=sp.predmet and sp.student={$userid}"); // Upit vraća više redova ako postoji više slotova za isti skup predmeta while ($r60 = mysql_fetch_row($q60)) { $predmet_tmp = $r60[0]; $q70 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$predmet_tmp} and ocjena>5"); if (mysql_result($q70, 0, 0) < 1) { $predmet_naziv[$predmet_tmp] = $r60[1]; $predmet_ects[$predmet_tmp] = $r60[2]; $predmet_semestar[$predmet_tmp] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$predmet_tmp] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } // Student nije slušao dovoljan broj ponuđenih izbornih predmeta // Dešava se u slučaju da je izabran predmet sa drugog odsjeka if (mysql_num_rows($q60) < $izborni[$r30[1]]) { $q60 = myquery("select p.id, p.naziv, p.ects from izborni_slot as iz, predmet as p where iz.id={$r30['1']} and iz.predmet=p.id"); $naziv = "Izborni predmet ("; // Kombinovani naziv svih predmeta $polozio = 0; $ects = 100; // treba nam minimalni ects while ($r60 = mysql_fetch_row($q60)) { if (strlen($naziv) > 18) { $naziv .= ", "; } $naziv .= $r60[1]; if ($r60[2] < $ects) { $ects = $r60[2]; } $q70 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']} and ocjena>5"); if (mysql_result($q70, 0, 0) > 0) { $polozio++; } } if ($polozio < $izborni[$r30[1]]) { // nije polozio dovoljno izbornih predmeta predmet // Spisak izbornih $q71 = myquery("select iz.predmet from izborni_slot as iz, plan_studija as ps where ps.godina_vazenja={$najnoviji_plan} and ps.studij={$trenutni_studij} and ps.semestar<={$trenutni_semestar} and ps.obavezan=0 and ps.predmet=iz.id"); $validni_izborni = array(); while ($r71 = mysql_fetch_row($q71)) { $validni_izborni[] = $r71[0]; } // Određujemo predmet sa drugog odsjeka koji je slušao $nadjen = 0; $q72 = myquery("select pk.predmet, p.naziv, p.ects, pk.semestar from ponudakursa as pk, student_predmet as sp, predmet as p where sp.student={$userid} and sp.predmet=pk.id and pk.akademska_godina={$proslagodina} and pk.semestar={$r30['0']} and pk.obavezan=0 and pk.predmet=p.id"); while ($r72 = mysql_fetch_row($q72)) { if (!in_array($r72[0], $validni_izborni)) { $nadjen = 1; // Da li ga je položio? $q74 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r72['0']} and ocjena>5"); if (mysql_result($q74, 0, 0) == 0) { $predmet_naziv[$r72[0]] = $r72[1]; $predmet_ects[$r72[0]] = $r72[2]; $predmet_semestar[$r72[0]] = $r72[3]; if ($r72[3] < $trenutni_semestar - 1) { $predmet_stari[$r72[0]] = 1; } else { $predmet_stari[$r72[0]] = 0; } } } } // Nismo pronašli predmet sa drugog odsjeka koji je student slušao // Znači da student nije ni upisao sve potrebne izborne predmete if ($nadjen == 0) { $predmet_naziv[$r30[1]] = $naziv . ")"; $predmet_ects[$r30[1]] = $ects; $predmet_semestar[$r30[1]] = $r30[0]; if ($r30[0] < $trenutni_semestar - 1) { $predmet_stari[$r30[1]] = 1; } else { $predmet_stari[$r30[1]] = 0; } } } } } } // Da li je već u koliziji? $q15 = myquery("select count(*) from student_predmet as sp, ponudakursa as pk where sp.student={$userid} and sp.predmet=pk.id and pk.studij={$trenutni_studij} and pk.semestar>{$trenutni_semestar} and pk.akademska_godina={$zagodinu}"); if (mysql_result($q15, 0, 0) > 0) { ?> <p>Vaš zahtjev za koliziju je prihvaćen. Upisani ste u odabrane predmete (vidjećete ih na spisku predmeta kada zvanično počne sljedeća akademska godina).</p><?php return; } // Uslov za upis u sljedeću godinu if (count($predmet_naziv) == 0) { ?> <p>Vi ste dali uslov za upis u <?php echo $snazivstudija; ?> , <?php echo $trenutni_semestar + 1; ?> . semestar bez kolizije! Možete popuniti <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a> kako biste izabrali izborne predmete.</p> <?php return; } else { if (count($predmet_naziv) <= 1) { $da_stari_je = 0; foreach ($predmet_stari as $stari) { if ($stari) { $da_stari_je = 1; } } if ($da_stari_je == 0) { ?> <p>Vi ste dali uslov za upis u <?php echo $snazivstudija; ?> , <?php echo $trenutni_semestar + 1; ?> . semestar bez kolizije! Možete popuniti <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a> kako biste izabrali izborne predmete.</p> <?php return; } // else ide na koliziju } else { if (count($predmet_naziv) > 3) { ?> <p>Trenutno ne ispunjavate uslov za koliziju jer imate <?php echo count($predmet_naziv); ?> nepoložena predmeta, a možete imati maksimalno tri.</p> <?php /* <p>Prema trenutnoj evidenciji, Vaši nepoloženi predmeti su:</p> <ul><? foreach ($predmet_naziv as $id=>$naziv) { print "<li>$naziv"; if ($predmet_stari[$id]) print " (predmet sa nižih godina, ne može se prenijeti)"; print "</li>\n"; } ?> </ul>*/ ?> <p>Ukoliko je ovo greška i položili ste neki od ovih predmeta, hitno kontaktirajte predmetnog nastavnika kako bi unio ocjenu!!!</p> <?php // return; } } } // Nemoguće je da student ima previše starih predmeta (trenutno: više od jedan) jer onda ne bi mogao upisati godinu. Eventualno je mogao koristiti koliziju prošle godine, ali bi onda varijabla $trenutni_semestar bila niža pa ti predmeti ne bi bili "stari" // Da li već postoji zahtjev za koliziju? $q18 = myquery("select count(*) from kolizija where student={$userid} and akademska_godina={$zagodinu}"); if (mysql_result($q18, 0, 0) > 0) { ?> <p>Već imate jedan zahtjev za koliziju. Možete ponovo popuniti zahtjev, pri čemu se stari briše.</p> <p>Kliknite na jedan od linkova ispod za printanje zahtjeva za:<br> - <a href="?sta=student/kolizijapdf&semestar=1">zimski semestar</a><br> - <a href="?sta=student/kolizijapdf&semestar=2">ljetnji semestar</a></p> <?php } // UNOS U BAZU // Akcija za unos podataka o koliziji u bazu if ($_POST['akcija'] == "korak2" && $studij > 0 && $godina > 0 && $prenosi > 0) { // Provjeravamo da li je odabran ispravan broj ECTSova po semestru foreach ($predmet_ects as $id => $ects) { if ($id == $_POST['prenosi'] || $_POST["polaze-{$id}"]) { continue; } if ($predmet_semestar[$id] % 2 == 1) { $zimskiects += $ects; } else { $ljetnjiects += $ects; } } $zze = $zle = 0; $predmeti1 = $predmeti2 = array(); foreach ($_POST as $key => $value) { if (substr($key, 0, 10) == "obavezni1-" || substr($key, 0, 10) == "izborni1--") { $predmet = intval(substr($key, 10)); $q200 = myquery("select ects from predmet where id={$predmet}"); if (mysql_num_rows($q200) < 1) { niceerror("Izabran je nepoznat predmet!"); return; } $zze += mysql_result($q200, 0, 0); array_push($predmeti1, $predmet); } if (substr($key, 0, 10) == "obavezni2-" || substr($key, 0, 10) == "izborni2--") { $predmet = intval(substr($key, 10)); $q200 = myquery("select ects from predmet where id={$predmet}"); if (mysql_num_rows($q200) < 1) { niceerror("Izabran je nepoznat predmet!"); return; } $zle += mysql_result($q200, 0, 0); array_push($predmeti2, $predmet); } } if ($zze > 30 - $zimskiects || $zle > 30 - $ljetnjiects) { niceerror("Izabrano je previše ECTS kredita u jednom od semestara! {$zze}>" . (30 - $zimskiects) . " {$zle}>" . (30 - $ljetnjiects)); return; } // Provjera kapaciteta foreach (array_merge($predmeti1, $predmeti2) as $predmet) { if (provjeri_kapacitet($predmet, $zagodinu, $najnoviji_plan) == 0) { $q117 = myquery("SELECT naziv FROM predmet WHERE id={$predmet}"); niceerror("Predmet " . mysql_result($q117, 0, 0) . " se ne može izabrati jer su dostupni kapaciteti za taj predmet popunjeni"); zamgerlog2("popunjen kapacitet za predmet", $predmet); return; } } // Sve ok, ubacujemo $q210 = myquery("delete from kolizija where student={$userid} and akademska_godina={$zagodinu}"); // Brisem prethodnu koliziju $q212 = myquery("delete from septembar where student={$userid} and akademska_godina={$zagodinu}"); // Brisem prethodnu koliziju foreach ($predmeti1 as $predmet) { $q210 = myquery("insert into kolizija set student={$userid}, akademska_godina={$zagodinu}, semestar=1, predmet={$predmet}"); } foreach ($predmeti2 as $predmet) { $q210 = myquery("insert into kolizija set student={$userid}, akademska_godina={$zagodinu}, semestar=2, predmet={$predmet}"); } foreach ($predmet_ects as $id => $ects) { if ($_POST["polaze-{$id}"]) { $q210 = myquery("insert into septembar set student={$userid}, akademska_godina={$zagodinu}, predmet={$id}"); } } zamgerlog("student u{$userid} kreirao zahtjev za koliziju", 2); // 2 - edit nicemessage("Kreirali ste zahtjev za koliziju."); ?> <p>Studentska služba će vas upisati na odgovarajuće predmete prilikom upisa na godinu.</p> <p>Kliknite na jedan od linkova ispod za printanje zahtjeva za:<br> - <a href="?sta=student/kolizijapdf&semestar=1">zimski semestar</a><br> - <a href="?sta=student/kolizijapdf&semestar=2">ljetnji semestar</a></p> <?php return; } // PRVI EKRAN - IZBOR STUDIJA I PREDMETA ZA PRENOS // Ako je bilo koji od primljenih parametara nula, dajemo izbor studija, godine i prenesenog predmeta if (!$_POST['akcija'] == "korak1" || $studij == 0 || $godina == 0 || $prenosi == 0) { // Odredjujemo ciljni studij $studij = $trenutni_studij; $godina = intval(($trenutni_semestar + 3) / 2); if ($trenutni_semestar >= $szavrsni_semestar) { $q20 = myquery("select id, naziv from studij where moguc_upis=1 and institucija={$sinstitucija} and tipstudija>{$stipstudija}"); // FIXME pretpostavka je da su tipovi studija poredani po ciklusima if (mysql_num_rows($q20) > 0) { $studij = mysql_result($q20, 0, 0); $snazivstudija = mysql_result($q20, 0, 1); $godina = 1; } else { // Nema gdje dalje... postavljamo sve na nulu $studij = 0; $godina = 1; } } // Određujemo najnoviji plan, ali ovaj put za ciljni studij // FIXME: prebaciti gore unutar if(mys...($q2)>0) { ??? $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $najnoviji_plan = mysql_result($q6, 0, 0); ?> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/kolizija"> <input type="hidden" name="akcija" value="korak1"> <?php // Ispis ponude za polaganje if (count($predmet_naziv) > 3) { ?> <p><b>Izaberite predmete koje ste položili ili ih planirate položiti do kraja septembarskog roka:</b><br /> <?php foreach ($predmet_naziv as $id => $naziv) { ?> <input type="checkbox" name="polaze-<?php echo $id; ?> " <?php ?> ><?php echo $naziv; ?> (<?php echo $predmet_semestar[$id]; ?> . semestar, <?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php } ?> <p>VAŽNO: Ako ne položite neki od ovih predmeta, Vaš zahtjev za koliziju se poništava!</p> <?php } // Ispis izbora predmeta koji će student prenijeti // Ima li ijedan predmet koji se može prenijeti? $ima = 0; foreach ($predmet_stari as $id => $stari) { if ($stari == 0) { $ima = 1; } } if ($ima) { ?> <p><b>Izaberite predmet koji prenosite redovno:</b><br /> <?php foreach ($predmet_naziv as $id => $naziv) { ?> <input type="radio" name="prenosi" value="<?php echo $id; ?> "<?php if ($predmet_stari[$id]) { print " DISABLED"; } ?> ><?php echo $naziv; ?> (<?php echo $predmet_semestar[$id]; ?> . semestar, <?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php } ?> <p>Ostale predmete prenosite "koliziono" što znači da u odgovarajućem semestru (ljetnom ili zimskom) ne možete slušati odgovarajući broj ECTS kredita.</p> <?php } else { print '<input type="hidden" name="prenosi" value="-1">'; } // Izbor studija ?> <p><hr><br /> Studij: <select name="studij" id="studij" onchange="javascript:refresh()"><option></option> <?php // Spisak studija $q30 = myquery("select id, naziv from studij where moguc_upis=1 order by tipstudija, naziv"); while ($r30 = mysql_fetch_row($q30)) { print "<option value=\"{$r30['0']}\""; if ($r30[0] == $studij) { print " selected"; } print ">{$r30['1']}</option>\n"; } ?> </select></p> <p>Godina studija: <input type="text" name="godina" id="godina" value="<?php echo $godina; ?> "></p> <p><input type="submit" value="Dalje >>"></p> </form> <?php return; } // if ($studij==0 || $godina==0 || $prenosi==0) // ISPIS IZBORA PREDMETA // (odnosno korak 2 wizarda) ?> <form action="index.php" method="POST" name="mojaforma"> <input type="hidden" name="sta" value="student/kolizija"> <input type="hidden" name="akcija" value="korak2"> <?php // Odredjujemo najnoviji plan studija za odabrani studij $q6 = myquery("select godina_vazenja from plan_studija where studij={$studij} order by godina_vazenja desc limit 1"); if (mysql_num_rows($q6) < 1) { niceerror("Nepostojeći studij"); return; } $najnoviji_plan = mysql_result($q6, 0, 0); foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"] && $id == $_POST['prenosi']) { niceerror("Pogrešni podaci!"); ?> Ne možete istovremeno izabrati da ćete predmet položiti i da ga prenosite. <?php return; } } $br_polozice = 0; foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"]) { $br_polozice++; } } if ($br_polozice > count($predmet_naziv) - 2) { niceerror("Pa nećete sve položiti :)"); ?> <p>Vratite se nazad i ostavite barem dva predmeta koja nećete položiti kako biste bili kolizija. Ako sve položite onda niste kolizija.</p> <?php return; } // Ispisujemo izabrani studij, godinu i preneseni predmet ?> <input type="hidden" name="studij" value="<?php echo $studij; ?> "> <input type="hidden" name="godina" value="<?php echo $godina; ?> "> <p>Kolizija za studij <b><?php echo $naziv_studija; ?> </b> (<b><?php echo $godina; ?> .</b> godina)<br /> <?php foreach ($predmet_naziv as $id => $naziv) { if ($_POST["polaze-{$id}"]) { ?> Položiće: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <input type="hidden" name="polaze-<?php echo $id; ?> " value="on"> <?php } } foreach ($predmet_naziv as $id => $naziv) { if ($id == $_POST['prenosi']) { ?> Preneseni predmet: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <input type="hidden" name="prenosi" value="<?php echo $prenosi; ?> "> <?php } } $broj_kolizionih_predmeta = 0; foreach ($predmet_naziv as $id => $naziv) { if ($id != $_POST['prenosi'] && !$_POST["polaze-{$id}"]) { ?> Kolizioni predmet: <b><?php echo $naziv; ?> </b> (<?php echo $predmet_ects[$id]; ?> ECTS)<br /> <?php $broj_kolizionih_predmeta++; } } if ($broj_kolizionih_predmeta > 3) { ?> <?php nicemessage("Izabrali ste više od dva koliziona predmeta"); ?> <p>Možete imati maksimalno dva predmeta u koliziji, ostale predmete trebate ili položiti ili prenijeti.</p> <p><a href="?sta=student/kolizija">Nazad na izbor studija, godine i prenesenog predmeta</a></p> <?php return; } // Računamo broj ECTSova u zimskom i ljetnjem periodu foreach ($predmet_ects as $id => $ects) { if ($id == $_POST['prenosi'] || $_POST["polaze-{$id}"]) { continue; } if ($predmet_semestar[$id] % 2 == 1) { $zimskiects += $ects; } else { $ljetnjiects += $ects; } } // JavaScript ?> <SCRIPT language="JavaScript"> // Funckija koja ne dozvoljava da se selektuje različit broj polja od navedenog var globalna; function jedanod(slot, clicked) { var template = "izborni-"+slot; var found=false; for (var i=0; i<document.mojaforma.length; i++) { var el = document.mojaforma.elements[i]; if (el.type != "checkbox") continue; if (el==clicked) continue; if (template == el.name.substr(0,template.length)) { if (clicked.checked==true && el.checked==true) { el.checked=false; found=true; break; } if (clicked.checked==false && el.checked==false) { el.checked=true; found=true; break; } } } if (!found) { globalna=clicked; setTimeout("revertuj()", 100); } return found; } function revertuj() { if (globalna.checked) globalna.checked=false; else globalna.checked=true; } function updateects(sta, zakoliko, radio) { var layer; if (sta==0) layer=document.getElementById('zimskiizbor'); else layer=document.getElementById('ljetnjiizbor'); var vrijednost=parseFloat(layer.innerHTML); if (radio.checked) vrijednost+=zakoliko; else vrijednost-=zakoliko; layer.innerHTML=vrijednost; if (sta==0 && vrijednost><?php echo 30 - $zimskiects; ?> ) document.getElementById('zimskicrveno').style.color="red"; else if (sta==0) document.getElementById('zimskicrveno').style.color="black"; if (sta==1 && vrijednost><?php echo 30 - $ljetnjiects; ?> ) document.getElementById('ljetnjicrveno').style.color="red"; else if (sta==1) document.getElementById('ljetnjicrveno').style.color="black"; } function provjeri_submit() { var zimski=parseFloat(document.getElementById('zimskiizbor').innerHTML); var ljetnji=parseFloat(document.getElementById('ljetnjiizbor').innerHTML); if (zimski><?php echo 30 - $zimskiects; ?> || ljetnji><?php echo 30 - $ljetnjiects; ?> ) { alert ("Izabrali ste previše ECTS kredita u koliziji!"); return false; } return true; } </SCRIPT> <?php // Ispis ?> <p><a href="?sta=student/kolizija">Nazad na izbor studija, godine i prenesenog predmeta</a></p> <p><hr><br /> Izaberite predmete koje želite slušati. Možete izabrati maksimalno <?php echo 30 - $zimskiects; ?> kredita na zimskom semestru i <?php echo 30 - $ljetnjiects; ?> kredita na ljetnom.</p> <p>NAPOMENA: Morate popuniti i <a href="?sta=student/ugovoroucenju">Ugovor o učenju</a>, ali za prethodnu godinu (za <?php echo $godina - 1; ?> . godinu studija).</p> <p><span id="zimskicrveno"><b><?php echo $godina * 2 - 1; ?> . semestar (izabrano <span id="zimskiizbor">0</span> kredita, max. <?php echo 30 - $zimskiects; ?> ):</b></span><br /> <?php $q40 = myquery("select predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$studij} and semestar=" . ($godina * 2 - 1) . " order by obavezan desc, predmet"); $is_bilo = array(); while ($r40 = mysql_fetch_row($q40)) { if ($r40[1] == 1) { // obavezan // Ako je vec polozen predmet preskacemo $q45 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r40['0']}"); if (mysql_result($q45, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $q50 = myquery("select naziv, ects from predmet where id={$r40['0']}"); $pnaziv = mysql_result($q50, 0, 0); $pects = mysql_result($q50, 0, 1); // Zavrsni rad se ne moze izabrati u koliziji if ($pects == 12) { continue; } ?> <input type="checkbox" name="obavezni1-<?php echo $r40[0]; ?> " onchange="javascript:updateects(0, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } else { // izborni if (count($is_bilo) == 0) { print "Izborni predmeti:<br />\n"; } // Da li je već bio izborni slot? if (in_array($r40[0], $is_bilo)) { continue; } array_push($is_bilo, $r40[0]); $q60 = myquery("select p.id, p.naziv, p.ects from predmet as p, izborni_slot as iz where iz.id={$r40['0']} and iz.predmet=p.id"); while ($r60 = mysql_fetch_row($q60)) { // Ako je vec polozen predmet preskacemo $q65 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']}"); if (mysql_result($q65, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $pnaziv = $r60[1]; $pects = $r60[2]; ?> <input type="checkbox" name="izborni1--<?php echo $r60[0]; ?> " onchange="javascript:updateects(0, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } } } ?> <p><span id="ljetnjicrveno"><b><?php echo $godina * 2; ?> . semestar (izabrano <span id="ljetnjiizbor">0</span> kredita, max. <?php echo 30 - $ljetnjiects; ?> ):</b></span><br /> <?php $q40 = myquery("select predmet, obavezan from plan_studija where godina_vazenja={$najnoviji_plan} and studij={$studij} and semestar=" . $godina * 2 . " order by obavezan desc, predmet"); $is_bilo = array(); while ($r40 = mysql_fetch_row($q40)) { if ($r40[1] == 1) { // obavezan // Ako je vec polozen predmet preskacemo $q45 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r40['0']}"); if (mysql_result($q45, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $q50 = myquery("select naziv, ects from predmet where id={$r40['0']}"); $pnaziv = mysql_result($q50, 0, 0); $pects = mysql_result($q50, 0, 1); // Zavrsni rad se ne moze izabrati u koliziji if ($pects == 12) { continue; } ?> <input type="checkbox" name="obavezni2-<?php echo $r40[0]; ?> " onchange="javascript:updateects(1, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } else { // izborni if (count($is_bilo) == 0) { print "Izborni predmeti:<br />\n"; } // Da li je već bio izborni slot? if (in_array($r40[0], $is_bilo)) { continue; } array_push($is_bilo, $r40[0]); $q60 = myquery("select p.id, p.naziv, p.ects from predmet as p, izborni_slot as iz where iz.id={$r40['0']} and iz.predmet=p.id"); while ($r60 = mysql_fetch_row($q60)) { // Ako je vec polozen predmet preskacemo $q65 = myquery("select count(*) from konacna_ocjena where student={$userid} and predmet={$r60['0']}"); if (mysql_result($q65, 0, 0) > 0) { continue; } // Ako je vec polozen predmet preskacemo $pnaziv = $r60[1]; $pects = $r60[2]; ?> <input type="checkbox" name="izborni2--<?php echo $r60[0]; ?> " onchange="javascript:updateects(1, <?php echo $pects; ?> , this)"> <?php echo $pnaziv; ?> (<?php echo $pects; ?> ECTS)<br /> <?php } } } ?> </p> <p> <input type="submit" value="Potvrđujem koliziju" onclick="javascript:return provjeri_submit()"></form></p> <?php }