Вы находитесь на странице: 1из 0

PHP

Literatura

Luke Welling, Laura Thomson, PHP i MySQL: Razvoj aplikacija za Web, prevod
Mikro knjiga, 2006.

Predmet: Aplikativni softver
Predava: dr Violeta Tomaevi, vanr.prof.
Departman za informatiku i raunarstvo
2
ta je PHP?
PHP predstavlja jezik za pisanje skriptova koji rade na serveru.

PHP je projektovan za upotrebu na Web-u. Njegovu poetnu verziju je
1994.godine napravio Rasmus Lerdorf. Kasnije je PHP proao kroz
nekoliko verzija dok nije doao do danas aktuelne verzije PHP 5.

PHP je inicijalno bila skraenica za Personal Home Page, ali je znaenje
kasnije izmenjeno, pa sada oznaava PHP Hypertext Preprocessor.

PHP je proizvod otvorenog koda, tj. slobodan je pristup njegovom
izvornom kodu koji moe besplatno da se koristi, menja i dalje distribuira.
3
Prednosti PHP-a (1)
U odnosu na svoje glavne konkurente (Perl, MS ASP.NET, JSP i ColdFusion),
PHP ima sledee prednosti:

Visoke performanse. PHP je vrlo efikasan. Jedan relativno slab server moe
da obradi vie miliona zahteva dnevno. Kapacitet obrade postaje praktino
beskonaan ukoliko se koristi vei broj spregnutih servera.

Niska cena. PHP je besplatan. Najnovija verzija se moe preuzeti sa adrese
http://www.php.net.

Lako se ui i upotrebljava. Sintaksa PHP-a je slina sintaksama drugih
programskih jezika kao to su Perl, C, Java.

Prenosivost. PHP je na raspolaganju za mnoge OS. PHP kod se moe pisati
pod jednim od OS iz porodice Unix, ili pod raznim verzijama Windows-a.
Napisani kod najee e raditi bez izmena i pod drugim OS u kojima je instaliran
PHP.
4
Prednosti PHP-a (2)
Izvorni kod je dostupan svima. Jeziku PHP se slobodno moe neto dodavati
ili menjati, tj. ne mora se brinuti o proizvoau.

Dobra podrka za objektno-orijentisano programiranje. Verzija PHP 5 donosi
objektno-orijentisane mogunosti, kao to su nasleivanje, privatni i zatieni
atributi i metode, apstraktne klase i metode, intefejsi, konstruktori i destruktori.

Ugraene biblioteke za obavljanje velikog broja poslova uobiajenih u Web
aplikacijama. PHP-ove biblioteke omoguavaju veliki broj funkcija kao to su:
generisanje slike tokom rada aplikacije, uspostavljanje veze sa Web servisima,
korienje XML dokumenata, generisanje PDF dokumenata, slanje poruke e-
mail-om, itd.

Povezivanje sa brojnim sistemima za upravljanje bazama podataka. PHP
standardno omoguava uspostavljanje veza sa vie sistema za upravljanje
bazama podataka, kao to su: MySQL, Oracle, dbm, Informix, InterBase, mSQL i
dr.
<form action=obradanar.php method=post>
<table border=0>
<tr bgcolor=#ffff00>
<td width=150>Stavka </td>
<td width=15>Kolicina </td>
</tr>
<tr>
<td>Olovka</td>
<td align=center><input type=text name=olovkakol size=3 maxlength=3/></td>
</tr>
<tr>
<td>Sveska</td>
<td align=center><input type=text name=sveskakol size=3 maxlength=3/></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=Poslati narudzbenicu/></td>
</tr> </table> </form>
5
Upotreba PHP-a (1)
Jedna od najeih primena serverskih skript jezika je obrada HTML formi.
Stavka
Poslati narudzbenicu
Olovka
Sveska
Kolicina
Primer: forma.html
6
Upotreba PHP-a (2)
Da bismo obradili podatke koje je korisnik uneo u polja forme, treba da
napravimo skript zadat u atributu action taga form. Skript u sutini predstavlja
HTML kod u koji je ugraen PHP kod tako to je definisana sekcija:

<?php PHP kod ?>
Skript: obradanar.php
Rezultati rada skripta e se dobiti u
Web browser-u nakon toga to
korisnik unese podatke u formu i
pritisne dugme Poslati narudzbenicu.
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena.
<html>
<head>
<title>Knjizara - Rezultati</title>
</head>
<body>
<h1>Knjizara</h1>
<h2>Rezultati narudzbe</h2>
<?php
echo <p>Narudzbenica je obradjena.</p>;
?>
</body>
</html>
7
Upotreba PHP-a (3)
PHP naredbe se ne vide na klijentskoj strani zato to je interpreter PHP koda naredbe
zamenio rezultatom. To znai da se iz PHP koda dobija isti HTML kod koji se moe gledati
pomou svakog itaa, odnosno itai ne moraju da razumeju PHP.

PHP kod se interpretira i izvrava na serveru (za razliku od JavaScript koda koji se izvrava
unutar itaa na klijentskoj strani).
PHP skript na serveru
PHP skript kako ga vidi Web browser
<html>
<head>
<title>Knjizara - Rezultati</title>
</head>
<body>
<h1>Knjizara</h1>
<h2>Rezultati narudzbe</h2>
<?php
echo <p>Narudzbenica je obradjena.</p>;
?>
</body>
</html>
<html>
<head>
<title>Knjizara - Rezultati</title>
</head>
<body>
<h1>Knjizara</h1>
<h2>Rezultati narudzbe</h2>
<p>Narudzbenica je obradjena.</p>
</body>
</html>
8
Sintaksa PHP-a
PHP tag, koji pokazuje serveru gde poinje, a gde se zavrava PHP kod u okviru HTML koda,
moe biti napisan na etiri ekvivalentna naina (stila):

XML stil - Ovaj stil se preporuuje. Moe se koristiti sa XML dokumentima. Administrator
servera ga ne moe iskljuiti.

<?php echo <p>Narudzbenica je obradjena.</p>; ?>

Skraeni stil - Da bi se koristio ovaj stil, mora se u konfiguracionoj PHP datoteci setovati
opcija short_tags. Stil se ne preporuuje, jer ga administratori ponekad iskljuuju, to moe da
dovede do pogrenog tumaenja XML dokumenata.

<? echo <p>Narudzbenica je obradjena.</p>; ?>

SCRIPT stil - Ovaj stil je najdui. Moe se koristiti ako HTML editor pravi probleme sa
drugim stilovima.

<SCRIPT LANGUAGE=php> echo <p>Narudzbenica je obradjena.</p>; /script>
.
ASP stil - Ovaj stil se koristi u okruenjima ASP i ASP.NET (opcija asp_tags mora biti
setovana). Standardno je iskljuen.

<% echo <p>Narudzbenica je obradjena.</p>; %>
9
PHP iskazi i beline
PHP iskazi (PHP statements) se nalaze izmeu poetnog i zavrnog PHP taga i
odreuju ta interpreter PHP koda treba da uradi. Na kraju svakog iskaza nalazi
se znak ;.

Primer: echo <p>Narudzbenica je obradjena.</p>;

