You are on page 1of 54

VISOKA ŠKOLA STRUKOVNIH STUDIJA

ZA INFORMACIONE I KOMUNIKACIONE TEHNOLOGIJE

INTERNET TEHNOLOGIJE

“Web servis za online testiranje u auto skolama”
Završni rad

Mentor:

Student:

Dr Nenad Kojić, dipl. inž.

Nikola Kovinić 151/13

Beograd, septembar 2016.

VISOKA ŠKOLA STRUKOVNIH STUDIJA
ZA INFORMACIONE I KOMUNIKACIONE TEHNOLOGIJE

INTERNET TEHNOLOGIJE

Predmet: Web programiranje PHP2
Tema: “Web servis za online testiranje u auto školama”

Ocena:

(

)

Članovi komisije:

Sadržaj
1.

Uvod .................................................................................................................................. 4

2.

Radno okruženje ................................................................................................................ 5

3.

Organizacija ....................................................................................................................... 6

4.

3.1.

Blok šema ................................................................................................................... 6

3.2.

Kontroler Start ............................................................................................................ 7

3.3.

Admin panel ............................................................................................................... 8

3.4.

Kontroler admin logovanja ......................................................................................... 9

3.5.

Model pitanja............................................................................................................ 10

3.6.

Model admin logovanje ............................................................................................ 11

3.7.

Model admin panela ................................................................................................. 12

Kodovi ............................................................................................................................. 13
4.1.

Kontroler start........................................................................................................... 13

4.2.

Kontroler admin panela ............................................................................................ 16

4.3.

Kontroler za logovanje ............................................................................................. 30

4.4.

Model pitanja............................................................................................................ 33

4.5.

Model admin panel ................................................................................................... 36

4.6.

Model logovanje ....................................................................................................... 50

5.

Baza podataka .................................................................................................................. 52

6.

Zaključak ......................................................................................................................... 53

Literatura .................................................................................................................................. 54

3

1.

Uvod

Web servisi su aplikacije koje se mogu locirati i pozvati sa bilo koje tačke Web-a. Web servisi
se i izvršavaju se na udaljenom sistemu. Klijent koji koristi web servise mora da zna koje usluge nudi
web servis.

Web servis je fleksibilniji od web aplikacije jer korisnik može da prilagodi izgled aplikacije
na desktopu dok korisnik web aplikaciie mora da koristi web browser i nema uticaja na to
kako će aplikacija izgledati na ekranu.

Štedljiviji su po pitanju opterećenja mreže i resursa servera jer pri komunikaciji šalju samo
odgovor dok web aplikacije pored odgovora šalju i HTML sa formom i opisom kako
odgovor treba da bude prikazan. Web servisi su idealni su za “male” uređaje koji nisu PC.

Lakši su za razvoj, testiranje i održavanje jer kod Web aplikacije pored neophodne funkcije
je potrebno istestirati i dizajn na svim pretraživačima i platformama dok kod web servisa
autor brine samo o funkciji dok o prikazu brine klijentska aplikacija.

Servis koji sam kreirao odnosi se na pružanju usluga online testiranja za auto škole. Aplikacija
je dizajnirana da bude što jednostavnija.
Servise koji je rađen je podeljen u dva dela, prvi frontend koji je zadužen za prikaz pitanja i
odgovora korisniku i bekend koji je zadužen za dostavljanje traženih podataka frontendu u
odgovarajućem format.
Podaci koji se šalju frontendu su enkodovani u JSON formatu.
Takođe web servis ima u sebi implementiran i admin panel koji služi da samo autorizovani
korisnici mogu da mu pristupe. Admin panel omogućava prikaz svih pitanja i pitanja filtriranih po
kategorijama, prikaz svih oblasti, mogućnost dodavanja novih ili izmena trenutnih. Pregled svih
aktivnosti korisnika sa brojem osvojenih poena i datumom rađenja testa. Pretrage pitanja.
Rad je organizovan u četiri celine. U prvoj celini biće objašnjene osnove radnog okruţenja
razlozi korišćenja odredjenog programskog jezika. U drugoj će biti organizacija projekta sa slikom i
opisom funkcionalnosti. Treća će sadrzati kodove svih stranica koje su deo projekta. Dok će u četvrtoj
biti opis i organizacija baze podataka.

4

2.

Radno okruženje

Pri izradi ovog projekta, korišćen je objektno-orjentisan programski jezik PHP za back- end
aplikacije. Primenjeno je znanje o open source Codeigniter 2.2.6 framework-u. Codeigniter PHP
framework koristi MVC arhitekturu (Model-View-Controller) koja donosi separaciju između sloja
podataka, sloja prezentacije i logičkog sloja, što doprinosi dobroj organizaciji koda i lakšem
upravljanju aplikacijom. Prednosti korišćenja ovog framework-a jesu laka konfiguracija, dobra i
temeljna dokumentacija, sama činjenica da je besplatan i lako dostupan, kao i dostupnost dosta
Internet rešenja za različite probleme. Pored toga, na serverskoj strani podaci su skladišteni u MySQL
bazu podataka koja je administrirana alatom Phpmyadmin.
Korišćenjem aplikacije SourceTree dobija se mogucnost olakšanog timskog rada. Potrebno je
napraviti projekat na nekom od sajtova BitBucket ili GitHub. Svaki rad od bilo kog developera se
uredno evindetira na zajedničkom projektu.
U toku razvoja aplikacije, korišćena su sledeća razvojna okruţenja: “NetBeans IDE 8.0.2“,
“Sublime3”, “SourceTree”.

5

Organizacija 3. prikazana je organizaciona šema stranica web aplikacije.1. Slika 1 – Organizaciona struktura sajta 6 .3. Pristup različitim stranicama za obradu pitanja ima samo administrator. dok radjenje testova moze savako da radi. Blok šema Na slici 1.

Početna stranica 7 . je prikazan kod za inicijalnu stranicu. koja se prikazuje kada korisnik pristupi aplikaciji.3. Na ovoj stranici je moguće da se bira kategorija i da se započne novi test. Slika 2.2. Kontroler Start Na slici 2.

3. na kojoj je prikazan kontroler koji izvlači podatke iz baze i priprema u odgovarajućem format za frontend.Kontroler admin panela 8 . Admin panel Na slici 3. Slika 3.3.

na kojoj je prikazan kontroler koji izvlači podatke iz baze za logovanje i priprema u odgovarajućem formatu za frontend.4. Kontroler admin logovanja Na slici 3. Slika 4 .Kontroler za logovanje 9 .3.

Modeli se pozivaju u kontrolerima.3. Ovaj model ima u sebi funkcije koje sadrže upite spremne za bazu. Model pitanja Na slici 5. je prikazana deo koda iz modela koji je zadužen sa obezbeđivanje podataka koji se kasnije prikazuju korisniku. Slika 5 .5.Model pitanja 10 .

3.Model za logovanje 11 . Slika 6 .6. Model admin logovanje Ovaj model služi za izvlačenje podataka iz baze koji su potrebni za logovanje.

