Napomena WEB PROGRAMIRANJE I PRIMJENE DRUGI KOLOKVIJ vrijeme predviđeno za rješavanje kolokvija je 60 minuta kolokvij se sastoji od 15 pitanja, a ukupan broj bodova je 165 (uz svaki zadatak istaknut je pripadni broj bodova) Zadaci 1. zadatak. (5 bodova) MySQL je a. Relational Database Management System b. programski jezik c. tehnika pisanja programa d. API (Application Programmer Interface) e. GUI (Graphic User Interface) 2. zadatak. (5 bodova) Za izradu baze podataka imena moja_baza koristimo naredbu a. CREATE DATABASE moja_baza b. CREATE BASE moja_baza c. DATABASE /moja_baza/ d. MySql >database(moja_baza) 3. zadatak (5 bodova). Promotrite tablicu Osoba koja pripada nekoj relacijskoj bazi podataka JMBG Ime Prezime Dob Adresa Grad 1005982123456 Ivan Ivić 28 Istarska 7 Osijek 2003978124534 Ante Antić 32 Vrbani 9 Zagreb 3009983126547 Marija Marić 27 Ružina 10 Osijek Odjel za matematiku, Sveučilište u Osijeku 1
Koje od sljedećih opcija u ovom slučaju NISU dobri kandidati za primarni ključ: a. stupac JMBG b. cjelina stupaca Ime, Prezime i Grad c. stupac Prezime d. cjelina stupaca JMBG i Adresa e. cjelina stupaca Prezime, Dob i Grad 4. zadatak (5 bodova). Popunite prazna mjesta u sljedećoj tvrdnji te odaberite točne odgovore: Za davanje privilegija MySQL korisnicima koristi se naredba GRANT, a za oduzimanje privilegija naredba REVOKE. U SQL u postoje četiri stupnja privilegija: Global, Database, Table, Column. U općoj sintaksi za dodjeljivanje privilegija GRANT privileges [ columns] ON item TO user_name za dodjeljivanje privilegija određenog stupnja 'item' treba zamijeniti s 1. *.* ili * za privilegije stupnja GLOBAL 2. ImeBaze* za privilegije stupnja DATABASE 3. ImeBaze*ImeTablice za privilegije stupnja TABLE 4. ImeBaze.ImeTablice uz specifikaciju određenih stupaca tablice ImeTablice za privilegije stupnja COLUMN 5. zadatak. (10 bodova) Naredba SELECT bez uporabe riječi WHERE vraća a. sve podatke iz tablice, ili informacije o svim podacima b. ništa c. sve podatke iz tablice koji odgovaraju prethodnoj uporabi riječi WHERE d. SELECT se ne može koristiti bez riječi WHERE Odjel za matematiku, Sveučilište u Osijeku 2
6. zadatak. (10 bodova) Koje od sljedećih tvrdnji su netočne za PHP: a. Ako koristimo POST metodu varijable su vidljive u URL u b. PHP sintaksa je vrlo slična C u i Perl u c. PHP omogućava slanje maila direktno iz skripte d. komentari se upisuju kao <! komentar!> e. sve varijable počinju znakom % 7. zadatak (10 bodova). Popunite prazna mjesta u sljedećem SQL kodu kojim se prema shemi Osoba(ID, Ime, Prezime) kreira nova tablica u relacijskoj bazi podataka, pri čemu ID sadrži cijelobrojne podatke koji služi za jednoznačnu identifikaciju osobe u bazi, a podaci u Ime i Prezime smiju sadržavati imena i prezimena osoba koja se sastoje od najviše 50 znakova: create table osoba (ID int unsigned not null auto_increment primary key, ime char(50) not null, prezime char(100) not null, ); Ukratko objasnite sljedeće dijelove prethodnog koda: unsigned podaci u stupcu tipa integer mogu imati samo nenegativne cjelobrojne vrijednosti, tj. 0, 1, 2...; not null sva polja u stupcu tipa not null moraju sadržavati podatak specificiranog tipa; auto_increment ako se pri unosu podataka u tablicu baze polje u stupcu tipa auto_increment ostavi prazno, MySQL automatski generira jedinstvenu identifikacijsku vrijednost koja se upisuje u to polje tablice. Odjel za matematiku, Sveučilište u Osijeku 3
8. zadatak (10 bodova) Neka je $email=postobracun@export.com; Koji od sljedećih naredbi prvom elementu polja $odvojeno pridružuje korisničko ime, a drugom elementu naziv domene? a. $odvojeno=explode($email,'@'); b. $odvojeno= explode('@', $email); c. $odvojeno[1]=strpos($email,0,11); $odvojeno[2]= strpos($email,12,10); d. $odvojeno[0]=strpos($email,0,11); $odvojeno[1]= strpos($email,12,10); e. $odvojeno[0]=strpos($email,0,10); $odvojeno[1]= strpos($email,12,21); f. $odvojeno[0]=strpos($email,0, 11); $odvojeno[1]= strpos($email, 10); 9. zadatak (10 bodova). Promotrite sljedeći Left Join SQL upit i njegov rezultat te odaberite točne odgovore: select customers.customerid, customers.name, orders.orderid from customers left join orders on customers.customerid = orders.customerid; a. Julie Smith je bazi podataka jednoznačno identificirana customerid om 3 te je napravila dvije narudžbe: narudžbe identificirane sa ordered=1 i orderid=4 b. Julie Smith je u bazi podataka identificirana vrijednostima 1 i 4 stupca orderid tablice orders c. Alan Wong je u bazi podataka jednoznačno identificiran customerid om 4 i nije napravio niti jednu narudžbu Odjel za matematiku, Sveučilište u Osijeku 4
d. Ovaj upit ne može rezultirati tablicom koja je ovdje ponuđena kao rezultat jer jeupit sintaktički neispravan nedostaje znak ; n kraju svakog reda e. Michelle Arthur u bazi podataka nije jednoznačno identificirana jer je njen orderid tipa NULL, tj. pripadno polje u stupcu orderid tablice orders je prazno 10. zadatak (15 bodova). Ispravite grešku u sljedećoj PHP skripti te skicirajte tablicu koju ona generira: <table> <tr> <td align="center">distance</td> <td align="center">cost</td> </tr> <?php $distance = 10; --------- while ($distance <= 25) { echo "<tr> <td align=\"right\">".$distance."</td> <td align=\"right\">".($distance / 2)."</td> </tr>\n"; $distance += 10; }?> </table> Distance Cost 10 5 20 10 Odjel za matematiku, Sveučilište u Osijeku 5
11. zadatak. (15 bodova) Pretpostavimo da varijabla $x sadrzi tekst upita pod a) iz 11. zadatka. PHP script izvršava sljedeći upit @ $y = new mysqli( localhost, lijekovi, lijekovi, Lijekovi ); $z=$y >query($x); Koje od sljedećih tvrdnji nisu točne: a. Pod pretpostavkom da je veza s bazom uspješno uspostavljena nad tablicom Lijek koja se nalazi u bazi podataka Lijekovi na poslužitelju localhost, bit će izvršen upit tipa INSERT b. Pod pretpostavkom da je veza s bazom uspješno uspostavljena nad tablicom lijekovi koja se nalazi u bazi podataka Lijek na poslužitelju localhost, bit će izvršen upit tipa INSERT c. Ukoliko veza nije uspješno uspostavljena, unos u bazu podataka se neće izvršiti. d. Metoda query definirana je u objektu mysqli 12. zadatak. (15 bodova) Dopunite dio PHP skripte tako da uklonite whitespace, te dodate kosu crtu (\) kod varijable ime: <?php $ime= ($_POST['ime']); $ime= ($ime);?> 13. zadatak. (15 bodova) @$novo = fopen("$document_root/sve/pisanje/najbolji.txt", 'w'); Popunite prazna mjesta tako da dobijete PHP naredbu koja: a. otvara datoteku najbolji.txt koja se nalazi u poddirektoriju pisanje direktorija sve koji se nalazi u korijenskom direktoriju za javne dokumente na WEB poslužitelju. b. režim rada s datotekom je PISANJE (upis u datoteku) c. rezultat (kao resurs) sprema se u varijablu novo Odjel za matematiku, Sveučilište u Osijeku 6
14. zadatak. (15 bodova) $klase=array('pravo'=>1,'nista'=>2,'sve'=>3); while ($clan = each($klase)) { echo $clan['key']; echo " "; echo $clan['value']; echo "<br />"; } Koje su od sljedećih tvrdnji točne? a. Petlja while izvršavat će se sve dok je vrijednost varijable clan jednaka svakoj vrijednosti varijable $klase a ispisivat će nazive ključa i vrijednosti varijable clan b. Petlja while izvršavat će se sve dok je vrijednost varijable clan jednaka svakoj vrijednosti varijable $klase a ispisivat će vrijednost atributa key i value objekta clan koji je instanca klase array c. Petlja while izvršavat će onoliko puta koliko polje klase ima elemenata. U svakoj iteraciji ispisat će se najprije vrijednost a potom naziv ključa svakog člana. d. Petlja while izvršavat će onoliko puta koliko polje klase ima elemenata. U svakoj iteraciji ispisuje se najprije naziv ključa a potom vrijednost svakog elementa. 15. zadatak. (20 bodova) Pretpostavimo da baza podataka Lijekovi ima sljedeće tri tablice koje su povezane kao na slici. Odjel za matematiku, Sveučilište u Osijeku 7
Napišite upite koji a. u tablicu Lijek unosi novi lijek pod nazivom Bisolex, koji ima barkod 3850114206143 proizvođača PLIVA HRVATSKA d.o.o., roka valjanosti 36 mjeseci a cijena iznosi 25,89 kn. PRETPOSTAVKA: Polje Kod je specificirano kao int autoincrement, polje Rok valjanosti (mj) je tipa INTEGER, a polje Cijena je tipa FLOAT. Polja Faramceutski oblik, Način izdavanja, Način čuvanja, Vrijeme djelovanja (min) I Odjel mogu ostati prazna. INSERT INTO TABLE Lijek VALUES (NULL,'3850114206143','Bisolex',NULL,'PLIVA HRVATSKA d. o. o.', 36, NULL, NULL, 25.89, NULL, NULL ); b. Popunite sljedeće upit s vrijednostima (1, Analgetik ) I (2, Antipiretik ) tako da budu valjani. INSERT INTO Farmakoterapijska skupina values(1, Analgetik ); INSERT INTO Farmakoterapijska skupina values(2, Antipiretik ); c. Napišite upite za unos podataka kojima specificirate Bisolex kao analgetik i antipiretik ako je vrijednost primarnog ključa Kod za Bisolex u tablici Lijek jednaka 105. INSERT INTO Specifikacija FSL VALUES (105,1), (105,2); d. Između tablica Lijek i Faramkoterapijska skupina postoji veza više prema više. Odjel za matematiku, Sveučilište u Osijeku 8