Naredba echo tampa, tj. ispisuje u itau tekst koji joj se zada.
Beline (white spaces), kao to su novi red i tabulator, koje su ispisane u PHP
kodu se zanemaruju (kao i u HTML kodu). Ipak, beline treba koristiti da bi kod
stranica bio itljiviji.

Primer: Iskazi

echo hello; i echo hello; echo world;
echo world;

su identini, ali se prvi kod lake ita.
10
Dodavanje dinamikog sadraja
Glavni razlog upotrebe PHP skriptova jeste mogunost lake izrade dinamikog
sadraja. To je bitna primena, jer sadraj koji se menja periodino, ili prema
potrebama korisnika podstie posetioce da ee pristupaju Web stranici.

PHP kod Izgled na stranici






PHP sadri bogatu biblioteku funkcija koje se mogu koristiti u Web aplikacijama.
Veini funkcija ili treba proslediti neke podatke, ili one vraaju neke podatke.
Argument ili parametar funkcije je ulazni podatak koji se prosleuje kao znakovni
niz izmeu zagrada.
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena u 12:42.
<?php
echo <p>Narudzbenica je obradjena u ;
echo date(H:i);
echo .</p>;
?>
11
Pristup promenljivama forme (1)
PHP omoguava lak pristup podacima koje je korisnik uneo u polja forme, ali nain preuzimanja
podataka zavisi od verzije PHP-a i od parametara u datoteci php.ini.

Iz PHP skripta se svakom polju forme moe pristupiti preko istoimene PHP promenljive
(variable). Imena promenljivih u PHP-u poinju znakom $.

Postoje tri naina pristupanja podacima u zavisnosti od verzije PHP-a:

Kratki stil Ovo je vrlo jednostavan nain pristupa. Imena promenljivih u skriptu su ista kao
imena polja u formama. Svim lokalnim promenljivama moraju se zadati poetne vrednosti.
$olovkakol

Srednji stil Ovaj stil podrazumeva uitavanje vrednosti promenljivih forme iz jednog od
nizova: _POST, _GET ili _REQUEST. Vrednosti svih polja forme e se nalaziti u nizu _POST ili
_GET, zavisno od upotrebljene metode za slanje forme. Bez obzira na metodu, sve vrednosti se
nalaze i u nizu _REQUEST.
$_POST[olovkakol]

Dugi stil Ovaj stil omoguava uitavanje vrednosti promenljivih forme preko
$HTTP_POST_VARS ili $HTTP_GET_VARS. Poto je zastareo, ovaj stil e biti ukinut.
$HTTP_POST_VARS[olovkakol]
12
Pristup promenljivama forme (2)
S obzirom da su srednji i dugi stil malo nezgrapni i zahtevaju rad sa nizovima, obino se
prave kopije promenljivih koje se jednostavnije upotrebljavaju. One se obino stavljaju na
poetak skripta:

<?php Izgled na stranici
// formira promenljive sa kratkim imenima
$olovkakol = $_POST[olovkakol];
$sveskakol = $_POST[sveskakol];
echo <p>Narucili ste sledece: </p>;
echo $olovkakol. olovke<br />;
echo $sveskakol. sveske<br />;
?>

Navedeni kod pravi dve nove promenljive $olovkakol i $sveskakol, koje sadre podatke
poslate iz forme metodom POST. U iskazu echo, taka (.) se koristi za nadovezivanje
teksta, tj. konkatenaciju.

U PHP-u, ime promenljive se moe pisati unutar navodnika zajedno sa drugim tekstom i tada ga PHP
zamenjuje odgovarajuom vrednou. Ovo ne vai ako se za predstavljanje teksta koriste apostrofi.

echo $olovkakol olovke<br />;
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena u 12:42.

Narucili ste sledece:

2 olovke
3 sveske
13
Identifikatori
Identifikatori predstavljaju imena promenljivih, imena funkcija i imena klasa.

Za identifikatore vae sledea pravila:

Identifikatori mogu biti bilo koje duine i mogu se sastojati od slova, brojeva i
podvlaka.

Identifikatori ne mogu da poinju cifrom.

PHP pravi razliku izmeu malih i velikih slova u identifikatorima. Izuzetak su
imena funkcija.

Promenljiva moe imati isto ime kao i funkcija, ali bi to zbog mogue zabune
trebalo izbegavati.
14
Korisnike promenljive
Osim promenljivih koje su prosleene iz forme, u skriptovima se mogu koristiti i
promenljive koje korisnik sam deklarie. U PHP-u ne treba deklarisati promenljive
pre nego to e biti koriene.

Primer: Ako elimo da izraunamo ukupan broj naruenih artikala i njihovu
ukupnu vrednost, moemo uvesti dve promenljive koje e na poetku biti
inicijalizovane na vrednost 0.

<?php
// formira promenljive sa kratkim imenima
$olovkakol = $_POST[olovkakol];
$sveskakol = $_POST[sveskakol];
echo <p>Narucili ste sledece: </p>;
echo $olovkakol. olovke<br />;
echo $sveskakol. sveske<br />;
$totalkol = 0;
$totalsuma = 0;
?>
15
Tipovi promenljivih
PHP podrava sledee osnovne tipove podataka:

integer celobrojni tip, koristi se za predstavljanje celih brojeva

double ili float pokretni zarez, koristi se za predstavljanje realnih brojeva

string znakovni tip, koristi se za predstavljanje znakovnih podataka

boolean logiki tip, koristi se za predstavljanje podataka tipa tano i netano

array niz, koristi se za uvanje vie podataka istog tipa

object objekat, koristi se za uvanje instanci klasa

Postoje i dva specijalna tipa podataka:

NULL ovog tipa su promenljive kojima nije dodeljena vrednost, koje su
nedefinisane ili kojima je izriito dodeljena vrednost NULL.

resurs predstavljaju spoljne resurse, kao to su veze sa bazama podataka.
Neke ugraene funkcije vraaju promenljive ovog tipa.
16
Konstante
Konstanta predstavlja vrednost koja se jednom zadaje i vie se ne moe
menjati.

Da bi se olakalo razlikovanje promenljivih i konstanti, usvojeno je da se
imena konstanti piu velikim slovima (mada nije obavezno).

Ispred konstante se ne pie $.

Ako se eli upotrebiti vrednost konstante, navodi se samo njeno ime.

Konstante mogu sadrati samo podatke skalarnog tipa, tj. logikog tipa,
celobrojnog, znakovnog i numerike podatke s pokretnim zarezom.

U izvrnom PHP okruenju definisan je veliki broj konstanti, koje se mogu
pregledati pomou komande phpinfo().

Primer: Cene artikala se mogu definisati kao konstante.

define(OLOVKACENA, 20);
define(SVESKACENA, 45);
17
Operatori
Operatori su simboli koji omoguavaju izvravanje operacija nad vrednostima i
promenljivama.

U PHP-u postoje sledee vrste operatora:

Aritmetiki operatori

String operator (operator za konkatenaciju, tj. spajanje stringova)

Operatori dodele (na pr. =, +=, -=, i dr.)

Operatori poreenja

Logiki operatori

Operatori nad bitovima