7. Modeli se pozivaju u kontrolerima. da bi koristili nas servis treba da unesu e-mail i izaberu kategoriju. takodđe mogu se i filtrirrati. sto u modelu postoje funkcije za to. Ovaj model ima u sebi funkcije koje sadrže upite spremne za bazu. Na strain Olbasti se nalaze podaci svih oblsti takođe sa opcijama. Na toj strain imaju opcije za brisanje I izmenu pitanja. Na stranici pretaga se dostavljaju podaci svih pitanja koje korisnik može da pretražuje.Model admin panel 12 . je prikazan deo koda iz modela koji je zadužen sa obezbeđivanje podataka koji se kasnije prikazuju administratoru.3. Model admin panela Na slici 7. Na strain aktivnosti se nalaze aktivnosti korisnika koji su koristili nas servis. U ovom modelu sve sto je potrebno za administratora se sprema i vraća kontroleru. Slika 7 . Potrebni podaci su sva pitanja gde se na strain pitanja prikazuju.

'mp'). $this->load->view('izaberi'. redirect($uri). $this->load->model('model_pitanja'.4.</script>". $this->load->view('footer'). $url="http://localhost/testovi_pitanja/".//za C i D kategoriju je funkcija dohvati_pitanja_CD() }else if($option=="0"){ //echo "<script>alert('Niste nista izabrali.//ovde raditi sa base_url(). } //$data['pitanja'] = $this->mp->dohvati_pitanja_ABF(). if($option=="1" || $option=="2" || $option=="6"){ $data['pitanja'] = $this->mp->dohvati_pitanja_ABF().//za C i D kategoriju je funkcija dohvati_pitanja_CD() 13 . } public function pitanja($option) { $data['greske']=array(). Kodovi 4. Kontroler start <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed').1. } public function index(){ $data['kategorije'] = $this->mp->dohvati_kategorije(). izaberite kategoriju!'). $data['pitanja']=array().//za C i D kategoriju je funkcija dohvati_pitanja_CD() }else if($option=="3" || $option=="4"){ $data['pitanja'] = $this->mp->dohvati_pitanja_CD(). $data=array(). class Start extends CI_Controller { function __construct() { parent::__construct(). $this->load->view('header'). $data['odgovori']=array(). $data).

//$this->load->view('footer'). } } public function result($brBodova. if(isset($dugme)){ $data['kat'] = $this->input->post('ddlKategorije'). $data['rezultati'] = array( 'brojBodova' => $brBodova. } echo json_encode($data). // $this->load->view('header'). //$this->load->view('content'. $ukupnoBodova){ $rezProcenti = $brBodova/$ukupnoBodova * 100.'. $this->load->view('footer'). $this->load->view('header'). $this->load->view('servis_content'. $this->load->view('prosaoPao'. $this->load->view('footer'). $data). //echo $p['id_pitanje']. //$data['pitanja']=$this->mp->dohvati_pitanja(). 'procenti' => $rezProcenti ). 'ukupnoBodova' => $ukupnoBodova. $this->load->view('header'). $data).'.foreach ($data['pitanja'] as $p) { $this->mp->idPitanje=$p['id_pitanje']. } public function kategorija(){ $dugme=$this->input->post('btnStart'). 14 . //print_r($data['odgovori']). $data['odgovori'][$idP]=$this->mp->odgovori_za_pitanje(). $idP=$p['id_pitanje']. //$data['kategorije'] = $this->mp->dohvati_kategorije(). //$data['odgovori'] = $this->mp->odgovori_za_pitanje(). $data).

} } 15 .

//adminpanel za pitanja public function __construct() { parent::__construct(). // public $izab_kat. }else{ $GLOBALS['izbKat']=$idKat. sve //ako je filtrirao.'admin'). Kontroler admin panela <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'). } $text="".2. $izab_kat=$idKat. $this->load->vars($idKat). //ako je admin inicijalno prikazivanje. if($uloga==null || $uloga==""){ redirect('adminlogovanje'). $GLOBALS['izbKat']=FALSE. $this->load->library('pagination'). $podaci=array(). } public function index($opcija=null. $uloga=$this->session->userdata('uloga').$id=null){ $formm='adminpanel'. } echo $izab_kat. $this->load->model('model_adminpanel'. $idKat=$this->input->post('ddlKategorije'). $izab_kat=$GLOBALS['izbKat']. if($idKat==null || $idKat=='' || $idKat==0 ){ $izab_kat=$GLOBALS['izbKat']. $podaci['kategorije']=$this->admin->dohvati_kategorije(). samo to sto je izabrao if($uloga=="Administrator"){ 16 . ako je nije filtrirao.4. class adminpanel extends CI_Controller { // public $data.

//DOHVATA SVE OBLASTI $podaci['oblastPitanje']=$this->admin->dohvati_oblast_za_pitanje(). 17 . } } //ako je kliknuo na obrisi komunikacija sa bazom i brisanje if($opcija=="obrisi" && $id!=null && $uloga="Administrator"){ $this->admin->idPitanje=$id. redirect('adminpanel').//DOHVATA ODGOVORE ZA DATO PITANJE $podaci['pitanje']=$this->admin->dohvati_pitanje().$id). 'class'=>'btn btn-alt waves-button waves-effect waves-light'.//DOHVATA PITANJE KOJE SE TRAZI $this->session->set_userdata('tmp_id_pitanje'. $podaci['pitanja']=$this->admin->dohvati_pitanja_za_kategoriju(10). otvara se forma za izmenu if($opcija=="izmeni" && $id!=null && $uloga="Administrator"){ $this->admin->idPitanje=$id.//DOHVATA oblast ZA DATO PITANJE $podaci['odgovor']=$this->admin->odgovori_za_pitanje().//DOHVATA SVE KATEGORIJE $podaci['kategorijaPitanje']=$this->admin>dohvati_kategorije_za_pitanje(). }else if($izab_kat!=null || $izab_kat!="" || $izab_kat!=0){ $this->admin->idKategorija=$izab_kat. $podaci['korisnik']=$this->admin->obrisi_pitanje().if($izab_kat==null || $izab_kat=="" || $izab_kat==0){ $podaci['kategorije']=$this->admin->dohvati_kategorije(). $podaci['pitanja']=$this->admin->dohvati_pitanja(10). } $btnSub=array( 'name'=>'btnIzmena'. } //ako je kliknuo na izmeni. $podaci['kategorije']=$this->admin->dohvati_kategorije().//DOHVATA KATEGORIJE ZA DATO PITANJE $podaci['oblasti']=$this->admin->dohvati_oblasti(). $podaci['izabranaKategorija']=$izab_kat.

