Guest User

Untitled

a guest
Oct 17th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 23.70 KB | None | 0 0
  1. <?php
  2.  
  3. function studentska_plan_studija(){
  4.     global $userid,$user_siteadmin,$user_studentska;
  5.  
  6.     // Provjera privilegija
  7.     if (!$user_studentska && !$user_siteadmin) {
  8.         zamgerlog("nije studentska",3); // 3: error
  9.         biguglyerror("Pristup nije dozvoljen.");
  10.         return;
  11.     }
  12. }
  13.  
  14. // Konfigurabilna sekcija
  15.  
  16.  
  17. define('BROJ_SEMESTARA', 10);
  18. define('MAX_BROJ_PREDMETA_PO_SEMESTRU', 10);
  19.  
  20. # Provjeris je li postavljen broj izbornih i ako nekim cudom nije postavis na
  21. # svoju tu vrijednost od 6, to je dovoljno dobro rjesenje al onda moras
  22. # pazit da neko ranije nije unio neki drugi broj (i.e. prvi put stavim 9 i
  23. # kad hocu izmijenit stavim 6 pa mi ne prikaze ona 3 predmeta)
  24. if(isset($_POST['max_izbornih']) and $_POST['max_izbornih'] > 0 ){
  25.     define('MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU', $_POST['max_izbornih']);
  26. } else {
  27.     define('MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU', 6);
  28. }
  29.  
  30. // Konekcija na bazu
  31. $db_link = mysql_connect("localhost","elma","elma");
  32. if (!$db_link) {
  33.     debugError('Konekcija na bazu nije uspjela');
  34.     exit;
  35. }
  36.  
  37. // Biranje baze koja se koristi
  38. if (!mysql_select_db("elma", $db_link)) {
  39.     debugError('Baza nije izabrana');
  40.     exit;
  41. }
  42.  
  43.  
  44. // Formiraj niz semestara
  45. $data_semestar = array();
  46. $data_semestar[] = 'I';
  47. $data_semestar[] = 'II';
  48. $data_semestar[] = 'III';
  49. $data_semestar[] = 'IV';
  50. $data_semestar[] = 'V';
  51. $data_semestar[] = 'VI';
  52. $data_semestar[] = 'VII';
  53. $data_semestar[] = 'VIII';
  54. $data_semestar[] = 'IX';
  55. $data_semestar[] = 'X';
  56.  
  57.  
  58. // Ucitaj podatke o studijima
  59. $data_studij = array();
  60. $data_zavrsni_semestar = array();
  61. $sql_studij = " SELECT id, naziv, zavrsni_semestar FROM `studij` ";
  62. if(!($query_studij = mysql_query($sql_studij))){
  63.     debugError('Upit nije uspio: '.(mysql_error()));
  64.     exit;
  65. }
  66. if(mysql_num_rows($query_studij) > 0){
  67.  
  68.     while($row = mysql_fetch_array($query_studij)){
  69.         $data_studij[$row['id']] = $row['naziv'];
  70.         $data_zavrsni_semestar[$row['id']] = $row['zavrsni_semestar'];
  71.     }
  72.  
  73. }else{
  74.     debugError('Nema podataka o studijima');
  75.     exit;
  76. }
  77.  
  78. //Ucitaj podatke o akademskoj godini<br />
  79.  
  80. $data_akademska_godina = array();
  81. $sql_akademska_godina = " SELECT id, naziv FROM `akademska_godina` ";
  82. if(!($query_akademska_godina = mysql_query($sql_akademska_godina))){
  83.     debugError('Upit nije uspio: '.(mysql_error()));
  84.     exit;
  85. }
  86. if(mysql_num_rows($query_akademska_godina) > 0){
  87.  
  88.     while($row = mysql_fetch_array($query_akademska_godina)){
  89.         $data_akademska_godina[$row['id']] = $row['naziv'];
  90.     }
  91.  
  92. }else{
  93.     debugError('Nema podataka o akademskim godinama');
  94.     exit;
  95. }
  96.  
  97.  
  98. // Podaci o predmetima
  99. $data_predmet = array();
  100. $sql_predmet = " SELECT id, naziv FROM `predmet` ";
  101. if(!($query_predmet = mysql_query($sql_predmet))){
  102.     debugError('Upit nije uspio: '.(mysql_error()));
  103.     exit;
  104. }
  105. if(mysql_num_rows($query_predmet) > 0){
  106.  
  107.     while($row = mysql_fetch_array($query_predmet)){
  108.         $data_predmet[$row['id']] = $row['naziv'];
  109.     }
  110.  
  111. }else{
  112.     debugError('Nema podataka o predmetima');
  113.     exit;
  114. }
  115.  
  116. // Podaci o predmetima s kratki_naziv
  117. $data_predmetk = array();
  118. $sql_predmetk = " SELECT id, kratki_naziv FROM `predmet` ";
  119. if(!($query_predmetk = mysql_query($sql_predmetk))){
  120.     debugError('Upit nije uspio: '.(mysql_error()));
  121.     exit;
  122. }
  123. if(mysql_num_rows($query_predmetk) > 0){
  124.  
  125.     while($row = mysql_fetch_array($query_predmetk)){
  126.         $data_predmetk[$row['id']] = $row['kratki_naziv'];
  127.     }
  128.  
  129. }else{
  130.     debugError('Nema podataka o predmetima');
  131.     exit;
  132. }
  133.  
  134.  
  135. # Dohvatis "slotove" o kojim vedran prica
  136. # probaj ovo skontat!!!
  137.  
  138. $slotovi = array();
  139. $slot_predmeti = array();
  140.  
  141. $izborni_slotovi = mysql_query("SELECT * FROM izborni_slot");
  142. if(!($izborni_slotovi)){
  143.     debugError('Upit nije uspio: '.(mysql_error()));
  144.     exit;
  145. }
  146. if(mysql_num_rows($izborni_slotovi) > 0){
  147.  
  148.     while($row = mysql_fetch_array($izborni_slotovi)){
  149.        
  150.         if(! in_array($row['id'], $slotovi)){
  151.             $slotovi[] = $row['id'];
  152.         }
  153.        
  154.         $slot_predmeti[$row['id']][] = $row['predmet'];
  155.     }
  156.  
  157. }else{
  158.     debugError('Nema podataka o predmetima');
  159.     exit;
  160. }
  161.  
  162. // Niz predmeta, zbog prikupljanja POST/GET podataka
  163. $get_post_array = array('posted', 'studij','akademska_godina');
  164. for($i = 0; $i < BROJ_SEMESTARA; $i++){
  165.  
  166.     for($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++){
  167.         $get_post_array[] = 'semestar_'.$i.'_predmet_'.$j;
  168.     }
  169.  
  170.     for($j = 0; $j < MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; $j++){
  171.         $get_post_array[] = 'semestar_'.$i.'_izborni_predmet_'.$j;
  172.     }
  173. }
  174.  
  175. // Preuzmi potrebne GET/POST varijable
  176. getpost_ifset($get_post_array);
  177.  
  178.  
  179. # provjeri je li se desilo da u
  180. # jednom semestru ima da je neki slot
  181. # postavljen dva puta ili neki predmet
  182. $greskaSlotovi = false;
  183. if($studij and $posted){
  184. for($i = 0; $i < BROJ_SEMESTARA; $i++){
  185.  
  186.     $niz = array();
  187.     for($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++){
  188.         $varijabla = 'semestar_'.$i.'_predmet_'.$j;
  189.         if($$varijabla == 0) continue;
  190.         $niz[] = $$varijabla;
  191.     }
  192.     if(count($niz) > count(array_unique($niz))){ $greskaSlotovi = true; }
  193.  
  194.     $niz = array();
  195.     for($j = 0; $j < MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU; $j++){
  196.         $varijabla = 'semestar_'.$i.'_izborni_predmet_'.$j;
  197.         if($$varijabla == 0) continue;
  198.         $niz[] = $$varijabla;
  199.     }
  200.     if(count($niz) > count(array_unique($niz))){
  201.         $greskaSlotovi = true;
  202.     }
  203. }
  204. if($greskaSlotovi){ $posted=false; }
  205. }
  206.  
  207. ############################################################ FORMA 1: Odabir godine i studija
  208. if(!$studij){
  209.  
  210.     // Spremi odgovarajucu formu
  211.     $html = '<html>';
  212.     $html .= '<head>';
  213.     $html .= '<title>';
  214.     $html .= 'Izaberi studij';
  215.     $html .= '</title>';
  216.     $html .= '</head>';
  217.     $html .= '<body>';
  218.  
  219.     $html .= '<table align="center" border="1" width="80%" style="border-style:solid;">';
  220.  
  221.     $html .= '<tr>';
  222.     $html .= '<td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">';
  223.     $html .= 'Izaberi studij';
  224.     $html .= '</td>';
  225.     $html .= '</tr>';
  226.  
  227.     $html .= '<tr>';
  228.     $html .= '<td>';
  229.     $html .= '<form name="form" method="post" action="'.($_SERVER['PHP_SELF']).'">';
  230.     $html .= '<table align="center" border="0" width="100%">';
  231.  
  232.  
  233.     // Odabir naziva studija
  234.     $html_row = '<tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;">';
  235.  
  236.     $html_row .= '<td>';
  237.     $html_row .= 'Studij';
  238.     $html_row .= '</td>';
  239.  
  240.     $html_row .= '<td>';
  241.     $html_row .= '<select name="studij">';
  242.  
  243.     foreach($data_studij as $id => $naziv){
  244.         $html_row .= '<option value="'.$id.'">'.$naziv.'</option>';
  245.     }
  246.  
  247.     $html_row .= '</select>';
  248.     $html_row .= '</td>';
  249.  
  250.     $html_row .= '</tr>';
  251.     $html .= $html_row;
  252.        
  253.        
  254.     // Odabir naziva akademske godine
  255.     $html_row = '<tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;">';
  256.  
  257.     $html_row .= '<td>';
  258.     $html_row .= 'Akademska godina';
  259.     $html_row .= '</td>';
  260.  
  261.     $html_row .= '<td>';
  262.     $html_row .= '<select name="akademska_godina">';
  263.  
  264.     foreach($data_akademska_godina as $id => $naziv){
  265.         $html_row .= '<option value="'.$id.'">'.$naziv.'</option>';
  266.     }
  267.  
  268.     $html_row .= '</select>';
  269.     $html_row .= '</td>';
  270.  
  271.     $html_row .= '</tr>';
  272.     $html .= $html_row;
  273.  
  274.    
  275.     $html .= '<tr><td>';
  276.     $html .= 'Max. broj izbornih predmeta u semetru:';
  277.     $html .= '</td><td>';
  278.     $html .= '<input type="text" name="max_izbornih" value="'.(MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU).'">';
  279.     $html .= '</td></tr>';
  280.  
  281.  
  282.     // Submit input
  283.     $html .= '<tr>';
  284.  
  285.     $html .= '<td>';
  286.     $html .= '</td>';
  287.  
  288.     $html .= '<td>';
  289.     $html .= '<input type="submit" value="Kreiraj plan studija">';
  290.     $html .= '</td>';
  291.      
  292.  
  293.     $html .= '</tr>';
  294.  
  295.     $html .= '</table>';
  296.     $html .= '</form>';
  297.     $html .= '</td>';
  298.     $html .= '</tr>';
  299.  
  300.     $html .= '</table>';
  301.     $html .= '</body>';
  302.     $html .= '</html>';
  303.  
  304.  
  305.     // Isprintaj formu
  306.     echo $html;
  307.  
  308.  
  309.  
  310. ############################################################ FORMA 2: Kreiranje studija (definisanje predmeta)
  311. }else if(!$posted){
  312.  
  313.  
  314.  
  315.     $sql_pretraga_id="SELECT * FROM `plan_studija` WHERE `godina_vazenja` = '$akademska_godina' and `studij` = '$studij'";
  316.  
  317.     $rez=mysql_query($sql_pretraga_id);
  318.     if(!$rez){
  319.         die('Upit za godinu vazenja nije uspio: '.mysql_error());
  320.     }
  321.     if(mysql_num_rows($rez) > 0){
  322.            
  323.         //Izbacivanje greske u slučaju da vec plan postoji u bazi
  324.         $html = '<html>';
  325.         $html .= '<head>';
  326.         $html .= '<title>';
  327.         $html .= 'Kreiranje plana studija';
  328.         $html .= '</title>';
  329.         $html .= '</head>';
  330.         $html .= '<body>';
  331.  
  332.         $html .= '<table align="center" border="1" width="60%" style="border-style:solid;">';
  333.  
  334.         $html .= '<tr>';
  335.         $html .= '<td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">';
  336.         $html .= 'Kreiranje plana studija ('.($data_studij[$studij]).')';
  337.         $html .= '</td>';
  338.         $html .= '</tr>';
  339.        
  340.         $html .= '<tr>';
  341.         $html .= '<td>';
  342.         $html .= 'Ukoliko semestar ima manje predmeta ostavite polja viska prazna (vrijednost "izaberi").';
  343.         $html .= '</td>';
  344.         $html .= '</tr>';
  345.            
  346.         $html .= '<tr>';
  347.         $html .= '<td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">';
  348.         $html .= 'Plan vec postoji u bazi, ukoliko zelite izmjeniti plan to mozete uraditi u formi ispod, ukoliko zelite vidjeti plan kliknite na ok';
  349.         $html .= '</td>';
  350.         $html .= '</tr>';
  351.            
  352.         $html .= '</table>';
  353.         $html .= '</body>';
  354.         $html .= '</html>';
  355.  
  356.  
  357.          
  358.  
  359.         // Isprintaj formu
  360.         echo $html;
  361.            
  362.            
  363.     }
  364.  
  365.  
  366.  
  367.  
  368.  
  369.     // Spremi odgovarajucu formu
  370.     $html = '<html>';
  371.     $html .= '<head>';
  372.     $html .= '<title>';
  373.     $html .= 'Kreiranje plana studija';
  374.     $html .= '</title>';
  375.     $html .= '</head>';
  376.     $html .= '<body>';
  377.  
  378.     $html .= '<form name="form" method="post" action="'.($_SERVER['PHP_SELF']).'">';
  379.     $html .= '<input type="hidden" name="posted" value="1">';
  380.     $html .= '<input type="hidden" name="studij" value="'.$studij.'">';
  381.     $html .= '<input type="hidden" name="akademska_godina" value="'.$_POST['akademska_godina'].'">';
  382.        
  383.  
  384.     $html .= '<table align="center" border="1" width="60%" style="border-style:solid;">';
  385.  
  386.     $html .= '<tr>';
  387.     $html .= '<td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">';
  388.     $html .= 'Kreiranje plana studija ('.($data_studij[$studij]).')';
  389.     $html .= '</td>';
  390.     $html .= '</tr>';
  391.  
  392.     if($greskaSlotovi){
  393.         $html .= '<tr>';
  394.         $html .= '<td style="color:red;">';
  395.         $html .= '<b>Semestar ne moze imati dva ista slota ili dva ista predmeta!';
  396.         $html .= '</td>';
  397.         $html .= '</tr>';
  398.     }
  399.    
  400.     $html .= '<tr>';
  401.     $html .= '<td>';
  402.     $html .= 'Ukoliko semestar ima manje predmeta ostavite polja viska prazna (vrijednost "izaberi").';
  403.     $html .= '</td>';
  404.     $html .= '</tr>';
  405.  
  406.  
  407.     // Petlja po semestrima
  408.     ################################################################################ PETLJA PO SEMETRIMA POCINJE
  409.     for($i = 0; $i < BROJ_SEMESTARA; $i++){
  410.  
  411.  
  412.  
  413.         // Nemaju svi studiji isti broj semestara
  414.         $broj_semestra = $i + 1;
  415.         if($data_zavrsni_semestar[$studij] > 2){
  416.  
  417.             if($broj_semestra < 3){
  418.                 continue;
  419.             }else if($broj_semestra > $data_zavrsni_semestar[$studij]){
  420.                 break;
  421.             }
  422.  
  423.         }else{
  424.  
  425.             if($broj_semestra > $data_zavrsni_semestar[$studij]){
  426.                 break;
  427.             }
  428.         }
  429.  
  430.  
  431.  
  432.         $html .= '<tr>';
  433.         $html .= '<td>';
  434.  
  435.         $html .= '<table   align="center" border="0" width="100%">';
  436.  
  437.         // Reci o kojem se semestru radi
  438.         $html_row = '<tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;">';
  439.  
  440.         $html_row .= '<td width="50%">';
  441.         $html_row .= '<b>Semestar: '.($data_semestar[$i]).'</b><hr>';
  442.         $html_row .= '</td>';
  443.  
  444.         $html_row .= '<td width="50%">';
  445.         $html_row .= '</td>';
  446.  
  447.         $html_row .= '</tr>';
  448.         $html .= $html_row;
  449.  
  450.  
  451.         // Petlja po predmetima
  452.         ################################################################################ PETLJA PO PREDMETIMA POCINJE
  453.        
  454.         $semestar_i = $i+1;
  455.         # pripremis sebi fino spisak predmeta koji vec imaju u bazi za ovaj semestar
  456.         # tacnije, pripremis spisak vec odabranih predmeta!
  457.         $brojac_izborni = 0;
  458.         $snimljeni_izborni = array();
  459.         $staro_izborni = mysql_query("SELECT * FROM plan_studija WHERE godina_vazenja='$akademska_godina' AND studij='$studij' AND semestar='$semestar_i' AND obavezan='1'");
  460.         while($red = mysql_fetch_assoc($staro_izborni)){
  461.             $snimljeni_izborni[$brojac_izborni] = $red['predmet'];
  462.             $brojac_izborni++;
  463.         }
  464.        
  465.        
  466.         for($j = 0; $j < MAX_BROJ_PREDMETA_PO_SEMESTRU; $j++){
  467.  
  468.  
  469.             // Odabir predmeta
  470.             $html_row = '<tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;">';
  471.  
  472.             $html_row .= '<td width="50%">';
  473.             $html_row .= 'Predmet '.($j+1);
  474.             $html_row .= '</td>';
  475.  
  476.             $html_row .= '<td width="50%">';
  477.             $html_row .= '<select name="semestar_'.$i.'_predmet_'.$j.'">';
  478.  
  479.             // Po default-u, nije nista odabrano
  480.             $html_row .= '<option value="0" selected>izaberi</option>';
  481.  
  482.             foreach($data_predmet as $id => $naziv){
  483.                 $odabran = '';
  484.                 if(isset($snimljeni_izborni[$j]) and $snimljeni_izborni[$j] == $id){
  485.                     $odabran = 'selected="selected"';
  486.                 }
  487.                 $html_row .= '<option value="'.$id.'" '.($odabran).'>'.$naziv.'</option>';
  488.             }
  489.  
  490.             $html_row .= '</select>';
  491.             $html_row .= '</td>';
  492.  
  493.             $html_row .= '</tr>';
  494.             $html .= $html_row;
  495.         }
  496.  
  497.  
  498.         // Petlja po izbornim predmetima
  499.         # Ovdje provjeris da nema u bazi vise predmeta nego sto je neko stavio
  500.         # na prvoj strani (ono stavio 6 a prvi put stavio 9) pa prikazes ukupan
  501.         # broj ako ih ima vise od date vrijednost
  502.         $izbornih_broj = MAX_BROJ_IZBORNIH_PREDMETA_PO_SEMESTRU;
  503.  
  504.         $test_broj_izbornih = mysql_query("SELECT COUNT(*) FROM plan_studija WHERE godina_vazenja='$akademska_godina' AND studij='$studij' AND semestar='$semestar_i' AND obavezan='0' LIMIT 1");
  505.  
  506.         if($test_broj_izbornih != false AND mysql_num_rows($test_broj_izbornih) == 1){
  507.            
  508.             $test_broj_izbornih_red = mysql_fetch_row($test_broj_izbornih);
  509.            
  510.             if($izbornih_broj < $test_broj_izbornih_red[0])
  511.             {
  512.                 $izbornih_broj = $test_broj_izbornih_red[0];
  513.             }          
  514.         }
  515.        
  516.         # pripremis sebi fino spisak predmeta koji vec imaju u bazi za ovaj semestar
  517.         # tacnije, pripremis spisak vec odabranih predmeta!
  518.         $brojac_izborni = 0;
  519.         $snimljeni_izborni = array();
  520.         $staro_izborni = mysql_query("SELECT * FROM plan_studija WHERE godina_vazenja='$akademska_godina' AND studij='$studij' AND semestar='$semestar_i' AND obavezan='0'");
  521.         while($red = mysql_fetch_assoc($staro_izborni)){
  522.             $snimljeni_izborni[$brojac_izborni] = $red['predmet'];
  523.             $brojac_izborni++;
  524.         }
  525.        
  526.         for($j = 0; $j < $izbornih_broj; $j++){
  527.  
  528.  
  529.             // Odabir predmeta
  530.             $html_row = '<tr style="padding-left: 30px; border-bottom: 1px solid #cecfce;">';
  531.  
  532.             $html_row .= '<td width="50%">';
  533.             if(!$j){
  534.                 $html_row .= '<hr>';
  535.             }
  536.             $html_row .= 'Izborni Predmet '.($j+1);
  537.             $html_row .= '</td>';
  538.  
  539.             $html_row .= '<td width="50%">';
  540.             $html_row .= '<select name="semestar_'.$i.'_izborni_predmet_'.$j.'">';
  541.  
  542.             // Po default-u, nije nista odabrano
  543.             $html_row .= '<option value="0" selected>izaberi</option>';
  544.  
  545.             foreach($slotovi as $id){
  546.                 $odabran = '';
  547.                 if(isset($snimljeni_izborni[$j]) and $snimljeni_izborni[$j] == $id){
  548.                     $odabran = 'selected="selected"';
  549.                 }
  550.                
  551.                 $html_row .= '<option value="'.$id.'" '.($odabran).'>';
  552.                
  553.                 $nizpredmeta=array();
  554.                
  555.                 foreach($slot_predmeti[$id] as $idp=>$predmet){
  556.                     $nizpredmeta[] = $data_predmetk[$predmet];
  557.                 }
  558.                 $html_row .= implode(', ', $nizpredmeta);
  559.                 $html_row .= "</option>";
  560.             }
  561.  
  562.             $html_row .= '</select>';
  563.             $html_row .= '</td>';
  564.  
  565.             $html_row .= '</tr>';
  566.             $html .= $html_row;
  567.         }
  568.  
  569.  
  570.         $html .= '</table>';
  571.  
  572.  
  573.         $html .= '</td>';
  574.         $html .= '</tr>';
  575.  
  576.     }
  577.  
  578.     // Submit input
  579.     $html .= '<tr>';
  580.  
  581.     $html .= '<td align="right" style=" padding-left: 170px; border-bottom: 1px solid #cecfce; background-color: #cccccc;">';
  582.     $html .= '<input type="submit" value="OK">';
  583.     $html .= '</td>';
  584.  
  585.     $html .= '</tr>';
  586.  
  587.  
  588.     $html .= '</table>';
  589.     $html .= '</form>';
  590.     $html .= '</body>';
  591.     $html .= '</html>';
  592.  
  593.  
  594.     // Isprintaj formu
  595.     echo $html;
  596.  
  597.  
  598.  
  599.  
  600. }else{
  601.     ############################################################ FORMA 3: Snimanje plana i stampa
  602.  
  603.  
  604.     // Obrisi stari plan, ako postoji, prije nego ubacis novi
  605.     # Ovo moras ovako radit, ako te vedran pita zasto kazes mu:
  606.     #
  607.     # Zato sto tabela plan_studija nema polje ID (primary key polje koje je unique i auto_increment)
  608.     # Da ima ID polje moglo bi se radit:
  609.     #   UPDATE plan_studija SET nova vrijednost WHERE ID='id_vrijednost'
  610.     # Posto nema ID polja ne postoji siguran nacin da se plan studija samo prepise (tj. da se neki
  611.     # individualni predmet prepise). Postoji nacin ali ti sigurno neces to skontat sve da ti napisem
  612.     # kod koji bi to radio. Ako te vedran pita moze li se ti mu reci da moze ali onda moras prepraviti
  613.     # kod tako da vodis brigu o vrijednostima koje su prije bile, tacnije, da bi to radilo samo sa
  614.     # SQL UPDATE imena ovih dropdowna bi morala imati u sebi staru vrijednost polja "predmet" iz tabele
  615.     # ili bi morala dodavati <input type="hidden" /> polja koja bi pamtila stare vrijednosti sto je
  616.     # preglupo i bespotrebno.
  617.     #
  618.     # I onda ga nakritikuj sto nije dodo ID polje. Svaka tabela u bilo cemu ikad mora uvijek imat ID
  619.     # polje! To nalaze dobar dizajn baze.
  620.     $sql_brisi_stari_plan = " DELETE FROM plan_studija ";
  621.     $sql_brisi_stari_plan .= " WHERE studij = ".$studij;
  622.     if(!($query = mysql_query($sql_brisi_stari_plan))){
  623.         debugError('Upit nije uspio: '.(mysql_error()));
  624.         exit;
  625.     }
  626.  
  627.     $sql_pretraga_id="SELECT * FROM `plan_studija` WHERE `godina_vazenja` = '$akademska_godina' and `studij` = '$studij'";
  628.    
  629.     $rez=mysql_query($sql_pretraga_id);
  630.     if(!$rez){
  631.         die('Upit za godinu vazenja nije uspio: '.mysql_error());
  632.     }
  633.  
  634.  
  635.     // Prodji kroz primljene podatke i vidi sta mozes sa njima
  636.     foreach($get_post_array as $field){
  637.  
  638.         if($$field && $field != 'semestar' && $field != 'posted'){
  639.            
  640.             // Inicijalizacija
  641.             $semestar = 0;
  642.             $predmet = 0;
  643.             $obavezan = 1;
  644.  
  645.             // Iz imena primljene varijable odredi o kom semestru se radi, vrijednost varijable je predmet
  646.             $field_name_data = explode('_', $field);
  647.             if($field_name_data[0] == 'semestar' && ($field_name_data[2] == 'predmet' || $field_name_data[2] == 'izborni')){
  648.                 $semestar = $field_name_data[1] + 1;
  649.                 $predmet = $$field;
  650.             }else{
  651.                 continue;
  652.             }
  653.  
  654.             // Da li se radi o izbornom predmetu
  655.             if($field_name_data[2] == 'izborni'){
  656.                 $obavezan = 0;
  657.             }
  658.  
  659.            
  660.            
  661.            
  662.             //biranje id od akademske godine za upis u bazu
  663.  
  664.             $id_akademske_godine="SELECT `id` FROM `akademska_godina` WHERE `id` = '$akademska_godina'";
  665.             $rezultat=mysql_query($id_akademske_godine);
  666.             if(!$rezultat){
  667.                 die('Upit za ID nije uspio: '.mysql_error());
  668.             }
  669.             $number = preg_replace("/[^0-9]/", '', $id_akademske_godine);
  670.            
  671.             // Ubaci red u bazu
  672.             # ovo sam stavio ovdje, treba da obrises stari plan i snimis preko novi
  673.             # to je jedini cist nacin bez ID polja i siguran nacin
  674.             # opet: iskritikuj vedrana za ID polje
  675.             $sql_insert = " INSERT INTO plan_studija (godina_vazenja, studij, semestar, predmet, obavezan) VALUES ";
  676.             $sql_insert .= " ($number, $studij, $semestar, $predmet, $obavezan) ";
  677.             if(!($query = mysql_query($sql_insert))){
  678.                 debugError('Upit za ubacivanje u bazu nije uspio: '.(mysql_error()));
  679.                 exit;
  680.             }
  681.            
  682.             # Sav ovaj kod ispod je bespotreban!!!!
  683.  
  684.             /*
  685.             //Ispitivanje da li ima nesto u bazi
  686.             if(mysql_num_rows($rez) > 0){
  687.  
  688.  
  689.                 //Ispitivanje postojanja predmeta u bazi
  690.                 $vec_uneseni_predmeti = mysql_query("SELECT * FROM `plan_studija` WHERE `godina_vazenja` = '$akademska_godina' and `studij` = '$studij'");
  691.                 if(!$vec_uneseni_predmeti){
  692.                     die('Upit za ispitivanje postojanja predmeta u bazi nije uspio: '.mysql_error());
  693.                 }
  694.                 $data_uneseni_predmet=array();
  695.                 while($red = mysql_fetch_assoc($vec_uneseni_predmeti)){
  696.                     $data_uneseni_predmet[$red['id']] = $red['$naziv'];
  697.                 }
  698.  
  699.  
  700.                 //Update red baze
  701.                 $sql_update="UPDATE plan_studija SET  predmet='$predmet', obavezan='$obavezan'  ";
  702.                 if (mysql_query($sql_update))
  703.                 {
  704.                     if (mysql_affected_rows() > 0 )
  705.                     {
  706.                         echo "Novost je uspješno uredena.";
  707.                     } else {
  708.                         echo "Novost nije izmjenjena.";
  709.                     }
  710.                 } else {
  711.                     echo "Nastala je greška pri izmjeni novosti<br>" . mysql_error();
  712.                 }
  713.  
  714.             }else{
  715.                    
  716.                    
  717.                 // Ubaci red u bazu
  718.                 $sql_insert = " INSERT INTO plan_studija (godina_vazenja, studij, semestar, predmet, obavezan) VALUES ";
  719.                 $sql_insert .= " ($number, $studij, $semestar, $predmet, $obavezan) ";
  720.                 if(!($query = mysql_query($sql_insert))){
  721.                     debugError('Upit za ubacivanje u bazu nije uspio: '.(mysql_error()));
  722.                     exit;
  723.                 }
  724.             }
  725.             */
  726.         }
  727.     }
  728.  
  729.  
  730.  
  731.  
  732.  
  733.     // Citaj iz baze i prikazi
  734.     $data_plan = array();
  735.     $sql_plan = " SELECT studij, semestar, predmet, obavezan FROM `plan_studija` ";
  736.     $sql_plan .= " ORDER BY semestar ASC ";
  737.     if(!($query_plan = mysql_query($sql_plan))){
  738.         debugError('Upit nije uspio: '.(mysql_error()));
  739.         exit;
  740.     }
  741.     if(mysql_num_rows($query_plan) > 0){
  742.  
  743.         while($row = mysql_fetch_array($query_plan)){
  744.  
  745.             $tmp_array = array();
  746.             $tmp_array['semestar'] = $data_semestar[($row['semestar']-1)];
  747.             $tmp_array['studij'] = $data_studij[$row['studij']];
  748.            
  749.             if($row['obavezan']==0){
  750.                 $predmeti = mysql_query("SELECT predmet FROM izborni_slot WHERE id='".($row['predmet'])."'");
  751.                 $tmp_niz = array();
  752.                 while($predmet = mysql_fetch_array($predmeti)){
  753.                     $tmp_niz[] = $data_predmet[$predmet['predmet']];
  754.                 }
  755.                 $tmp_array['predmet'] = implode(" / <br/>", $tmp_niz);
  756.             } else {
  757.                 $tmp_array['predmet'] = $data_predmet[$row['predmet']];
  758.             }
  759.  
  760.             $data_plan[] = $tmp_array;
  761.         }
  762.  
  763.     }else{
  764.         debugError('Nema podataka o planu studija');
  765.         exit;
  766.     }
  767.  
  768.  
  769.     // Prikazi plan studija
  770.     echo listingHtml($data_plan, '80%', 'Plan studija');
  771.  
  772. }
  773.  
  774.  
  775.  
  776. function debugError($msg){
  777.  
  778.     // Samo poruka greske
  779.     $html = '<html>';
  780.     $html .= '<head>';
  781.     $html .= '</head>';
  782.     $html .= '<body>';
  783.     $html .= '<table align="center" border="0">';
  784.     $html .= '<tr>';
  785.     $html .= '<td>';
  786.     $html .= '<h3>Error: '.$msg.'<h3>';
  787.     $html .= '</td>';
  788.     $html .= '</tr>';
  789.     $html .= '</table>';
  790.     $html .= '</body>';
  791.     $html .= '</html>';
  792.  
  793.     echo $html;
  794. }
  795.  
  796.  
  797.  
  798. function listingHtml($data, $table_width, $table_name){
  799.  
  800.  
  801.     // Boja u tabelama
  802.     $row_color[0] = "#FFFFF0";
  803.     $row_color[1] = "#F2F8FF";
  804.     $on_mouse_over_color = "#C4FFD7";
  805.  
  806.  
  807.     // U ovu varijablu punim html sadrzaj za listanje
  808.     $html = '<html>';
  809.     $html .= '<head>';
  810.     $html .= '</head>';
  811.     $html .= '<body>';
  812.     $html .= '<table align="center" border="1" style="border-style:solid;" width="'.$table_width.'">';
  813.  
  814.     $html .= '<tr>';
  815.     $html .= '<td style="border:1px solid #ffffff; background:#ffffff; font-weight: bold;">';
  816.     $html .= $table_name;
  817.     $html .= '</td>';
  818.     $html .= '</tr>';
  819.  
  820.     $html .= '<tr align="center">';
  821.     $html .= '<td>';
  822.     $html .= '<table align="center" border="0" width="100%">';
  823.  
  824.  
  825.     // Header-i
  826.     $html .= '<tr align="center">';
  827.     foreach($data as $key => $row){
  828.         foreach($row as $header => $field){
  829.             $html .= '<th align="middle">';
  830.             $html .= $header;
  831.             $html .= "</th>";
  832.         }
  833.         break;
  834.     }
  835.     $html .= '</tr>';
  836.  
  837.  
  838.     // Podaci
  839.     $counter = 0;
  840.     foreach($data as $key => $row){
  841.  
  842.         // Pisi u novi red
  843.         $counter++;
  844.         $html .= '<tr align="center" bgcolor="'.$row_color[$counter%2].'" onMouseOver="bgColor=\''.$on_mouse_over_color.'\'" onMouseOut="bgColor=\''.$row_color[$counter%2].'\'">';
  845.  
  846.         foreach($row as $header => $field){
  847.  
  848.             // Prikazi polje u redu
  849.             $html .= '<td align="middle">';
  850.             $html .= $field;
  851.             $html .= "</td>";
  852.  
  853.         }
  854.  
  855.         $html .= '</tr>';
  856.     }
  857.  
  858.     $html .= '</table>';
  859.     $html .= '</td>';
  860.     $html .= '</tr>';
  861.     $html .= '</table>';
  862.     $html .= '</body>';
  863.     $html .= '</html>';
  864.  
  865.     return $html;
  866.  
  867. }
  868.  
  869.  
  870. function getpost_ifset($test_vars){
  871.  
  872.     if(!is_array($test_vars)){
  873.         $test_vars = array($test_vars);
  874.     }
  875.  
  876.     foreach($test_vars as $test_var){
  877.  
  878.         if(isset($_POST[$test_var])){
  879.  
  880.             global $$test_var;
  881.             $$test_var = addslashes($_POST[$test_var]);
  882.  
  883.         }else if(isset($_GET[$test_var])){
  884.  
  885.             global $$test_var;
  886.             $$test_var = addslashes($_GET[$test_var]);
  887.  
  888.         }else{
  889.  
  890.             global $$test_var;
  891.             $$test_var = '';
  892.         }
  893.     }
  894. }
  895.  
  896.  
  897.  
  898. ?>
Add Comment
Please, Sign In to add comment