Operatori za rad sa nizovima (na pr. [ ] za pristup elementu niza)

Ostali operatori (na pr. operator zanemarivanja greke, uslovni operator, i dr.)
18
Aritmetiki i operatori poreenja
Aritmetiki operator Ime Primer
+ sabiranje $a + $b
- oduzimanje $a - $b
* mnoenje $a * $b
/ deljenje $a / $b
% moduo $a % $b
Operatori poreenja Ime Primer
== jednako $a == $b
!= razliito $a != $b
< manje od $a < $b
> vee od $a > $b
>= vee ili jednako $a >= $b
<= manje ili jednako $a <= $b
Aritmetiki operatori se
obino primenjuju na
brojeve. Ako se primene
na string, pokuae se
njegovo pretvaranje u
broj. Ako string sadri e
ili E, pretvorie se u
float, inae u ceo broj.
Izrazi u kojima se
koriste operatori
poreenja vraaju
logiku vrednost true ili
false.
Operator == se esto
mea sa operatorom
dodele =, to ne vodi
eljenom rezultatu.
19
Logiki i operatori nad bitovima
Logiki operator Ime Primer Rezultat
! negacija !$a Vraa true ako je $a false i obrnuto.
&& konjunkcija $a && $b Vraa true samo ako su $a i $b true.
|| disjunkcija $a || $b Vraa true ako je bar jedan operand true.
and konjunkcija $a and $b Isto kao &&, ali sa niim prioritetom.
or disjunkcija $a or $b Isto kao ||, ali sa niim prioritetom.
Opr. nad bitovima Ime Primer Rezultat
& konjunkcija $a & $b Bitovi aktivni u $a i $b aktivni su u rezultatu.
| disjunkcija $a | $b Bitovi aktivni u $a ili $b aktivni su u rezultatu.
~ negacija ~ $a Bitovi aktivni u $a nisu aktivni u rezultatu.
^ iskljuiva dijunkcija $a ^ $b Bitovi aktivni ili u $a ili u $b ali ne u oba, aktivni
su u rezultatu.
<< pomeranje ulevo $a << $b Pomera bitove $a u levo za $b mesta.
>> pomeranje udesno $a >> $b Pomera bitove $a u desno za $b mesta.
20
Operatori za rad sa nizovima
Operator Ime Primer Rezultat
+ unija $a + $b Vraa niz koji se sastoji od svih
elemenata $a i $b.
== jednako $a == $b Vraa true ako $a i $b imaju jednake
elemente.
=== identino $a === $b Vraa true ako $a i $b imaju jednake
elemente u jednakom redosledu.
!= razliito $a != $b Vraa true ako je $a razliit od $b.
<> razliito $a <> $b Vraa true ako je $a razliit od $b.
!== nije identino $a !== $b Vraa true ako $a nije identian $b.
21
Upravljake strukture
Upravljake strukture omoguavaju upravljanje tokom izvrenja programa ili
skripta.

Upravljake strukture se mogu grupisati u:

Uslovne strukture sa grananjem konkstrukcije koje programu omoguavaju
donoenje odluka
Iskaz if
Iskaz else
Iskazi elseif
Iskaz switch

Strukture sa ponavljanjem ili petlje konstrukcije za ponavljanje odreenog
bloka koda u programu
Petlja while
Petlja for
Petlja do... while
22
Uslovne strukture sa grananjem (1)
Iskaz if

Upotrebljava se za donoenje odluke u
zavisnosti od odreenog uslova. Ako je uslov
ispunjen (vraa true), izvrava se blok koda
koji sledi iza iskaza if; u suprotnom e blok
biti preskoen. Uslovi se navode izmeu
zagrada.

Iskaz else

Definie alternativnu akciju koju treba
preduzeti ako uslov u if iskazu nije ispunjen.

Iskaz elseif ili else if

Odreuje redosled obrade vie opcija.
Zadaje se vie uslova u datom redosledu, a
program izvrava blok koda koji odgovara
samo prvom ispunjenom uslovu.
Primeri

if($totalkol == 0) {
echo Niste nista uneli!<br />;
}
else {
echo $olovkakol. olovke<br />;
echo $sveskakol. sveske<br />;
}

if($totalkol < 0)
$popust = 0;
elseif ($olovkakol >=10 && $olovkakol <=49)
$popust = 5;
elseif ($olovkakol >=50 && $olovkakol <=99)
$popust = 10;
elseif ($olovkakol >=100)
$popust = 15;
23
Uslovne strukture sa grananjem (2)
Iskaz switch

Omoguava da uslov ima vie od dve
vrednosti (u iskazu if, uslov moe imati
samo dve vrednosti true ili false).

U iskazu switch, uslov moe imati vie
razliitih vrednosti, koje moraju biti
skalarnog tipa (integer, string ili float).

Za svaku vrednost koja se eli obraditi,
potrebno je napisati iskaz case, i
eventualno podrazumevani iskaz case za
sve ostale vrednosti.

PHP izvrava iskaze od odgovarajue
oznake case do iskaza break. Bez iskaza
break, izvravaju se svi iskazi iza iskaza
case. Kada se doe do break, izvravanje
se nastavlja iza iskaza switch.
Primer: ispitivanje koja reklama je privukla kupca

HTML kod
<select name=find>
<option value = a>Ja sam obican potrosac.</option>
<option value = b>Cuo sam na televiziji.</option>
</select>

PHP kod podrazumeva se da je uitana iz niza POST
switch($find)
{
case a :
echo <p>Obican potrosac.</p>;
break;
case b :
echo <p>TV reklame.</p>;
break;
default :
echo <p>Ne zna se.</p>;
break;
}
24
Strukture sa ponavljanjem (1)
Petlja while

Izvrava blok koda dok god je zadati
uslov ispunjen. Ova petlja se obino
koristi kada ne znamo unapred koliko e
iteracija biti potrebno.

Osnovna struktura petlje je:

while (uslov) izraz;

Primer: prikaz brojeva od 1 do 5

$num = 1;
while ($num <= 5)
{
echo $num.<br />;
$num++;
}
Petlja for

Koristi se kada se zna koliko je iteracija potrebno.

Osnovna struktura petlje je:

for (izraz1; uslov; izraz2) izraz3;

izraz1 se izvrava jednom na poetku i zadaje
poetnu vrednost brojaa
uslov se ispituje pre svake iteracije; ako nije
ispunjen, petlja prestaje; uslov obino ispituje da li
je broja doao do neke granice
izraz2 se izvrava na kraju svake iteracije;
obino menja vrednost brojaa
izraz3 se izvrava jednom u svakoj iteraciji; to je
obino blok koda

Primer: prikaz brojeva od 1 do 5

for ($i=1; $i <= 5; $i++) {
echo $i.<br />;
}
25
Strukture sa ponavljanjem (2)
Petlja do...while

Izvrava blok koda bar jednom, jer se uslov
za izlazak iz petlje nalazi na njenom kraju.

Osnovna struktura petlje je:

do
izraz;
while (uslov);

Primer: prikaz brojeva od 1 do 5

$num = 1;
do
{
echo $num.<br />;
$num++;
}
while ($num <= 5);
Izlazak iz upravljake strukture