$config['total_rows'] = $brojPitanja. 'id'=>'float-textarea-autosize'. $config['next_tagl_close'] = "</li>"."adminpanel/index/".//site_url('adminpanel').'type'=>'submit'. $config['prev_tag_open'] = "<li>". //$config['attributes']['rel'] = FALSE. 'type'=>'text'. 'value'=>$text ). //paginacija pitanja //$limit=15. $brojPitanja=$this->admin->brojPitanja(). $config['num_tag_close'] = '</li>'. 'id'=>'lbIzmena' ). $tbIzmena=array( 'class'=>'form-control textarea-autosize'. 'name'=>'tbIzmena'. $config['full_tag_close'] ="</nav></ul>". 18 . $config['next_tag_open'] = "<li>". $config['full_tag_open'] = "<nav align='center'><ul class='pagination'>". $config['num_tag_open'] = '<li>'. 'content'=>'Izmeni' ). $config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>". $config['per_page'] = 7. $config['uri_segment']= 3. $config['cur_tag_close'] = "<span class='sr-only'></span></a></li>". $config['prev_tagl_close'] = "</li>". 'name'=>'lbIzmena'. $config['base_url'] =base_url(). 'rows'=>'1'. $lbIzmena=array( 'class'=>'floating-label'.

$this->pagination->initialize($config). $viseOdgovora=$this->input->post('tacan'). $odg3P=$this->input->post('taOdgovor3'). $odg3TP=$this->input->post('tacan_odgovor_3'). $odg6TP=$this->input->post('tacan_odgovor_6'). if(isset($dugme) && $dugme=$this->input->post('btnIzmena')== 'btnIzmena'){ $idP=$this->session->userdata('tmp_id_pitanje'). $kat2P=$this->input->post('katB'). $config['last_tagl_close'] = "</li>". 19 . if($textPitanje!=""){ $this->admin->textPitanje=$textPitanje. $odg4P=$this->input->post('taOdgovor4'). $odg2TP=$this->input->post('tacan_odgovor_2'). $dugme2=$this->input->post('btnDodaj'). $odg1TP=$this->input->post('tacan_odgovor_1'). $brBodovaP=$this->input->post('bodovi'). $odg5P=$this->input->post('taOdgovor5'). $config['last_tag_open'] = "<li>". $odg2P=$this->input->post('taOdgovor2'). $kat3P=$this->input->post('katC').$config['first_tag_open'] = "<li>". $odg1P=$this->input->post('taOdgovor1'). $odg5TP=$this->input->post('tacan_odgovor_5'). $config['first_tagl_close'] = "</li>". $odg4TP=$this->input->post('tacan_odgovor_4'). $slikaPitanje=$this->input->post('slika'). $kat1P=$this->input->post('katA'). $kat4P=$this->input->post('katD'). $podaci['pagination_linkovi']=$this->pagination->create_links(). $odg6P=$this->input->post('taOdgovor6').//tb gde je za unos pitanja $oblastPitanje=$this->input->post('oblast'). $textPitanje=$this->input->post('taTekstPitanja'). $dugme=$this->input->post('btnIzmena'). $kat5P=$this->input->post('katF').

$this->admin->odg1P=$odg1P. } } if(isset($dugme2) && $this->input->post('btnDodaj')== 'btnDodaj'){ $idP=$this->session->userdata('tmp_id_pitanje'). $this->admin->$odg6TP=$odg6TP. $kat2P=$this->input->post('katB'). $this->admin->$odg5TP=$odg5TP. $this->admin->kat1P=$kat1P. $this->admin->slikaPitanje=$slikaPitanje. $this->admin->brBodovaP=$brBodovaP. $this->admin->kat3P=$kat3P. $this->admin->odg6P=$odg6P. $kat1P=$this->input->post('katA'). redirect('adminpanel/'). $this->admin->odg2P=$odg2P. $this->admin->oblastPitanje=$oblastPitanje.$this->admin->idPitanje=$idP. $this->admin->kat5P=$kat5P.//tb gde je za unos pitanja $oblastPitanje=$this->input->post('oblast'). $this->admin->viseOdgovora=$viseOdgovora. $this->admin->izmeni_pitanje(). $this->admin->$odg2TP=$odg2TP. $this->admin->kat2P=$kat2P. $kat3P=$this->input->post('katC'). $this->admin->odg3P=$odg3P. $this->admin->odg5P=$odg5P. 20 . $this->admin->$odg1TP=$odg1TP. $textPitanje=$this->input->post('taTekstPitanja'). $this->admin->$odg3TP=$odg3TP. $this->admin->kat4P=$kat4P. $this->admin->odg4P=$odg4P. $kat4P=$this->input->post('katD'). $this->admin->$odg4TP=$odg4TP.

$odg4TP=$this->input->post('tacan_odgovor_4'). $odg6P=$this->input->post('taOdgovor6'). $this->admin->odg4P=$odg4P. $slikaPitanje=$this->input->post('slika'). $odg4P=$this->input->post('taOdgovor4'). $this->admin->odg1P=$odg1P. $this->admin->$odg2TP=$odg2TP. $this->admin->odg2P=$odg2P. $this->admin->$odg3TP=$odg3TP. $this->admin->kat1P=$kat1P.$kat5P=$this->input->post('katF'). $odg2P=$this->input->post('taOdgovor2'). $this->admin->odg5P=$odg5P. $this->admin->odg3P=$odg3P. $this->admin->kat5P=$kat5P. $this->admin->kat3P=$kat3P. $odg5TP=$this->input->post('tacan_odgovor_5'). $this->admin->kat4P=$kat4P. $viseOdgovora=$this->input->post('tacan'). $brBodovaP=$this->input->post('bodovi'). $odg2TP=$this->input->post('tacan_odgovor_2'). $odg1TP=$this->input->post('tacan_odgovor_1'). $this->admin->$odg1TP=$odg1TP. $this->admin->idPitanje=$idP. $this->admin->oblastPitanje=$oblastPitanje. $this->admin->kat2P=$kat2P. $odg6TP=$this->input->post('tacan_odgovor_6'). $odg1P=$this->input->post('taOdgovor1'). if($text_za_izmenu!=""){ $this->admin->textPitanje=$textPitanje. $odg5P=$this->input->post('taOdgovor5'). $this->admin->odg6P=$odg6P. $odg3TP=$this->input->post('tacan_odgovor_3'). $odg3P=$this->input->post('taOdgovor3'). 21 .

$id=null){ $formm='adminpanel/Oblasti/'.$this->admin->$odg4TP=$odg4TP. $podaci). $this->admin->slikaPitanje=$slikaPitanje. $this->load->view('content_admin_pitanje'. $podaci['taIzmena']=$tbIzmena. $uloga=$this->session->userdata('uloga'). $podaci). if($opcija=='izmeni' && $uloga="Administrator"){ $this->load->view('header_admin'). } } //adminpanel za oblasti public function Oblasti($opcija=null. } } $podaci['lbIzmen']=$lbIzmena. if($uloga==null || $uloga==""){ redirect('adminlogovanje'). $this->admin->brBodovaP=$brBodovaP. $podaci['formm']=$formm. $podaci['btnIzmena']=$btnSub. } $podaci=array(). $podaci['oblasti']=$this->admin->dohvati_oblasti(). redirect('adminpanel/'). $this->admin->dodaj_pitanje(). $this->admin->viseOdgovora=$viseOdgovora. $this->load->view('footer'). }else{ $this->load->view('header_admin'). 22 . $this->load->model('model_adminpanel'. $this->load->view('footer'). $this->admin->$odg6TP=$odg6TP. $this->admin->$odg5TP=$odg5TP. $this->load->view('content_admin'.'admin').