Postoje tri naina da se prekine
izvravanje bloka koda:

iskaz break izvravanje skripta e se
nastaviti od prvog reda iza petlje

iskaz continue zapoinje novu
iteraciju petlje

iskaz exit prekida izvravanje celog
PHP skripta; koristi se kada se utvrdi
neka greka
26
Nizovi
Niz (array) je promenljiva koja sadri skup vrednosti u nekom
redosledu. Jedan niz moe imati vie elemenata, a svaki element
sadri jednu vrednost (na pr. tekst, broj, drugi niz). Svakom elementu
niza pridruen je indeks pomou koga se pristupa elementu.

PHP podrava:

numeriki indeksirane nizove, koji su slini nizovima u drugim
programskim jezicima

asocijativne nizove, kod kojih indeksi mogu biti rei ili druge
informacije
27
Nizovi sa numerikim indeksima (1)
U PHP-u, numeriki indeksi poinju nulom, mada se umesto ove moe zadati i
neka druga vrednost.

Inicijalizacija niza sa numerikim indeksima se obavlja primenom jezike
konstrukcije array().

$proizvodi = array(Olovka, Sveska, Knjiga);

Niz se ne mora inicijalizovati runo:

Ako se podaci ve nalaze u drugom nizu, mogu se iskopirati u dati niz
primenom operatora =.

Ako se eli niz rastuih brojeva, moe se upotrebiti funkcija range().

$brojevi = range(1, 10);
$neparni = range(1, 10, 2);
$slova = range(a, z);
28
Nizovi sa numerikim indeksima (2)
Pristupanje sadraju niza se obavlja pomou imena niza i indeksa koji odreuje element kome se
pristupa. Indeks se zadaje u okviru uglastih zagrada.

$proizvodi[0]

Sadraj elementa niza menja se pomou operatora =.

$proizvodi[0] = Lenjir;

Dodavanje novog elementa na kraj niza se obavlja na sledei nain:

$proizvodi[3] = Bojice;

Sadraj niza se moe prikazati sledeim kodom

echo $proizvodi[0] $proizvodi[1] $proizvodi[2] $proizvodi[3]; ili u for petlji

for ($i = 0; $i < 3; $i++)
echo $proizvodi[$i] ;

Sadraj niza se moe prikazati i posebnom, foreach petljom za rad sa nizovima (svaki element niza se
redom smeta u promenljivu $tekuci ija se vrednost onda ispisuje):

foreach ($proizvodi as $tekuci)
echo $tekuci. ;
29
Asocijativni nizovi (1)
U PHP-u postoje nizovi u kojima se svakom elementu moe pridruiti indeks koji elimo.

Inicijalizacija niza u kome su imena proizvoda indeksi, a cene vrednosti:

$cene = array(Olovka=>10, Sveska=>30, Knjiga=>150);

Isti niz se moe inicijalizovati i samo jednim elementom, uz dodavanje ostalih

$cene = array(Olovka=>10);
$cene[Sveska] = 30;
$cene[Knjiga] = 150;

ili bez eksplicitnog pravljenja niza

$cene[Olovka] = 10;
$cene[Sveska] = 30;
$cene[Knjiga] = 150;

Sadraju navedenog niza se moe pristupiti u obliku:

$cene[Olovka], $cene[Sveska], $cene[Knjiga]
30
Asocijativni nizovi (2)
Rad u petlji sa asocijativnom nizovima zahteva korienje foreach petlje, ili funkcija list() i
each().

Struktura foreach petlje u ovom sluaju ukljuuje i indekse:

foreach ($cene as $indeks => $vrednost);
echo $indeks. => .$vrednost. <br />;

Sadraj niza se moe nabrajati pomou funkcije each():

while ($element = each($cene)) {
echo $element[key];
echo - ;
echo $element[value];
echo <br />;
}

Funkcija each() ita tekui element niza i pomera interni pokaziva na naredni element.
Poto se poziva unutar while petlje, ona redom poziva elemente niza i zaustavlja se kad
doe do njegovog kraja. U navedenom kodu, promenljiva $element je niz od dva elementa.
31
Asocijativni nizovi (3)
Sadraj niza se moe nabrajati i pomou funkcije list(). Dve vrednosti
koje daje funkcija each() mogu se razdvojiti na sledei nain:

list( $proizvod, $cena ) = each( $cene );

Funkcija list pretvara elemente 0 i 1 iz niza koji je vratila funkcija each u
dve nove promenljive $proizvod i $cena.

Ceo niz $cene moe se obraditi u petlji:

while ( list( $proizvod, $cena ) = each( $cene ))
echo $proizvod - $cena<br />;
32
PHP i baze podataka
Tipina transakcija baze podataka na Web-u sastoji se od sledeih koraka:

1. Korisnikov Web browser alje HTTP zahtev za odreenu Web stranicu (.php)
2. Web server prima zahtev za prikazivanje stranice, uitava datoteku u kojoj se ona
nalazi i sadraj datoteke prosleuje izvrnom okruenju na obradu.
3. PHP-ovo izvrno okruenje poinje sintaksnu analizu skripta. Ako skript sadri naredbe
za uspostavljanje veze sa bazom podataka, PHP otvara vezu sa serverom baze i alje
mu odgovarajui upit.
4. Server baze prima upit, obrauje ga i rezultat vraa izvrnom okruenju.
5. PHP-ovo izvrno okruenje zavrava odradu skripta, to podrazumeva i formatiranje
rezultata upita u HTML kod koji alje Web serveru.
6. Dobijeni HTML kod, Web server prosleuje itau koji ga prikazuje.
Osnovna arhitektura sistema za pristup bazama podataka iz Web aplikacija sastoji se od
Web browser-a, Web servera, maine za izvravanje skriptova i servera baze podataka.
Web browser Web server
Izvrno okruenje
za PHP
Server baze
podataka
1
2 3
4 5 6
33
Pretraivanje baze podataka (1)
Primer: pretraivanje baze podataka koja sadri
katalog knjiga

Najpre treba omoguiti korisniku da unese
podatke po kojima e se pretraivati, tj. treba
generisati HTML stranicu sa formom za unos
podataka. Kada korisnik unese kriterijum pretrage
(u ovom primeru to moe biti autor, ime knjige ili
isbn kod knjige) i kljunu re, pritiskom na dugme
Search poziva se skript results.php koji se nalazi
na Web serveru.
Book-O-Rama Catalog Search

Choose Search Type:

Enter Search Term:


Search
Author
S
t
r
a
n
i
c
a

z
a

p
r
e
t
r
a

i
v
a
n
j
e

b
a
z
e

p
o
d
a
t
a
k
a
:

s
e
a
r
c
h
.
h
t
m
l

Izgled stranice za pretraivanje
<html>
<head>
<title>Book-O-Rama Catalog Search</title>
</head>
<body>
<h1>Book-O-Rama Catalog Search</h1>

<form action=results.php method=post>
Choose Search Type:<br />
<select name=searchtype>
<option value=author>Author</option>
<option value=title>Title</option>
<option value=isbn>ISBN</option>
</select>
<br />
Enter Search Term:<br />
<input name=searchterm type=text>
<br />
<input type=submit value=Search>
</form>
</body>
</html>
$query = select * from books where
.$searchtype. like%.$searchterm.%;
$result = $db->query($query);
$num_results = $result->num_rows;
echo <p>Number of books found: $num_results.</p>;
for ($i=0; $i < $num_results; $i++) {
$row = $result->fetch_assoc();
echo <p><strong>.($i+1).. Title: ;
echo htmlspecialchars(stripslashes($row[title]));
echo </strong><br />Author: ;
echo stripslashes($row[author]);
echo <br /> ISBN: ;
echo stripslashes($row[isbn]);
echo <br /> Price: ;
echo stripslashes($row[price]);
echo </p>;
}
$result->free();
$db->close ();
?>
</body>
</html>
<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// napravi promenljive s kratkim imenima
$searchtype=$_POST[serachtype];
$searchterm=$_POST[serachterm];
$searchterm=trim($serachterm);
if (!$searchtype || !$searchterm) {
echo You have not entered search details..
Please go back and try again.;
exit;
}
if (!get_magic_quotes_gpc()) {
$searchtype=addslashes($searchtype);
$searchterm=addslashes($searchterm);
}
@ $db = new mysqli(localhost, bookorama,
bookorama123, books);
if (mysqli_connect_errno()) {
echo Error: Could not connect to database..
Please try again later.;
exit; }
34
Pretraivanje baze podataka (2)
P
H
P

s
k
r
i
p
t
:

r
e
s
u
l
t
s
.
p
h
p

1
2
35
Sadraj skripta
U svakom skriptu koji pristupa bazi podataka sa Web-a treba da postoji
odgovarajui kod za sledee osnovne korake:

1. Provera podataka koje je korisnik uneo.

2. Filtriranje ulaznih podataka.

3. Uspostavljanje veze sa odgovarajuom bazom podataka.

4. Zadavanje upita toj bazi podataka.

5. Uitavanje rezultata.

6. Prikaz rezultata korisniku.
36
Provera ulaznih podataka
Pre nego to se uspostavi veza sa bazom podataka, potrebno je proveriti
ispravnost podataka koje je korisnik uneo.

Provera podataka obuhvata sledee korake:

a) Najpre treba ukloniti beline koje je korisnik moda uneo. To se radi funkcijom
trim() koja se primenjuje na ulazne promenljive.

$searchterm=trim($serachterm);

b) Zatim treba proveriti da li je korisnik uneo pojam koji trai i kriterijum pretrage.
Ovde se vidi vanost prethodnog koraka, jer pojam koji se sastoji samo od
beline funkcija trim() brie.

if (!$searchtype || !$searchterm) {
echo You have not entered search details..
Please go back and try again.;
exit;
}
37
Filtriranje ulaznih podataka
Da bi se ispravno obradili podaci koje korisnik alje, neophodno je filtrirati upravljake
znakove (, , \ i znak NULL) iz tih podataka. PHP podrava vie funkcija za formatiranje
stringova radi unoenja u bazu podataka.

Pre nego to se proslede bazi podataka, svi podaci koje korisnik alje moraju se obraditi
pomou sledeih funkcija:

a) addslashes(). Ova funkcija dodaje znak \ ispred svakog upravljakog znaka. Na primer,
nakon primene ove funkcije postaje \ , a \ postaje \\. Argument funkcije je string, a
rezultat je formatiran string.

b) get_magic_quotes_gpc(). PHP moe biti podeen tako da automatski dodaje i uklanja \.
Provera da li je sistem tako podeen obavlja se pomou navedene funkcije (tzv.
mehanizam maginih navodnika). Sufiks gpc je skraenica za GET, POST i COOKIES,
to znai da se automatski konvertuju promenljive iz tih izvora.

if (!get_magic_quotes_gpc()) {
$searchtype=addslashes($searchtype);
$searchterm=addslashes($searchterm);
}
38
Filtriranje rezultata
Pre prikazivanja korisniku, podatke dobijene iz baze podataka takoe treba
filtrirati, kako bi se iz njih izbacio znak \ unet prilikom filtriranja ulaznih podataka,
i izbegao pogrean rad baze zbog specijanih znakova u HTML-u.

Pre nego to se prikau korisniku, podatke treba obraditi pomou sledeih
funkcija:

a) stripslashes(). Ova funkcija izbacuje znak \ iz zadatog stringa. Njome se
podaci moraju obraditi ukoliko je mehanizam maginih navodnika bio ukljuen.

b) htmlspecialchars(). Ova funkcija se koristi za pretvaranje znakova koji u
HTML-u imaju specijalno znaenje (&, , < i >) u HTML entitete. Na primer, znak
< pretvara se u &lt;.
39
Uspostavljanje veze sa bazom (1)
PHP5 ima novu biblioteku funkcija za uspostavljanje veza sa bazama podataka, koja se zove
mysqli (i od improved). Ova biblioteka podrava upotrebu i objektno-orijentisane i proceduralne
sintakse.

Objektno-orijentisani oblik sintakse je:

@ $db = new mysqli(localhost, bookorama, bookorama123, books);

Na ovaj nain je napravljena instanca klase mysqli i uspostavljena veza sa serverom localhost
pod korisnikim nalogom bookorama i lozinkom bookorama123, i odreena je baza podataka
books sa kojom e se raditi. Ovaj oblik omoguava da se sa bazom radi tako to se pozivaju
metodi objekta $db.

Proceduralni oblik sintakse je:

@ $db = mysqli_connect(localhost, bookorama, bookorama123, books);

Ova funkcija vraa rezultat tipa resurs, koji predstavlja vezu sa bazom podataka. Ovaj resurs
mora se proslediti svim ostalim funkcijama iz navedene biblioteke koje se pozivaju u kodu.

Napomena: Simbol @ predstavlja operator zanemarivanja greke i moe se upotrebiti ispred svakog izraza.
Ako se ovaj operator upotrebi, upozorenje o grekama se zanemaruje. Tada bi obavezno trebalo napisati kod
za obradu greaka.
40
Uspostavljanje veze sa bazom (2)
Rezultat pokuaja uspostavljanje veze sa bazom podataka se uvek mora proveriti
u kodu, jer ako on nije odgovarajui, preostali deo skripta nee raditi.

Blok koda za proveru uspenosti konekcije sa bazom je:

if (mysqli_connect_errno()) {
echo Error: Could not connect to database..
Please try again later.;
exit;
}

Funkcija mysqli_connect_errno vraa broj greke u sluaju neuspenog
povezivanja, odnosno 0 u sluaju uspenog.

Broj istovremenih veza koje se mogu uspostaviti sa MySQL serverom je ogranien
parametrom max_connections koji se podeava u datoteci my.conf.
41
Zadavanje upita bazi podataka
Pre izvravanja upita, preporuuje se njegovo definisanje u vidu stringa:

$query = select * from books where $searchtype like %$searchterm%;

U ovom upitu traimo pojam koji je korisnik zadao ($searchterm) u polju koje je
izabrao ($searchtype).

U objektno-orijentisanoj verziji, izvravanje upita se pokree pomou funkcije:

$result = $db->query($query);