if(isset($dugme) && $dugme=$this->input->post('btnIzmena')== 'btnIzmena'){ $id=$this->session->userdata('tmp_id_oblasti'). $dugme2=$this->input->post('btnDodaj'). $this->admin->obrisi_oblast(). redirect('adminpanel/Oblasti/'). $this->admin->idOblasti=$id. 23 . } if($opcija=="izmeni" && $id!=null && $uloga="Administrator"){ $this->admin->idOblasti=$id. $this->admin->izmeni_oblast(). echo $text_za_izmenu. komunikacija sa bazom i izlvacenje pod if($uloga="Administrator"){ $podaci['oblasti']=$this->admin->dohvati_oblasti().$id). $this->session->unset_userdata('tmp_id_oblasti'). redirect('adminpanel/Oblasti/').$text="". } } if(isset($dugme2) && $this->input->post('btnDodaj')== 'btnDodaj'){ $text_za_izmenu=$this->input->post('tbIzmena'). $this->session->set_userdata('tmp_id_oblasti'. //ako je kliknuo na izmeni. $text=$podaci['oblast']['oblast_text']. $podaci['oblast']=$this->admin->dohvati_obl(). } //na dugme izmeni ili dodaj $dugme=$this->input->post('btnIzmena'). $text_za_izmenu=$this->input->post('tbIzmena'). $podaci['oblasti']=$this->admin->dohvati_oblasti(). if($text_za_izmenu!=""){ $this->admin->oblastText=$text_za_izmenu. } if($opcija=="obrisi" && $id!=null && $uloga="Administrator"){ $this->admin->idOblasti=$id.

redirect('adminpanel/Oblasti/'). 'id'=>'lbIzmena' ). } } //kreiranje forme $btnSub=array( 'name'=>'btnIzmena'. 'class'=>'btn btn-alt waves-button waves-effect waves-light'. 'content'=>'Dodaj oblast' ). 'name'=>'lbIzmena'. $lbIzmena=array( 'class'=>'floating-label'. 'class'=>'btn btn-alt waves-button waves-effect waves-light'. 'type'=>'text'. $this->admin->dodaj_oblast(). 24 . 'name'=>'tbIzmena'. 'type'=>'submit'.if($text_za_izmenu!=""){ $this->admin->oblastText=$text_za_izmenu. 'value'=>'btnDodaj'. 'rows'=>'1'. $tbIzmena=array( 'class'=>'form-control textarea-autosize'. 'value'=>'btnIzmena'. $btnSub2=array( 'name'=>'btnDodaj'. 'content'=>'Izmeni' ). 'value'=>$text ). 'id'=>'float-textarea-autosize'. 'type'=>'submit'.

'type'=>'submit'. $this->load->view('footer'). $lbIzmena=array( 'class'=>'floating-label'. 25 .$id=null){ $formm='adminpanel/aktivnosti/'. $podaci['aktivnosti']=$this->admin->dohvati_aktivnosti().'admin'). $this->load->library('pagination'). redirect('adminpanel/Aktivnosti/'). 'value'=>'btnIzmena'. $podaci['btnIzmena']=$btnSub. $podaci['formm']=$formm. $podaci). $this->load->model('model_adminpanel'. } //adminpanel za aktivnosti public function Aktivnosti($opcija=null. $uloga=$this->session->userdata('uloga'). 'name'=>'lbIzmena'. $podaci['btnDodaj']=$btnSub2. $this->admin->obrisi_aktivnost(). 'class'=>'btn btn-alt waves-button waves-effect waves-light'. //view koji se pozivaju $this->load->view('header_admin'). if($opcija=="obrisi" && $id!=null && $uloga="Administrator"){ $this->admin->idAktivnost=$id. $this->load->view('content_admin_oblasti'.//podaci za prosledjivanje $podaci['lbIzmen']=$lbIzmena. $podaci['taIzmena']=$tbIzmena. } //kreiranje forme $btnSub=array( 'name'=>'btnIzmena'. 'content'=>'Izmeni' ).

komunikacija sa bazom i izlvacenje pod if($uloga="Administrator"){ $data['pitanja']=$this->admin->dohvati_pitanja_bez_paginacije(). if($uloga==null || $uloga==""){ redirect('adminlogovanje').'id'=>'lbIzmena' ). ). 'type'=>'text'. $this->load->view('content_admin_aktivnost'.'admin'). $podaci['pitanja']=$this->admin->dohvati_pitanja_bez_paginacije(). //ako je kliknuo na izmeni. $podaci).$id=null){ $formm='adminpanel/Pretraga/'. $podaci['btnIzmena']=$btnSub. 'rows'=>'1'. } //adminpanel za pretragu public function Pretraga($opcija=null. $this->load->view('header_admin'). $text="". //podaci za prosledjivanje $podaci['lbIzmen']=$lbIzmena. $uloga=$this->session->userdata('uloga'). $this->load->view('footer'). 'id'=>'float-textarea-autosize'. $podaci['formm']=$formm. $this->load->model('model_adminpanel'. } if($opcija=="obrisi" && $id!=null && $uloga="Administrator"){ 26 . 'name'=>'tbIzmena'. } $podaci=array(). $tbIzmena=array( 'class'=>'form-control textarea-autosize'. $podaci['taIzmena']=$tbIzmena.

if($text_za_izmenu!=""){ $this->admin->oblastText=$text_za_izmenu. $text_za_izmenu=$this->input->post('tbIzmena'). $podaci['kategorije']=$this->admin->dohvati_kategorije(). $podaci['oblasti']=$this->admin->dohvati_oblasti(). $this->admin->izmeni_oblast(). $this->session->set_userdata('tmp_id_pitanje'.//kod za brisanje pitanja $this->admin->idPitanje=$id. redirect('adminpanel/Oblasti/'). if(isset($dugme) && $dugme=$this->input->post('btnIzmena')== 'btnIzmena'){ $id=$this->session->userdata('tmp_id_oblasti').$id). $this->session->unset_userdata('tmp_id_oblasti'). if($text_za_izmenu!=""){ $this->admin->oblastText=$text_za_izmenu. } if($opcija=="izmeni" && $id!=null && $uloga="Administrator"){ //kod za izmenu pitanja $this->admin->idPitanje=$id. 27 . } //na dugme izmeni ili dodaj $dugme=$this->input->post('btnIzmena'). echo $text_za_izmenu. $this->admin->dodaj_oblast(). $podaci['odgovor']=$this->admin->odgovori_za_pitanje(). $dugme2=$this->input->post('btnDodaj'). redirect('adminpanel/Pretraga'). $this->admin->idOblasti=$id. } } if(isset($dugme2) && $this->input->post('btnDodaj')== 'btnDodaj'){ $text_za_izmenu=$this->input->post('tbIzmena'). $podaci['korisnik']=$this->admin->obrisi_pitanje(). $podaci['pitanje']=$this->admin->dohvati_pitanje().

// 'id'=>'float-textarea-autosize'. } } //kreiranje forme // $btnSub=array( // 'name'=>'btnIzmena'. 28 . // 'id'=>'lbIzmena' // ). //podaci za prosledjivanje //view koji se pozivaju $this->load->view('header_admin'). // 'content'=>'Izmeni' // ). // 'class'=>'btn btn-alt waves-button waves-effect waves-light'. // $tbIzmena=array( // 'class'=>'form-control textarea-autosize'. // 'type'=>'text'. // 'class'=>'btn btn-alt waves-button waves-effect waves-light'. // $btnSub2=array( // 'name'=>'btnDodaj'. // 'name'=>'tbIzmena'. // 'content'=>'Dodaj oblast' // ). // 'value'=>$text // ). // 'value'=>'btnIzmena'. // 'type'=>'submit'. // $lbIzmena=array( // 'class'=>'floating-label'. // 'value'=>'btnDodaj'.redirect('adminpanel/Oblasti/'). // 'name'=>'lbIzmena'. // 'rows'=>'1'. // 'type'=>'submit'.

echo json_encode($json). } public function JSON_aktivnosti(){ $this->load->model('model_adminpanel'. $json['pitanja']=$this->admin->dohvati_aktivnosti(). } public function JSON(){ $this->load->model('model_adminpanel'. } } 29 .$this->load->view('content_admin_pretraga'). $json['pitanja']=$this->admin->dohvati_pitanja_bez_paginacije(). echo json_encode($json). $this->load->view('footer').'admin').'admin').