Funkcija vraa objekat koji omoguava itanje rezultata upita.

U proceduralnoj verziji, upit se izvrava komandom:

$result = mysqli_query($db, $query);

Funkcija vraa identifikator tipa resurs.

U oba sluaja, ako se funkcija nije uspeno izvrila, rezultat je logika vrednost false.
42
Uitavanje rezultata upita (1)
Postoji vie funkcija koje omoguavaju da se pomou objekta ili identifikatora
rezultata uitaju rezultati upita. Objekat, odnosno identifikator rezultata je osnova za
pristupanje redovima koje je upit vratio.

Kada se koristi objektno-orijentisani oblik, broj redova koje je upit vratio smeta se u
svojstvo num_rows objekta rezultata ($result), kome se pristupa na sledei nain:

$num_results = $result->num_rows;

Kada se koristi proceduralni oblik, funkcija mysqli_num_rows(), iji je parametar
identifikator rezultata, vraa broj redova:

$num_results = mysqli_num_rows($result);

Broj vraenih redova je koristan podatak ako treba obraditi ili prikazati rezultate. Ako
je on poznat, moe se upotrebiti petlja:

for ($i = 0; $i < $num_results; $i++)
{ // obrada rezultata
}
43
Uitavanje rezultata upita (2)
Da bi se proitao jedan red iz skupa rezultata, u okviru for petlje se pozivaju
funkcije $result->fetch_assoc() (kod objektno-orijentisanog pristupa) ili
mysqli_fetch_assoc() (kod proceduralnog pristupa):

$row = $result->fetch_assoc(); ili $row = mysqli_fetch_assoc($result);

Navedene funkcije itaju svaki red iz skupa rezultata i vraaju podatke u obliku
asocijativnog niza, u kome je svaki klju (indeks) ime jednog atributa, a svaka
vrednost u nizu je odgovarajua vrednost uitana iz baze.

Niz $row omoguava da se svako njegovo polje prikae u odgovarajuem obliku:

echo </strong><br />Author: ;
echo stripslashes($row[author]);
echo <br /> ISBN: ;
echo stripslashes($row[isbn]);
echo <br /> Price: ;
echo stripslashes($row[price]);
44
Uitavanje rezultata upita (3)
Red podataka iz skupa rezultata se moe vratiti i u vidu niza sa numerikim
indeksima. U tu svrhu se koriste sledee funkcije:

$row = $result->fetch_row();
ili
$row = mysqli_fetch_row($result);

U ovom sluaju, vrednosti atributa e se nalaziti u elementima niza $row[0], $row[1],
itd.

Red podataka se moe uitati i u obliku objekta na sledei nain:

$row = $result->fetch_object();
ili
$row = mysqli_fetch_object($result);

Svakom atributu se onda pristupa primenom sintakse: $row->title, $row->author, itd.
45
Prekidanje veze sa bazom
Skup rezultata se oslobaa pozivanjem metoda:

$result->free();

ili

mysqli_free_result($result);

Zatim se za zatvaranje baze moe koristiti metod:

$db->close();

ili funkcija

mysqli_close($db);

Pozivanje funkcija za zatvaranje baze nije obavezno, jer e se veza ionako
prekinuti po izvrenju skripta.
<tr>
<td>Title</td>
<td><input type=text name=title></td>
</tr>
<tr>
<td>Price</td>
<td><input type=text name=price></td>
</tr>

<tr>
<td colspan=2><input type=submit
value=Register></td>
</tr>
</form>
</body>
</html>
<html>
<head>
<title>Book-O-Rama New Book Entry</title>
</head>
<body>
<h1>Book-O-Rama New Book Entry</h1>

<form action=insert_book.php method=post>
<table border=0>
<tr>
<td>ISBN</td>
<td><input type=text name=isbn></td>
</tr>
<tr>
<td>Author</td>
<td><input type=text name=author></td>
</tr>
46
Unos podataka u bazu (1)
Unoenje podataka u bazu je vrlo slino itanju podataka iz nje. Osnovni koraci su isti, tj.
uspostavlja se veza sa bazom, alje upit i ispituju rezultati. Razlika je u tome to se sada
umesto upita tipa SELECT, alje upit tipa INSERT.
Stranica za unoenje novih knjiga u bazu: newbook.html
1 2
47
Unos podataka u bazu (2)
Podaci iz ove forme prosleuju se skriptu
insert_book.php koji ita dobijene podatke,
obavlja provere i pokuava da upie
podatke u bazu.
Book-O-Rama New Book Entry

ISBN
Author
Title
Price $

Register
Izgled stranice za unos
<html>
<head>
<title>Book-O-Rama Book Entry Results</title>
</head>
<body>
<h1>Book-O-Rama Book Entry Results</h1>
<?php
$isbn=$_POST[isbn];
$author=$_POST[author];
$title=$_POST[title];
$price=$_POST[price];
if (!$isbn || !$author || !$title || !$price) {
echo You have not entered all the required details..
Please go back and try again.;
exit;
}
if (!get_magic_quotes_gpc()) {
$isbn=addslashes($isbn);
$author=addslashes($author);
$title=addslashes($title);
$price=doubleval($price);
}
@ $db = new mysqli(localhost, bookorama,
bookorama123, books);
if (mysqli_connect_errno()) {
echo Error: Could not connect to database..
Please try again later.;
exit;
}
$query = insert into books values
( .$isbn. , .$author. , .$title. , .$price. );
$result = $db->query($query);
if ($result)
echo $db->affected_rows. book inserted into database.;
$db->close ();
?>
</body>
</html>
48
Unos podataka u bazu (3)
PHP skript: insert_book.php
1
2
49
Kod skripta insert_book.php je slian kodu skripta za pretraivanje baze podataka. On
implementira sledee korake:

1. Najpre se proverava da li je korisnik popunio sva polja u formi.

if (!$isbn || !$author || !$title || !$price) {
echo You have not entered all the required details..
Please go back and try again.;
exit;
}

2. Zatim se uneti podaci formatiraju u oblik pogodan za unos u bazu podataka.

if (!get_magic_quotes_gpc()) {
$isbn=addslashes($isbn);
$author=addslashes($author);
$title=addslashes($title);
$price=doubleval($price);
}

S obzirom da se u bazi cena uva u formatu pokretnog zareza, kose crte nisu potrebne tom podatku.
Filtriranje nepotrebnih znakova u numerikom polju postie se primenom funkcije dubleval().
Unos podataka u bazu (4)
50
3. Uspostavlja se konekcija sa bazom podataka.

4. Definie se upit koji se alje bazi podataka.

$query = insert into books values ( .$isbn. , .$author. , .$title. , .$price. );
$result = $db->query($query);

Znaajna razlika izmeu upotrebe upita INSERT u odnosu na SELECT je u nainu korienja
funkcije mysqli_affected_rows() (u proceduralnoj verziji) ili u objektno-orijentisanoj verziji

echo $db->affected_rows. book inserted into database.;

U prethodnom skriptu smo koristili funkciju mysqli_num_rows() da bismo saznali koliko redova
je vratio upit SELECT. Ako upit menja stanje u bazi (INSERT, DELETE i UPDATE) treba koristiti
funkciju mysqli_affected_rows() .
Unos podataka u bazu (5)
Book-O-Rama New Book Entry