$podaci=array().4. 'class'=>'form-control'. 'type'=>'text' ). $logPass=array( 'id'=>'float-text'. $this->load->library('form_validation'). 'type'=>'password' ). 'class'=>'btn btn-blue waves-button waves-light waves-effect'. $logEmail=array( 'id'=>'float-text'. 'name'=>'tbEmail'. Kontroler za logovanje <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'). 'name'=>'tbPass'. //echo $korisnik2. class adminlogovanje extends CI_Controller{ public function __construct() { parent::__construct(). 'content'=>'Logovanje' 30 . } public function index(){ //$korisnik2= $this->session->userdata('korisnik'). 'type'=>'submit'. 'name'=>'formaLogovanje'. $btnLogovanje=array( 'name'=>'btnLogovanje'.3. 'method'=>'POST' ). 'class'=>'form-control'. $this->load->helper('form'). $forma=array( 'id'=>'formaLog'.

$this->form_validation->set_rules('tbPass'. //print"cao". $podaci['Logovanje']=$btnLogovanje. $btnReset=array( 'name'=>'btnPonisti'. 'type'=>'button' ). $lozinka=md5($this->input->post('tbPass')). $this->session->set_userdata('id_korisnik'.'Minimalna duzina polja <b>%s</b> je 5!').'E-mail'. 'class'=>'btn waves-button waves-effect'.'Polje <b>%s</b> je obavezno!').'korisnik'). $this->form_validation->set_message('required'. $podaci['Sifra']=$logPass. if(isset($dugme)){ $email=$this->input->post('tbEmail'). $podaci['korisnik']=$this->korisnik->dohvati(). if($this->form_validation->run()){ $this->load->model('model_logovanje'. $podaci['Email']=$logEmail.'required|trim|valid_email'). 31 <b>%s</b> u . $this->korisnik->password=$lozinka. $podaci['Ponisti']=$btnReset. 'content'=>'Ponisti'. $this->form_validation->set_message('valid_email'.'Unesite polje ispravnom formatu!').). $dugme=$this->input->post('btnLogovanje').'required|min_length[5]'). $uloga=$podaci['korisnik']['naziv_uloga'].$uloga). $this->korisnik->email=$email. $this->form_validation->set_rules('tbEmail'. if(!empty($podaci['korisnik'])){ $korisnik_sesija=$podaci['korisnik']['id_korisnik']. $this->session->set_userdata('uloga'.'Lozinka'.$korisnik_sesija). $this->form_validation->set_message('min_length'. $this->load->library('form_validation').

} } }else{ $this->session->set_flashdata('validacija'.'refresh'). $this->session->set_userdata('ime'. $this->load->view('footer'). $this->session->set_flashdata('ulogovao'. $this->session->set_userdata('prezime'. } } } 32 se ulogovali . }else{ redirect('adminlogovanje'). $prez=$podaci['korisnik']['prezime_korisnik']. } }else{ //redirect('logovanje_registracija/login'. $this->session->sess_destroy()."</b> !"). if(!empty($korisnik)){ $this->session->unset_userdata('id_korisnik'). 'Uspesno ste <b>'.$ime. redirect('adminlogovanje'). validation_errors()). $podaci). } public function logout(){ $korisnik= $this->session->userdata('id_korisnik').$prez).$ime=$podaci['korisnik']['ime_korisnik']. $this->load->view('content_logovanje'. } $this->load->view('header'). if($podaci['korisnik']['id_uloga']=='1'){ redirect('adminpanel').$ime).

4.id_pitanje JOIN oblasti o ON o.id_oblasti=po.id_pitanje JOIN oblasti o ON o.id_oblasti=1 ORDER BY RAND() LIMIT 18) UNION 33 .id_pitanje=po.id_pitanje JOIN oblasti o ON o.id_oblasti WHERE o.id_oblasti=po.id_oblasti=6 ORDER BY RAND() LIMIT 1)".id_oblasti=3 ORDER BY RAND() LIMIT 4) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p. $query = $this->db->query($q).id_oblasti=5 ORDER BY RAND() LIMIT 2) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_oblasti WHERE o.id_oblasti=2 ORDER BY RAND() LIMIT 14) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_pitanje JOIN oblasti o ON o.id_oblasti WHERE o. $this->load->database().id_oblasti WHERE o.id_oblasti=po.id_pitanje=po.id_pitanje=po.id_oblasti WHERE o. public function __construct() { parent::__construct(). return $query->result_array().id_oblasti WHERE o.id_pitanje=po.id_pitanje JOIN oblasti o ON o.id_pitanje=po.id_pitanje=po.id_pitanje JOIN oblasti o ON o. Model pitanja <?php class model_pitanja extends CI_Model { public $idPitanje.id_oblasti=1 ORDER BY RAND() LIMIT 18) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_pitanje=po.id_oblasti=po.id_pitanje JOIN oblasti o ON o.id_oblasti=po. } public function dohvati_pitanja_CD(){ $q="(SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.4.id_oblasti WHERE o.id_oblasti=po. } public function dohvati_pitanja_ABF(){ $q="(SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_oblasti=po.id_oblasti=4 ORDER BY RAND() LIMIT 3) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.

id_oblasti=2 ORDER BY RAND() LIMIT 14) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_pitanje=po.id_oblasti=po.id_pitanje JOIN oblasti o ON o.id_pitanje'). $this->db->from('pitanja'). $this->db->from('odgovori'). } /* public function dohvati_pitanja(){ $pod = array().'oblasti.id_pitanje=po.id_pitanje=po.id_pitanje=po.id_oblasti WHERE o.id_oblasti=6 ORDER BY RAND() LIMIT 1)". $this->db->order_by('pitanja.id_oblasti').'random').id_oblasti=4 ORDER BY RAND() LIMIT 8) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p. $this->idPitanje).id_oblasti=pitanja_oblasti.id_oblasti=po. $this->db->join('oblasti'. 34 .id_oblasti=5 ORDER BY RAND() LIMIT 2) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p.id_oblasti WHERE o.id_pitanje JOIN oblasti o ON o. } public function odgovori_za_pitanje(){ $this->db->select('*'). //$id = $this->uri->segment(3. $this->db->select('*').4).id_pitanje=pitanja.id_oblasti WHERE o.id_pitanje JOIN oblasti o ON o.'pitanja_oblasti.id_oblasti=3 ORDER BY RAND() LIMIT 5) UNION (SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p. 0).id_oblasti WHERE o.(SELECT * FROM pitanja p JOIN pitanja_oblasti po ON p. $this->db->where('oblasti.id_oblasti=po.id_pitanje'. $this->db->where('id_pitanje'.id_oblasti'.id_pitanje=po.id_oblasti WHERE o. return $query->result_array().id_oblasti=po. $query = $this->db->query($q).id_pitanje JOIN oblasti o ON o. $this->db->join('pitanja_oblasti'. return $this->db->get()->result_array().id_pitanje JOIN oblasti o ON o.id_oblasti=po.

$this->idPitanje). $pod['pitanje_slika'] = $row['pitanje_slika'].id_pitanje=o. $this->db->from('kategorije'). return $this->db->get()->result(). $pod['pitanje_text'] = $row['pitanje_text'].id_oblasti WHERE ob.$this->db->limit(10). } return $pod. }*/ public function dohvati_kategorije(){ $this->db->select('*'). $this->db->from('odgovori').id_oblasti=4 ORDER BY RAND() LIMIT 10 35 . } } //Ovo je upit koji vadi random pitanja //SELECT * FROM pitanja p JOIN odgovori o ON p. $this->db->where('id_pitanje'. $pod['odgovori']=$this->db->get()->result_array(). $this->db->select('*'). $q = $this->db->get(). $this->idPitanje=$row['id_pitanje'].id_pitanje JOIN pitanja_oblasti po ON po.id_pitanje=p.id_oblasti=po. foreach ($q->result_array() as $row){ $pod['id_pitanje'] = $row['id_pitanje'].id_pitanje JOIN oblasti ob ON ob.

public $odg4P. public $kat3P. * To change this template file. public $kat5P.// public $kat1P. public $odg6P. public $odg5TP. public $kat4P. public $odg5P. public $odg1P. public $odg2P. */ /** * Description of model_adminpanel * * @author kovin */ class model_adminpanel extends CI_Model{ //za pitanja public $idPitanje. Model admin panel <?php /* * To change this license header. public $odg3P.4. public $odg6TP.//dohvatanje id pitanja public $textPitanje. public $odg4TP. public $kat2P.5.//za text pitanja public $oblastPitanje. choose Tools | Templates * and open the template in the editor. 36 . public $odg2TP. public $odg3TP. choose License Headers in Project Properties. public $odg1TP.

} //funkcije za pitanja public function dohvati_pitanja($limit = 6){ $offset=$this->uri->segment(3).id_kategorija = pitanja_kategorije. } public function dohvati_pitanja_bez_paginacije(){ $this->db->select('*'). $this->db->select('*').id_pitanje'). 'pitanja. 'pitanja.id_pitanje'). 'kategorije. public $brBodovaP.id_pitanje').id_pitanje = pitanja_kategorije. //kategorije public $idKategorija. $this->db->from('pitanja'). 'pitanja.id_pitanje = pitanja_oblasti. $this->db->join('pitanja_kategorije'. $this->db->join('oblasti'. public $oblastText.public $slikaPitanje.id_pitanje = pitanja_oblasti.id_pitanje = pitanja_kategorije.id_kategorija').$offset).id_oblasti'). $this->db->join('pitanja_oblasti'. $this->load->database().id_pitanje'). 37 . public $viseOdgovora. 'oblasti. $this->db->join('kategorije'.id_oblasti = pitanja_oblasti. public function __construct() { parent::__construct(). public $idUnet. return $this->db->get()->result_array(). //aktivnosti public $idAktivnost. $this->db->from('pitanja'). 'pitanja. // $this->db->join('pitanja_oblasti'. public $poeniAktivnost. // $this->db->join('pitanja_kategorije'. public $emailAktivnost. $this->db->limit($limit. //oblasti public $idOblasti.