1 book inserted into database.
Izgled stranice nakon izvrenja
skripta insert_book.php

Вам также может понравиться

  • Osnove PHP-a PDF
    Osnove PHP-a PDF
    Документ43 страницы
    Osnove PHP-a PDF
    Зоран Николић
    Оценок пока нет
  • PHP Osnove Programskog Jezika
    PHP Osnove Programskog Jezika
    Документ9 страниц
    PHP Osnove Programskog Jezika
    Marko Milosevic
    Оценок пока нет
  • Osnove Phpa1
    Osnove Phpa1
    Документ15 страниц
    Osnove Phpa1
    aritexdoo
    Оценок пока нет
  • PHP Tutorijal
    PHP Tutorijal
    Документ233 страницы
    PHP Tutorijal
    shrafc1ger
    Оценок пока нет
  • PHP Osnove
    PHP Osnove
    Документ13 страниц
    PHP Osnove
    Mehdija Adrović
    Оценок пока нет
  • Internet Alati I Servisi - 1. Vežba
    Internet Alati I Servisi - 1. Vežba
    Документ9 страниц
    Internet Alati I Servisi - 1. Vežba
    Zoran Pavlovic
    Оценок пока нет
  • PHP
    PHP
    Документ233 страницы
    PHP
    bobantijanic
    Оценок пока нет
  • CPPVM17 01-04
    CPPVM17 01-04
    Документ59 страниц
    CPPVM17 01-04
    Necunovoime
    Оценок пока нет
  • PHP Praktikum Za LV
    PHP Praktikum Za LV
    Документ42 страницы
    PHP Praktikum Za LV
    kondic77
    Оценок пока нет
  • PHP Tečaj - EZnalac
    PHP Tečaj - EZnalac
    Документ50 страниц
    PHP Tečaj - EZnalac
    Anonymous h51LIDb
    Оценок пока нет
  • 1.uvod U PHP
    1.uvod U PHP
    Документ10 страниц
    1.uvod U PHP
    Berina
    Оценок пока нет
  • PHP Skripta
    PHP Skripta
    Документ59 страниц
    PHP Skripta
    Nikola Radisic
    100% (1)
  • Web Programiranje U Windows-U
    Web Programiranje U Windows-U
    Документ22 страницы
    Web Programiranje U Windows-U
    Boris Hekler Puzovic
    Оценок пока нет
  • Objektno Orijentisano Programiranje Java I PHP
    Objektno Orijentisano Programiranje Java I PHP
    Документ10 страниц
    Objektno Orijentisano Programiranje Java I PHP
    hamo
    Оценок пока нет
  • WP-Vezbe 1
    WP-Vezbe 1
    Документ15 страниц
    WP-Vezbe 1
    Dragan Volkov
    Оценок пока нет
  • REST Skripta Prvi Cas 2013
    REST Skripta Prvi Cas 2013
    Документ30 страниц
    REST Skripta Prvi Cas 2013
    Marko Petrović
    100% (1)
  • HTTP Kolacici
    HTTP Kolacici
    Документ41 страница
    HTTP Kolacici
    Necunovoime
    Оценок пока нет
  • Docsity Zadaci Vezbe Web Programiranje Informatika 1
    Docsity Zadaci Vezbe Web Programiranje Informatika 1
    Документ16 страниц
    Docsity Zadaci Vezbe Web Programiranje Informatika 1
    aa70525
    Оценок пока нет
  • COPHPP9 09-Adasdsd
    COPHPP9 09-Adasdsd
    Документ6 страниц
    COPHPP9 09-Adasdsd
    aritexdoo
    Оценок пока нет
  • PVA P1 2021jjh
    PVA P1 2021jjh
    Документ27 страниц
    PVA P1 2021jjh
    Nikola Lisanin
    Оценок пока нет
  • RWA - Predavanja
    RWA - Predavanja
    Документ59 страниц
    RWA - Predavanja
    Midhat Turkusic
    Оценок пока нет
  • Trajkov SOAP I REST Mrezni Servisi
    Trajkov SOAP I REST Mrezni Servisi
    Документ11 страниц
    Trajkov SOAP I REST Mrezni Servisi
    Boban
    Оценок пока нет
  • Kompjuterski Recnik
    Kompjuterski Recnik
    Документ4 страницы
    Kompjuterski Recnik
    Wolox
    Оценок пока нет
  • HTML CSS I PHP Osnove - Šesti Deo PDF
    HTML CSS I PHP Osnove - Šesti Deo PDF
    Документ36 страниц
    HTML CSS I PHP Osnove - Šesti Deo PDF
    Anonymous 8I85RT9BEK
    Оценок пока нет
  • V Oop
    V Oop
    Документ80 страниц
    V Oop
    miroljub
    Оценок пока нет
  • XHTML Css Tutorial
    XHTML Css Tutorial
    Документ179 страниц
    XHTML Css Tutorial
    Sasa Antic
    Оценок пока нет
  • XHTML CSS Tutorial
    XHTML CSS Tutorial
    Документ179 страниц
    XHTML CSS Tutorial
    Ivana Gilić
    100% (1)
  • Uvod U Veb Programiranje
    Uvod U Veb Programiranje
    Документ12 страниц
    Uvod U Veb Programiranje
    degoranstat
    Оценок пока нет
  • Aplikativni Sloj
    Aplikativni Sloj
    Документ6 страниц
    Aplikativni Sloj
    Uros Jevtic
    Оценок пока нет
  • OE4PPT Lab1 Uputstvo
    OE4PPT Lab1 Uputstvo
    Документ32 страницы
    OE4PPT Lab1 Uputstvo
    Obren Nosovic
    Оценок пока нет
  • Javascript Za 24 Casa - Razumevanje Javascript A
    Javascript Za 24 Casa - Razumevanje Javascript A
    Документ16 страниц
    Javascript Za 24 Casa - Razumevanje Javascript A
    ubica2002
    100% (2)
  • Programiranje Web Aplikacija 1-2
    Programiranje Web Aplikacija 1-2
    Документ110 страниц
    Programiranje Web Aplikacija 1-2
    Илија Узелац
    100% (2)
  • Uvod U ASP - NET + Progress 4GL - Prezentacija
    Uvod U ASP - NET + Progress 4GL - Prezentacija
    Документ67 страниц
    Uvod U ASP - NET + Progress 4GL - Prezentacija
    SlavimirVesić
    Оценок пока нет
  • Java Web Servisi
    Java Web Servisi
    Документ23 страницы
    Java Web Servisi
    Danka Dmitric
    Оценок пока нет
  • It350 L15
    It350 L15
    Документ40 страниц
    It350 L15
    Marina Kaurin
    Оценок пока нет
  • Tutorial
    Tutorial
    Документ34 страницы
    Tutorial
    zvuckovic
    Оценок пока нет
  • Internet Programiranje
    Internet Programiranje
    Документ4 страницы
    Internet Programiranje
    muzafer89
    Оценок пока нет
  • Usmeni
    Usmeni
    Документ61 страница
    Usmeni
    Obrad
    Оценок пока нет
  • 0103
    0103
    Документ24 страницы
    0103
    Velimir Radlovački
    Оценок пока нет
  • Apache Web Server
    Apache Web Server
    Документ9 страниц
    Apache Web Server
    Bwana Srbin
    Оценок пока нет
  • Projektni Rad Web Dizajn
    Projektni Rad Web Dizajn
    Документ29 страниц
    Projektni Rad Web Dizajn
    Nenad Branka Gavrilovic
    100% (1)
  • WP - Vezbe 3 PDF
    WP - Vezbe 3 PDF
    Документ6 страниц
    WP - Vezbe 3 PDF
    Dragan Volkov
    Оценок пока нет
  • 01 HTML5 I CSS3 PDF
    01 HTML5 I CSS3 PDF
    Документ16 страниц
    01 HTML5 I CSS3 PDF
    Nikola Zaharijev
    Оценок пока нет
  • C# 5.0 Mali Referentni Priručnik
    C# 5.0 Mali Referentni Priručnik
    Документ208 страниц
    C# 5.0 Mali Referentni Priručnik
    Miron T Petrik Popovic
    Оценок пока нет
  • 11 Javascript
    11 Javascript
    Документ77 страниц
    11 Javascript
    Stefan Vojinovic
    Оценок пока нет
  • Veb Dizajn Priručnik
    Veb Dizajn Priručnik
    Документ141 страница
    Veb Dizajn Priručnik
    Emili
    Оценок пока нет
  • Javascript Prezentacija PDF
    Javascript Prezentacija PDF
    Документ40 страниц
    Javascript Prezentacija PDF
    Borivoje Stojiljkovic
    Оценок пока нет
  • Priprema Za Cas
    Priprema Za Cas
    Документ4 страницы
    Priprema Za Cas
    terabajt
    Оценок пока нет
  • Predstavljanje Razliitih Tipova Podataka
    Predstavljanje Razliitih Tipova Podataka
    Документ11 страниц
    Predstavljanje Razliitih Tipova Podataka
    terabajt
    Оценок пока нет
  • KONSTRUKTORTIO - Specifikacija Materijala
    KONSTRUKTORTIO - Specifikacija Materijala
    Документ40 страниц
    KONSTRUKTORTIO - Specifikacija Materijala
    terabajt
    Оценок пока нет
  • Digitalni Zapis Podataka
    Digitalni Zapis Podataka
    Документ2 страницы
    Digitalni Zapis Podataka
    terabajt
    Оценок пока нет
  • Digitalni Formati Zapisa Podataka
    Digitalni Formati Zapisa Podataka
    Документ17 страниц
    Digitalni Formati Zapisa Podataka
    terabajt
    Оценок пока нет
  • Informatika Tehnika I Tehnologija U Obrazovanju Master Akademske Studije MAS
    Informatika Tehnika I Tehnologija U Obrazovanju Master Akademske Studije MAS
    Документ185 страниц
    Informatika Tehnika I Tehnologija U Obrazovanju Master Akademske Studije MAS
    terabajt
    Оценок пока нет
  • Dodato
    Dodato
    Документ32 страницы
    Dodato
    terabajt
    Оценок пока нет
  • KONSTRUKTOR Uputstvo Za Exel PRVO PROČITAJ OVO
    KONSTRUKTOR Uputstvo Za Exel PRVO PROČITAJ OVO
    Документ2 страницы
    KONSTRUKTOR Uputstvo Za Exel PRVO PROČITAJ OVO
    terabajt
    Оценок пока нет
  • Fizika Pred Test
    Fizika Pred Test
    Документ1 страница
    Fizika Pred Test
    terabajt
    Оценок пока нет
  • Vozovi Kolonista
    Vozovi Kolonista
    Документ14 страниц
    Vozovi Kolonista
    terabajt
    Оценок пока нет
  • Konstruktor Ok9
    Konstruktor Ok9
    Документ16 страниц
    Konstruktor Ok9
    Zoran Pavlovic
    Оценок пока нет
  • Pajton Sintaksni Podsetnik
    Pajton Sintaksni Podsetnik
    Документ9 страниц
    Pajton Sintaksni Podsetnik
    astraldragon
    100% (1)
  • Elektricna Struja
    Elektricna Struja
    Документ3 страницы
    Elektricna Struja
    terabajt
    Оценок пока нет
  • Hard Disk
    Hard Disk
    Документ2 страницы
    Hard Disk
    terabajt
    Оценок пока нет
  • 004 Uvodna Rec Autora
    004 Uvodna Rec Autora
    Документ6 страниц
    004 Uvodna Rec Autora
    terabajt
    Оценок пока нет
  • Vozovi Kolonista
    Vozovi Kolonista
    Документ14 страниц
    Vozovi Kolonista
    terabajt
    Оценок пока нет
  • 012 Svi Nasi Predsednici
    012 Svi Nasi Predsednici
    Документ3 страницы
    012 Svi Nasi Predsednici
    terabajt
    Оценок пока нет
  • 018 Saradnja Sa Drugim Sudijskim Organizacijama
    018 Saradnja Sa Drugim Sudijskim Organizacijama
    Документ6 страниц
    018 Saradnja Sa Drugim Sudijskim Organizacijama
    terabajt
    Оценок пока нет
  • Pesme
    Pesme
    Документ4 страницы
    Pesme
    terabajt
    Оценок пока нет
  • Serbian
    Serbian
    Документ1 страница
    Serbian
    terabajt
    Оценок пока нет
  • Sokovi Sadrzaj
    Sokovi Sadrzaj
    Документ5 страниц
    Sokovi Sadrzaj
    terabajt
    Оценок пока нет
  • Kratak Istorijat
    Kratak Istorijat
    Документ10 страниц
    Kratak Istorijat
    terabajt
    Оценок пока нет
  • 008 Pravilo 02 - Lopta
    008 Pravilo 02 - Lopta
    Документ12 страниц
    008 Pravilo 02 - Lopta
    terabajt
    Оценок пока нет
  • 005 Skola Za Fudbalske Sudije I Skolovanje Fudbalskih Sudija
    005 Skola Za Fudbalske Sudije I Skolovanje Fudbalskih Sudija
    Документ20 страниц
    005 Skola Za Fudbalske Sudije I Skolovanje Fudbalskih Sudija
    terabajt
    Оценок пока нет
  • Slog
    Slog
    Документ6 страниц
    Slog
    terabajt
    Оценок пока нет
  • Razlika Izmedju Pravoslavne I Katolicke Crkve
    Razlika Izmedju Pravoslavne I Katolicke Crkve
    Документ8 страниц
    Razlika Izmedju Pravoslavne I Katolicke Crkve
    terabajt
    Оценок пока нет
  • Telo
    Telo
    Документ1 страница
    Telo
    terabajt
    Оценок пока нет
  • Lupa
    Lupa
    Документ4 страницы
    Lupa
    terabajt
    Оценок пока нет
  • Padezi
    Padezi
    Документ16 страниц
    Padezi
    terabajt
    Оценок пока нет
  • Padezi
    Padezi
    Документ16 страниц
    Padezi
    terabajt
    Оценок пока нет