id_kategorija').id_oblasti = pitanja_oblasti. return $this->db->get()->result_array().id_pitanje').id_oblasti'. 'kategorije. 38 . $this->db->where('pitanja.$this->idPitanje). 'pitanja.id_oblasti = pitanja_oblasti. 'oblasti. return $this->db->get()->result_array(). $this->db->join('kategorije'.id_kategorija'.$offset).id_oblasti = pitanja_oblasti. } public function obrisi_pitanje(){ $this->db->where('id_pitanje'.id_pitanje'.$this->idKategorija).id_kategorija = pitanja_kategorije. return $this->db->get()->result_array().$this->idOblasti). $this->db->join('pitanja_oblasti'. $this->db->from('pitanja'). $this->db->select('*').id_pitanje = pitanja_kategorije.$offset).id_kategorija = pitanja_kategorije. $this->db->select('*'). // $this->db->join('oblasti'. 'pitanja.id_pitanje = pitanja_oblasti. $this->db->from('pitanja'). 'oblasti. $this->db->limit($limit.id_pitanje'). $this->db->join('oblasti'. 'oblasti.id_pitanje'). $this->db->from('pitanja').id_pitanje = pitanja_oblasti.// $this->db->join('kategorije'. $this->db->join('oblasti'. 'pitanja.id_oblasti'). $this->db->join('pitanja_kategorije'.id_oblasti'). } public function dohvati_pitanja_za_kategoriju($limit = 6){ $offset=$this->uri->segment(3).id_kategorija'). $this->db->where('kategorije. $this->db->limit($limit. $this->idPitanje). } public function dohvati_pitanje(){ $this->db->select('*'). 'kategorije. } public function dohvati_pitanja_za_oblast($limit = 6){ $offset=$this->uri->segment(3).id_oblasti'). $this->db->where('oblasti. return $this->db->get()->result_array(). $this->db->join('pitanja_oblasti'.

$this->db->update('pitanja_kategorije'. }else{ $this->db->where('id_pitanje'. 1). "pitanje_vrsta"=> $this->viseOdgovora. 2). $this->db->where('id_kategorija'.$this->db->delete('pitanja'). $this->db->where('id_kategorija'. $this->db->where('id_pitanje'. $this->idPitanje). "pitanje_poeni"=> $this->brBodovaP ). 1). $this->db->where('id_kategorija'. $this->db->update('pitanja'. 39 . $this->idPitanje). $this->db->where('id_pitanje'. $niz1). //kategorije if(($this->kat1P)!="" || ($this->kat1P)!=null){ $niz1=array( "id_pitanje"=> $this->idPitanje. "id_kategorija"=> $this->kat2P ). $this->db->update('pitanja_kategorije'. $this->db->delete('pitanja_kategorije'). "id_kategorija"=> $this->kat1P ). "pitanje_slika"=> $this->slikaPitanje. $niz1). $niz). } public function izmeni_pitanje(){ //pitanje $niz=array( "pitanje_text"=> $this->textPitanje. $this->db->where('id_pitanje'. $this->idPitanje). } if(($this->kat2P)!="" || ($this->kat2P)!=null){ $niz1=array( "id_pitanje"=> $this->idPitanje. $this->idPitanje).

$this->db->where('id_pitanje'. }else{ $this->db->where('id_pitanje'.}else{ $this->db->where('id_pitanje'. $this->idPitanje). $this->idPitanje). $this->db->where('id_pitanje'. 2). $this->idPitanje). }else{ $this->db->where('id_pitanje'. $niz1). $this->db->delete('pitanja_kategorije'). } if(($this->kat5P)!="" || ($this->kat5P)!=null){ $niz1=array( "id_pitanje"=> $this->idPitanje. $niz1). $this->db->where('id_kategorija'. 4). } if(($this->kat3P)!="" || ($this->kat3P)!=null){ $niz1=array( "id_pitanje"=> $this->idPitanje. $this->db->delete('pitanja_kategorije'). $this->db->where('id_kategorija'. 3). $this->db->where('id_kategorija'. $this->db->update('pitanja_kategorije'. "id_kategorija"=> $this->kat3P ). $this->idPitanje). } if(($this->kat4P)!="" || ($this->kat4P)!=null){ $niz1=array( "id_pitanje"=> $this->idPitanje. $this->db->where('id_kategorija'. $this->db->delete('pitanja_kategorije'). 40 . "id_kategorija"=> $this->kat4P ). 4). $this->idPitanje). $this->db->where('id_kategorija'. 3). $this->db->update('pitanja_kategorije'.

$this->db->where('id_pitanje'. 5). $this->db->delete('pitanja_kategorije')."id_kategorija"=> $this->kat5P ). $this->db->update('odgovori'. $niz1). $niz1). $this->idPitanje). }else{ 41 . } //odgovori if(($this->odg1P)!="" || ($this->odg1P)!=null){ $niz1=array( "odgovor_text"=> $this->odg1P. $this->db->where('id_pitanje'. $this->idPitanje). $this->db->update('odgovori'. $this->db->where('id_kategorija'. "odgovor_tacan"=> 0 ). "odgovor_tacan"=> $this->odg2TP ). $niz1). $this->idPitanje). $this->db->where('id_kategorija'. "odgovor_tacan"=> $this->odg1TP ). $this->idPitanje). $this->db->where('id_pitanje'. $this->db->update('odgovori'. $this->idPitanje). 5). $niz1). $this->db->update('pitanja_kategorije'. $this->db->where('id_pitanje'. }else{ $this->db->where('id_pitanje'. } if(($this->odg2P)!="" || ($this->odg2P)!=null){ $niz1=array( "odgovor_text"=> $this->odg2P. }else{ $niz1=array( "odgovor_text"=> $this->odg1P.

}else{ $niz1=array( "odgovor_text"=> $this->odg4P. $this->db->where('id_pitanje'. "odgovor_tacan"=> 0 ). } if(($this->odg3P)!="" || ($this->odg3P)!=null){ $niz1=array( "odgovor_text"=> $this->odg3P. $this->db->update('odgovori'. $this->db->where('id_pitanje'. "odgovor_tacan"=> $this->odg3TP ). $this->db->where('id_pitanje'. }else{ $niz1=array( "odgovor_text"=> $this->odg3P. "odgovor_tacan"=> 0 ). "odgovor_tacan"=> $this->odg4TP ). $niz1). $this->db->update('odgovori'. $niz1).$niz1=array( "odgovor_text"=> $this->odg2P. $niz1). $niz1). } if(($this->odg4P)!="" || ($this->odg4P)!=null){ $niz1=array( "odgovor_text"=> $this->odg4P. $this->idPitanje). $this->db->update('odgovori'. $this->db->update('odgovori'. "odgovor_tacan"=> 0 ). 42 . $this->db->where('id_pitanje'. $this->idPitanje). $this->idPitanje). $this->idPitanje).

$niz1). "odgovor_tacan"=> $this->odg5TP ). }else{ $niz1=array( "odgovor_text"=> $this->odg6P. $this->db->update('odgovori'. $this->db->where('id_pitanje'. "odgovor_tacan"=> 0 ). $this->db->update('odgovori'. $niz1). $this->db->where('id_pitanje'. $this->db->where('id_pitanje'. $this->idPitanje). } if(($this->odg6P)!="" || ($this->odg6P)!=null){ $niz1=array( "odgovor_text"=> $this->odg6P. $this->idPitanje). $this->db->update('odgovori'. $this->idPitanje). "odgovor_tacan"=> $this->odg6TP ). $this->db->update('odgovori'.$this->db->where('id_pitanje'. }else{ $niz1=array( "odgovor_text"=> $this->odg5P. $niz1). $this->db->update('odgovori'. $niz1). } //oblast 43 . } if(($this->odg5P)!="" || ($this->odg5P)!=null){ $niz1=array( "odgovor_text"=> $this->odg5P. $this->idPitanje). $niz1). $this->db->where('id_pitanje'. "odgovor_tacan"=> 0 ). $this->idPitanje).

$this->db->insert('pitanja_kategorije'. $this->idPitanje). $niz2). "id_oblast"=> $this->oblastPitanje ). $this->db->insert('pitanja'. $this->db->where('id_pitanje'. } public function dodaj_pitanje(){ $niz=array( "pitanje_text"=> $this->textPitanje. "id_kategorija"=> $this->kat2P ). "pitanje_poeni"=> $this->brBodovaP ).$niz2=array( "id_pitanje"=> $this->idPitanje. $this->idUnet=$this->db->insert_id(). } if(($this->kat3P)!="" || ($this->kat3P)!=null){ $niz1=array( "id_pitanje"=> $this->idUnet. "id_kategorija"=> $this->kat1P ). } if(($this->kat2P)!="" || ($this->kat2P)!=null){ $niz1=array( "id_pitanje"=> $this->idUnet. "pitanje_slika"=> $this->slikaPitanje. "pitanje_vrsta"=> $this->viseOdgovora. $niz1). $niz). $this->db->insert('pitanja_kategorije'. $niz1). 44 . $this->db->update('pitanja_oblasti'. //kategorije if(($this->kat1P)!="" || ($this->kat1P)!=null){ $niz1=array( "id_pitanje"=> $this->idUnet.

$niz1). } if(($this->kat4P)!="" || ($this->kat4P)!=null){ $niz1=array( "id_pitanje"=> $this->idUnet. $this->db->insert('pitanja_kategorije'. $niz1). $this->db->insert('pitanja_kategorije'. $niz1). $this->db->insert('odgovori'. 45 . "id_kategorija"=> $this->kat5P ). "id_kategorija"=> $this->kat4P ). } if(($this->odg2P)!="" || ($this->odg2P)!=null){ $niz1=array( "odgovor_text"=> $this->odg2P. "id_pitanje"=> $this->idUnet ). $niz1). $this->db->insert('odgovori'. "odgovor_tacan"=> $this->odg2TP. $this->db->insert('pitanja_kategorije'. } if(($this->kat5P)!="" || ($this->kat5P)!=null){ $niz1=array( "id_pitanje"=> $this->idUnet. $niz1). "id_pitanje"=> $this->idUnet ). } //odgovori if(($this->odg1P)!="" || ($this->odg1P)!=null){ $niz1=array( "odgovor_text"=> $this->odg1P. "odgovor_tacan"=> $this->odg1TP."id_kategorija"=> $this->kat3P ).

$niz1).} if(($this->odg3P)!="" || ($this->odg3P)!=null){ $niz1=array( "odgovor_text"=> $this->odg3P. $this->db->insert('odgovori'. } if(($this->odg6P)!="" || ($this->odg6P)!=null){ $niz1=array( "odgovor_text"=> $this->odg6P. } if(($this->odg4P)!="" || ($this->odg4P)!=null){ $niz1=array( "odgovor_text"=> $this->odg4P. $this->db->insert('odgovori'. } if(($this->odg5P)!="" || ($this->odg5P)!=null){ $niz1=array( "odgovor_text"=> $this->odg5P. "id_pitanje"=> $this->idUnet ). "odgovor_tacan"=> $this->odg4TP. } //oblast 46 . $niz1). $this->db->insert('odgovori'. $this->db->insert('odgovori'. "odgovor_tacan"=> $this->odg6TP. "id_pitanje"=> $this->idUnet ). "id_pitanje"=> $this->idUnet ). "id_pitanje"=> $this->idUnet ). "odgovor_tacan"=> $this->odg3TP. $niz1). "odgovor_tacan"=> $this->odg5TP. $niz1).

$this->idPitanje).$offset). 'pitanja_kategorije. } public function dohvati_kategorije_za_pitanje(){ $this->db->select('*'). return $this->db->get()->result_array(). $this->db->from('kategorije'). $this->db->where('pitanja_kategorije. } public function pagination_pitanje($limit = 6){ $offset=$this->uri->segment(3). return $this->db->get_where('pitanja'. $niz2).id_kategorija pitanja_kategorije. $this->db->from('kategorije'). $this->db->insert('pitanja_oblasti'. $this->db->join('pitanja_kategorije'. } //funkcije za kategorije public function dohvati_kategorije(){ $this->db->select('*'). return $this->db->get()->result_array(). 47 = .id_pitanje'. $this->db->where('id_pitanje'. }//za paginaciju public function brojPitanja(){ return $this->db->count_all_results('pitanja'). $this->db->from('odgovori'). } //funkcije za odgovore public function odgovori_za_pitanje(){ $this->db->select('*'). array('aktivan_post'=>1))->result_array(). $this->idPitanje). "id_oblast"=> $this->oblastPitanje ).id_kategorija'). return $this->db->get()->result_array().$niz2=array( "id_pitanje"=> $this->idUnet. $this->db->limit($limit.

$this->db->where('id_oblasti'.//za hvatanje jedne oblasti } public function izmeni_oblast(){ $podaci = array('oblast_text' => $this->oblastText). } //funkcije za aktivnosti 48 . $podaci).id_oblasti = pitanja_oblasti. $this->db->update('oblasti'. return $this->db->get()->result_array(). 'oblasti. $this->db->where('id_pitanje'.} //funkcije za oblasti public function dohvati_oblasti(){ $this->db->select('*'). $this->db->join('pitanja_oblasti'. $this->db->from('oblasti'). $this->idOblasti). return $this->db->get()->row_array(). $this->idPitanje). $this->idOblasti). } public function obrisi_oblast(){ $this->db->where('id_oblasti'. $this->db->insert('oblasti'. } public function dodaj_oblast(){ $podaci = array('oblast_text' => $this->oblastText). $this->db->delete('oblasti'). $podaci). } public function dohvati_obl(){ $this->db->select('*'). $this->db->from('oblasti').//za hvatanje jedne oblasti } public function dohvati_oblast_za_pitanje(){ $this->db->select('*'). $this->idOblasti). return $this->db->get()->row_array(). $this->db->where('id_oblasti'.id_oblasti'). $this->db->from('oblasti').

'datum_aktivnost' => $date ).$podaci). $podaci = array( 'email_aktivnost' => $this->emailAktivnost. } public function brojAktivnosti(){ return $this->db->count_all_results('aktivnosti'). $this->idAktivnost). $this->db->delete('aktivnosti'). return $this->db->get()->result_array(). } public function obrisi_aktivnost(){ $this->db->where('id_aktivnost'. $this->db->from('aktivnosti'). 'poeni_aktivnost' => $this->poeniAktivnost. } } 49 .public function dohvati_aktivnosti(){ $this->db->select('*'). } public function dodaj_aktivnost(){ $date=time(). $this->db->insert('aktivnosti'.

} //za logovanje function dohvati(){ $uslov=array("mail_korisnik"=>$this->email. $query=$this->db->get(). public $uloga. $this->db->where($uslov). function __construct() { parent::__construct(). public $password.id_uloga=korisnici. Model logovanje <?php /* * To change this license header. $this->load->database().6. $this->db->from('korisnici'). public $aktivan. public $ime. public $email. $this->db->select('*'). } 50 . */ /** * Description of model_logovanje * @author kovin */ class Model_logovanje extends CI_Model{ public $idkorisnik. * To change this template file. choose Tools | Templates * and open the template in the editor.4. return $query->row_array(). public $username.'uloga. choose License Headers in Project Properties. public $prezime. $this->db->join('uloga'.id_uloga')."pass_korisnik"=>$this->password).

} 51 .

Baza podataka 52 .5. Baza podataka Slika 8 .

Ovaj projekat je urađen na zahtev auto škole “Pravo” i za osnovu je bila postavka bez admin panela. ukoliko za tako nešto ima potrebe. Buduće ideje su da se naprave različite kategorije korisnika koji mogu da se loguju da bi mogli da prate statistiku i napredovanje u svom poznavanju saobraćajnih propisa i pripremi za polaganje testova. Takođe u admin panelu mogu da se vide i aktivnosti svih koji su radili testove. kao i kategorija vozila. njihovu e-mail adresu. tj. 53 . vreme rađenja testa i bodove koje su ostvarili. Zaključak Ovaj servis ima dosta prostora za proširivanje.6. Admin panel je kreiran kako bi olakšao administrator izmenu i unos novih pitanja.

http://www.Literatura 1.net/ 3.ict.edu.w3schools.php.com/ 6. http://webdizajn. https://angularjs.com/ 2. http://developer.codeigniter. http://www.mozilla.com/ 5.org/ 54 . http://stackoverflow.org/ 7. http://www.rs/ 4.