You are on page 1of 84

1/84

Razvoj aplikacija za WEB. Uvod u PHP i MySQL.

PHP je skriptni jezik koji se izvršava na serveru, a glavna namena mu je dinamičko


stvaranje web stranica.

MySQL je sistem za upravljanje relacionim bazama podataka, i zajedno s programskim


jezikom PHP predstavlja jedno od najpopularnijih rešenja za izradu dinamičkih web
stranica i web aplikacija zasnovanih na bazama podataka.
2/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.

Većina jezika koji se koriste u web programiranju (PHP, JavaScript, ASP i drugi) su
podskup skriptnih jezika za koje je karakteristično da se program ne čuva u izvršnoj
(executable) datoteci (koja je prevedena samo jednom), već se prevođenje naredbi
obavlja pri svakom izvršavanju programa.

Datoteke i delovi koda napisani u takvim jezicima nazivaju se skriptama.


3/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.
U komunikaciji putem interneta učestvuju dve strane: klijent i server.

http zahtev http zahtev


INTERNET

http odgovor http odgovor

klijent server

Klijent (korisnikov web pretraživač) šalje zahtev, recimo adresu neke stranice, a server
isporučuje odgovor, koji sadrži HTML kod tražene stranice (i zajedno sa njim binarne
datoteke: slike, video, ...), što će klijent interpretirati i prikazati korisniku kao web
stranicu.
4/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.

Komunikacija između servera i klijenta odvija se putem HTTP protokola, koji se sastoji
od HTTP zahteva i odgovora.

Komunikacija preko interneta je dvosmerna – i klijent može unutar HTTP zahteva


poslati neke podatke serveru.

http zahtev http zahtev


INTERNET

http odgovor http odgovor

klijent server
5/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.
Statičke HTML stranice

Sa statičkim HTML stranicama, web stranica će uvek biti ista, a mogućnosti joj se
svode na prikazivanje teksta i slika, pri čemu je moguće povezivanje, preko linkova, sa
drugim stranicama.

HTML stranice s klijentskim skriptama

Kad stigne zahtev, zajedno s HTML kodom se šalju klijentu, a na klijentu se izvršavaju
kad budu pozvane (nakon što se stranica učita u pregledač, kad korisnik klikne na
dugme i slično).
Klijentske skripte omogućavaju veliko proširenje mogućnosti web stranica, od kojih je
najkorisnije prikazivanje prozora sa porukama, trenutno prikazivanje i skrivanje
određenih delova na stranici i drugi dinamični vizualni efekti (promena slike pri
prelasku mišem i slično).
6/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.

HTML stranice kreirane pomoću serverskih skripti

Serverske skripte, kao i klijentske, nalaze se na serveru i mogu biti ubačene u HTML
kod, ili se mogu nalaziti u zasebnim datotekama.

Kad stigne zahtev od klijenta, skripta se izvršava na serveru, a kao rezultat izvršavanja
dobija se HTML kod koji se šalje klijentu.

Najveća prednost serverskih skripti je njihova mogućnost povezivanja s bazama


podataka, što je omogućilo pojavu web stranica i web aplikacija s dinamičkim
sadržajem koji se čita iz baze podataka i koji korisnici mogu menjati preko web
aplikacije.
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje. 7/84

HTML stranice kreirane pomoću serverskih skripti


Klijentske skripte Serverske skripte
izvršavaju se na klijentu izvršavaju se na serveru
nekompatibilnost između pretraživača (neke
aplikacija će uvek raditi na isti način,
stvari neće, u potpunosti , raditi u svim
nezavisno od pretraživača
pretraživačima)
nemogućnost (direktnog) povezivanja s bazama
povezivanje s bazama podataka
podataka
mogućnost reagovanja na veliki broj događaja
aplikacija može reagovati samo na
kao što je, na primer, povećanje prozora, desni
klik na link ili na dugme
klik miša i slično
aplikacija reaguje trenutno, stranica se ne duže vreme čekanja na odgovor, potrebno
osvežava osvežavanje cele stranice
server se rasterećuje korišćenjem resursa
uvek se koriste resursi servera
klijenta
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje. 8/84

HTML stranice kreirane pomoću serverskih skripti

Klijentske i serverske skripte nisu alternativa jedno drugom, odnosno, većinu stvari
koje se mogu postići jednim načinom programiranja ne može se postići drugim pa ih je
najbolje koristiti u kombinaciji.

Glavni klijentski skriptni jezik je JavaScript (čija je sintaksa slična programskim jezicima
C i Java), koji je podržan u najvećem broju web pretraživača.

Uz njega postoje još JScript (Microsoftova verzija JavaScripta) i VBScript (skriptni jezik
sa sintaksom sličnom programskom jeziku Visual Basic, takođe Microsoftov).
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje. 9/84

HTML stranice kreirane pomoću serverskih skripti

AJAX (Asynchronous JavaScript and XML) je tehnologija koja kombinuje pisanje skripti
za klijenta i servera.
Na određenu korisnikovu akciju klijentska skripta šalje pozadinski zahtev skripti na
serveru koja obavlja preuzimanje podataka iz baze podataka i šalje ih korisnikovom
pretraživaču, bez osvežavanja cele stranice.

Upotrebom tehnologije AJAX web aplikacije postaju brže i imaju bolje korisničko
okruženje od aplikacija koje se zasnivaju samo na serverskim tehnologijama.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 10/84

Skriptni jezik PHP nastao je 1994. - Rasmus Lerdorf.

Originalno je skraćenica PHP značila Personal Home Page Tools.

Danas znači: Hypertext Preprocessor.

PHP: hipertekstualni pretprocesor, što opisuje glavnu funkciju jezika PHP - da na


osnovu PHP naredbi generiše HTML, jezik kojim se opisuje hipertekst.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 11/84

Najčešći način instalacije PHP-a je u sklopu tzv. LAMP platforme (Linux, Apache,
MySQL i PHP). Web server Apache prima HTTP zahtev, i ako željena stranica ima
nastavak .php (ili neki od drugih nastavaka koji su podešeni na serveru), poziva
izvršno okruženje PHP-a, koje prevodi i izvršava PHP naredbe.

Ukoliko skripta treba učita neke podatke iz baze podataka, bazi se postavljaju upiti iz
PHP-a.

Dobijeni podaci se prosleđuju PHP-u, i PHP ih smešta unutar HTML koda.

Taj HTML kod se unutar HTTP odgovora šalje, nazad, klijentu i podaci se prikazuju u
korisnikovom web pretraživaču.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 12/84

http zahtev
INTERNET
http odgovor web server Izvršno MySQL baza
okruženje podataka
PHP – a

klijent server
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 13/84

Ostale serverske tehnologije

ASP (Active – Server Pages) – Microsoftova serverska tehnologija. Zastarela


tehnologija.
Framework (razvojna platforma) za PHP – Zend Framework, Symfony, čiji je cilj
da se olakša programiranje u PHP – u, odvajanjem prezentacije (HTML) od logike (PHP
kod), kao i uvođenjem objekata koji predstavljaju HTML elemente i proširuju
funkcionalnost web stranica, zatim objekata za rad s bazama podataka i drugih.
Microsoftov ASP.NET - za koji je moguće razvijati aplikacije u više .NET jezika, od
kojih su najrašireniji C# i Visual Basic.NET. Veliki broj gotovih kontrola i objekata,
njegove datoteke se ne moraju prevoditi svaki put kod izvršavanja, već samo prvi put.
JSP (JavaServer Pages) – postoji veliki broj frameworka (Spring, Struts,
JavaServer Faces...). Kao i ASP.NET, ne mora se prevoditi svaki put kod izvršavanja, i
vrlo je raširen u svetu poslovnih aplikacija.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 14/84

Ostale serverske tehnologije

Perl je skriptni jezik UNIX sistema, i to jedan od prvih s kojima je započeo razvoj web
aplikacija – ima velike mogućnosti, a njegov razvoj i dalje traje pa se i danas koristi za
razvoj web aplikacija.

Python je skriptni jezik koji se može upotrebljavati i za web.

Ruby je jezik sličan jeziku Python i vrlo je popularan u kombinaciji s Rails


frameworkom koji omogućava brz i jednostavan razvoj aplikacija.

ColdFusion serverski skriptni jezik i tehnologija u vlasništvu Macromedie.


Razvoj aplikacija za WEB. MySQL i druge baze podataka. 15/84

MySQL (1995) je najrasprostranjeniji open source sistem za upravljanje bazama


podataka na webu.

PostgreSQL sistem – više se koristi u poslovnim sistemima, a manje na webu.

Microsoft SQL Server


u zahtevnim poslovnim sistemima, dok se Microsoft SQL
Server koristi i na webu – ređe.
Oracle Database
Razvoj aplikacija za WEB. Osnove PHP sintakse. 16/84

PHP naredbe najčešće se nalaze umetnute unutar HTML koda zajedno s HTML
oznakama.
Da bi ih PHP prevodilac mogao prepoznati, moraju se nalaziti unutar posebnih oznaka.
Najčešći i preporučeni način pisanja PHP oznaka je:
<?php

?>
Svaka PHP naredba mora završiti sa znakom tačka-zarez (;), inače će se prilikom
izvršavanja javiti greška sintakse .
<?php
echo "Dobar dan";
?>
Razvoj aplikacija za WEB. Osnove PHP sintakse. 17/84

Uz naredbe, moguće je pisati i pomoćni tekst (komentare) koji ne utiču na izvođenje


programa, a služi u svrhu opisa napisanog koda.

Komentari koji se nalaze u jednoj liniji započinju znakovima // ili znakom #, a


komentari koji se protežu kroz jednu ili više linija započinju znakovima /*, a završavaju
se znakovima */.

<?php <?php
// naredba koja ispisuje tekst /* naredba koja
echo "Dobar dan"; ispisuje tekst*/
?> echo "Dobar dan";
?>
Razvoj aplikacija za WEB. Promenljive i operacije nad njima. 18/84

Promenljive se, u programskim jezicima, koriste za privremeno čuvanje izračunatih


vrednosti.

Vrednosti koje se čuvaju u promenljivima mogu biti različitog tipa podataka, što znači
da mogu biti tekstualne, brojčane, logičke ili nekog drugog tipa.

PHP podržava sledeće osnovne tipove podataka:

 logički (Booleov) tip podatka – true, false;

 celobrojni – 1, 2, 33, 123, -46, …;

 decimalni – 0.125, 3.14, -154.407565

 tekstualni (niz znakova) – "A", "abc", "Razvoj aplikacija za web 2019/20"


Razvoj aplikacija za WEB. Promenljive i operacije nad njima. 19/84

Složeni tipovi podataka koje podržava PHP su:

 polje/niz – podatak koji sadrži više povezanih vrednosti;

 objekat – složeni tip podatka koji predstavlja objekat iz stvarnog sveta (može
sadržavati podatke jednostavnog tipa ali i funkcije).

Postoje i dva specijalna tipa:

 resource – vrednost koju vraća neka funkcija (na primer memorijska adresa,
datoteka, skup zapisa iz baze podataka),

 NULL – tip koji poprima promenljiva kojoj nije pridružena vrednost.


Razvoj aplikacija za WEB. Promenljive i operacije nad njima. 20/84

PHP pripada grupi slabo tipiziranih jezika.


Za razliku od većine drugih programskih jezika, promenljivu u PHP-u, pre upotrebe,
nije potrebno deklarisati, odnosno nije potrebno navesti njen tip.
Promenljiva je spremna za upotrebu kada joj se dodeli vrednost prvi put.
Tip vrednosti, koja se dodeljuje promenljivoj, određuje i tip promenljive.

Ispred svake promenljive navodi se znak $.


Imena promenljivih (identifikatori) mogu sadržavati slova, brojke ili podvlaku ( _ ), a
prvi znak (posle $) može biti samo slovo ili podvlaka.
Razvoj aplikacija za WEB. Promenljive i operacije nad njima. 21/84

ISPRAVNO NEISPRAVNO
$promenljiva promenljiva
$promenljiva1 $1promenljiva
$n_promenljiva $n promenljiva
$_promenljiva $p@romenljiva

U imenima promenljivih razlikuju se velika i mala slova.

$promenljiva i $Promenljiva su dve različite promenljive.


Razvoj aplikacija za WEB. Konstante . 22/84

Vrednost sačuvana u promenljivi može se menjati tokom izvođenja programa.


Konstante takođe mogu sadržavati vrednosti kao i promenljive, ali se ta vrednost ne
može menjati jednom kada se deklariše.

<?php
define('Pi', 3.14);
?>
Pre imena konstante nije potrebno stavljati znak „$“.
Jednom kada se konstanta definiše, ona se u programu ne mož promeniti niti izbrisati.
Razvoj aplikacija za WEB. Pridruživanje vrednosti promenljivi. 23/84

<?php
$promenljiva=vrednost;
?>
= je znak pridruživanja.
<?php <?php
$prva="Web"; $prva=True;
$druga='Web'; $druga=FALSE;
$treca=1; ?>
$cetvrta=10.125; <?php
$peta=2.1e13; → 2.1*1013 $prva=$druga;
$sesta=0.5E-5; → 0.5*10-5 ?>
?>
Razvoj aplikacija za WEB. Aritmetički operatori. 24/84

Operator Značenje Primer


 negativan predznak $x
+ sabiranje $x + $y
 oduzimanje $x  $y
* množenje $x * $y
/ deljenje $x / $y
Moduo – ostatak
% $x % $y
deljenja
Razvoj aplikacija za WEB. Aritmetički operatori. 25/84

Operatori uvećanja i umanjenja za 1

Operator Značenje Primer


++ povećanje za 1 $x++
-- smanjenje za 1 $x--

<?php <?php
$x=$x+1; $x=$x-1;
?> ?>
<?php <?php
$x++; $x--;
?> ?>
Razvoj aplikacija za WEB. Aritmetički operatori. 26/84

Složeni operatori pridruživanja

Operator Značenje Primer Ekvivalentna naredba


Dodavanje vrednosti sa
+= $x+=<vrednost> $x=$x+<vrednost>
leve strane
Oduzimanje vrednosti sa
-= $x-=<vrednost> $x=$x-<vrednost>
leve strane
Množenje sa vrednošću sa
*= $x*=<vrednost> $x=$x*<vrednost>
leve strane
Deljenje sa vrednošću sa
/= $x/=<vrednost> $x=$x/<vrednost>
leve strane
Operacija moduo sa
%= $x%=<vrednost> $x=$x%<vrednost>
vrednošću sa leve strane
Razvoj aplikacija za WEB. Spajanje znakovnih (char) nizova. 27/84

Više znakovnih nizova moguće je pretvoriti u jedan koristeći operator spajanja.

Operator spajanja je . (tačka) .

<?php <?php
$str_1 = "Dobar"; $str_1 = "Dobar";
$str_2 = "dan"; $str_2 = "dan";
echo $str_1 . $str_2; echo $str_1." ".$str_2;
?> ?>

Rezultat: "Dobardan" Rezultat: "Dobar dan"


Razvoj aplikacija za WEB. Ispisivanje vrednosti. 28/84

<?php
$x = 5; Rezultat: 5
echo $x;
?>

<?php
$x = 10;
echo "Uneti broj je ".$x. ". Ispis vrednosti";
?>
Rezultat: Uneti broj je 5. Ispis vrednosti
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 29/84

U PHPu promenljiva se može direktno napisati unutar navodnika, a rezultat će biti isti
kao da je upotrebljen operator spajanja.

<?php
$x = 10;
echo "Uneti broj je $x. Ispis vrednosti";
?>
Rezultat: Uneti broj je 5. Ispis vrednosti
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 30/84

Ali ako se promenljiva napiše unutar apostrofa, ispisaće se doslovni sadržaj stringa.

<?php
$x = 10;
echo 'Uneti broj je $x. Ispis vrednosti';
?>

Rezultat: Uneti broj je $x. Ispis vrednosti


Razvoj aplikacija za WEB. Ispisivanje vrednosti. 31/84

Unutar navodnika moguće je izvršiti spajanje promenljivih.

<?php
$x = 10;
$y = 50;
echo "Spojeni brojevi: {$x}{$y}";
?>
Rezultat: Spojeni brojevi 1050
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 32/84

Unutar navodnika moguće je ispisati i razne specijalne znakove, kao i same znakove "
ili $, navođenjem posebnog niza znakova.

Niz znakova Značenje


\n znak za prelazak u novi red (line feed)
deo kombinacije za prelazak u novi red
\r
(carriage return)
\t tabulator
\$ ispisuje znak $
\" ispisuje znak "
\\ ispisuje znak \
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 33/84

<?php
$x = "Prvi red";
$y = "Drugi red";
echo "$x\n$y";
?>

Rezultat:
Prvi red
Drugi red
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 34/84

strukture.
Operator Značenje Primer Rezultat
== Jednako $x==$y TRUE, ako je $x jednako $y
TRUE, ako je $x jednako $y i ako su
=== Identično $x===$y
$x i $y istog tipa podataka
!= $x!=$y
Nije jednako TRUE, ako je $x nije jednako $y
<> $x<>$y
TRUE, ako $x nije jednako $y ili ako
!== Nije identično $x!==$y
$x i $y nisu istog tipa podataka
< Manje $x<$y TRUE, ako je $x manje od $y
> Veće $x>$y TRUE, ako je $x veće od $y
<= Manje ili jednako $x<=$y TRUE, ako je $x manje ili jednako $y
>= Veće ili jednako $x>=$y TRUE, ako je $x veće ili jednako $y
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 35/84

strukture.

PHP dozvoljava upoređivanje vrednosti različitih tipova podataka.

Ako se upoređuje brojčana vrednost s tekstualnom, tekstualna vrednost se pretvara u


ekvivalentnu brojčanu i vrši se upoređivanje dve brojčane vrednosti.

Ako je pretvaranje nemoguće, odnosno promenljive nisu ekvivalentnih vrednosti,


rezultat upoređivanja je FALSE.
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 36/84

strukture.

<?php
$x = 1;
$y = 7;
$x_str="1";

echo $x==$y; FALSE → ispisuje ""


echo $x<$y; TRUE → ispisuje "1"
echo $x==$x_str; TRUE → ispisuje "1"
echo $x===$x_str; FALSE → ispisuje ""
echo $x_str<$y; FALSE → ispisuje ""
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 37/84

strukture.

Operator Značenje Prioritet Primer Rezultat


! Negacija 1 !$x TRUE ako je $x FALSE
&& 2 $x && $y TRUE ako su obe
Logičko I
and 3 $x and $y vrednosti TRUE
|| 4 $x || $y TRUE ako je bar jedna od
Logičko ILI
or 6 $x or $y vrednosti TRUE
TRUE ako je samo
xor Eksluzivno ili 5 $x xor $y
jedna vrednost TRUE
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 38/84

strukture.

<?php
$x = TRUE;
$y = FALSE;

echo !$x; FALSE → ispisuje ""


echo $x and $y; FALSE → ispisuje ""
echo $x or $y; TRUE → ispisuje "1"
echo $x xor $y; TRUE → ispisuje "1"
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 39/84

strukture.

Uslovne strukture.

If struktura

<?php <?php
if(<uslov>) if($a>$b)
{ {
naredba1; echo "a je vece od b.";
naredba2; }
} ?>
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 40/84

strukture.

Uslovne strukture.

if struktura

<?php <?php
if(<uslov>) if(<uslov>)
{ naredba1;
naredba1; ?>
naredba2;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 41/84

strukture.
Uslovne strukture.
if - else struktura
<?php
if(<uslov>)
{
naredba1;
}
else
{
naredba2;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 42/84

strukture.
<?php
Uslovne strukture. if(<uslov1>)
if - else – elseif struktura {
naredba1;
}
elseif(<uslov2>)
{
naredba2;
}
else
{
naredba3;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 43/84
strukture.
<?php
Uslovne strukture. if($x>$y)
if - else – elseif struktura {
echo "x je vece od y";
}
elseif($x<$y)
{
echo "x je manje od y";
}
else
{
echo "x je jednako y";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 44/84

strukture.
<?php
Uslovne strukture. switch (<izraz>)
switch struktura {
case vrednost1:
naredba1;
naredba2;
break;
case vrednost2:
naredba3;
naredba4;
break;
default:
naredba5;
naredba6;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 45/84

strukture.
<?php
Uslovne strukture. switch ($a)
switch struktura {
case 0:
echo "a je jednako 0.";
break;
case 1:
echo "a je jednako 1.";
break;
case 2:
echo "a je jednako 2.";
break;
default:
echo "a nije ni 0 ni 1 ni 2";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 46/84

strukture.
Uslovne strukture.
<?php
switch struktura switch ($a)
{
case 0:
case 1:
echo "a je jednako 0 ili 1.";
break;
case 2:
echo "a je jednako 2.";
break;
default:
echo "a nije ni 0 ni 1 ni 2";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 47/84

strukture.
Uslovne strukture.
Ugneždena if struktura <?php
$padakisa=TRUE;
$travaraste=FALSE;
if($padakisa)
{
if($travaraste)
echo "Pada kisa, trava raste.";
else
echo "Pada kisa, trava ne raste.";
}
else
echo "Ne pada kisa.";
?>
Razvoj aplikacija za WEB. POLJA. 48/84

Za grupisanje više vrednosti koristi se koncept polja.


Polje je promenljiva koja sadrži niz vrednosti, a svakoj vrednosti (elementu polja)
pridružen je ključ.
Članu polja pristupa se pomoću ključa, koji može biti broj ili niz znakova.
Vrednost člana (elementa) polja može biti bilo kog tipa podatka koji podržava PHP.
Polje (niz) koje sadži nazive predmeta, sa ključem koji je broj – indeksom:
Indeks Vrednost
0 Matematika
1 Fizika
2 Računarstvo
3 Uvod u programiranje
4 Objektno programiranje
Razvoj aplikacija za WEB. POLJA. 49/84

Formiranje polja (niza)

<?php
$predmeti=array("Matematika","Fizika","Racunarstvo",
"Uvod u programiranje", "Objektno
programiranje");
?>
Indeks Vrednost
0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
Razvoj aplikacija za WEB. POLJA. 50/84

Pristup članu (elementu) polja

<?php
echo $predmeti[2]; Rezultat:
?>

Indeks Vrednost
0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
Razvoj aplikacija za WEB. POLJA. Indeks Vrednost 51/84

0 Matematika
Formiranje polja (niza) 1 Fizika
Polje ne mora biti prethodno stvoreno pomoću 2 Racunarstvo
ključne riječi array. 3 Uvod u programiranje
<?php 4 Objektno programiranje
$predmeti[0]="Matematika";
$predmeti[1]="Fizika";
$predmeti[2]="Racunarstvo";
$predmeti[3]="Uvod u programiranje";
$predmeti[4]="Objektno programiranje";
?> Već stvoreno polje nema fiksnu veličinu, odnosno moguće mu je
kasnije pridodati proizvoljan broj članova.
<?php
$predmeti[5]="Vizuelno programiranje";
?>
Razvoj aplikacija za WEB. POLJA. 52/84

Polje sa znakovnim ključem. Ključ Vrednost


Matematika 5
Fizika 6
Računarstvo 7
Polje je promenljiva koja sadrži niz Uvod u programiranje 6
vrednosti, a svakoj vrednosti
(elementu polja) pridružen je ključ. Objektno programiranje 7

<?php
$espb=array("Matematika„ => 5,
"Fizika" => 6,
"Racunarstvo" => 7,
"Uvod u programiranje" => 6,
"Objektno programiranje" => 7);
?>
Razvoj aplikacija za WEB. POLJA. 53/84

Za pristup članu (elementu) polja Ključ Vrednost


koristi se njegov ključ: Matematika 5
Fizika 6
Računarstvo 7
Uvod u programiranje 6
Objektno programiranje 7

<?php
echo $espb["Uvod u programiranje"];
?>

Rezultat:
Razvoj aplikacija za WEB. POLJA. 54/84

Za pridruživanje vrednosti članu Ključ Vrednost


(elementu) polja, takođe, se koristi Matematika 5
njegov ključ:
Fizika 6
Računarstvo 7
Uvod u programiranje 6
Objektno programiranje 7

<?php
$espb["Uvod u programiranje"] = 6;
?>
Razvoj aplikacija za WEB. POLJA. 55/84

Dvodimenzionalna polja (matrice) 0 1 2


0 o x o
1 o x
2 x o x
<?php
$xox=array(array("O","X","O"),
array("O","X",""),
array("X","O","X"));
?>

Dvodimenzionalno polje (matrica) – formira se kao polje čiji su članovi –


jednodimenzionalna polja (nizovi).
Razvoj aplikacija za WEB. POLJA. 56/84

Dvodimenzionalna polja (matrice) 0 1 2


Za pristup vrednosti članu, dvodimenzionalnog 0 o x o
polja, potrebno je navesti i indeks reda i indeks 1 o x
kolone.
2 x o x
<?php
echo $xox[1][1];
?>
Rezultat:
Razvoj aplikacija za WEB. POLJA. 57/84

Dvodimenzionalna polja (matrice) 0 1 2


Za pridruživanje vrednosti članu: 0 o x o
1 o x x
2 x o x
<?php
$xox[1][2] = x;
?>
Razvoj aplikacija za WEB. POLJA. 58/84

Dvodimenzionalna polja (matrice) 0 1 2


Redovi mogu da se označe i slovima:
A o x o
B o x x
<?php C x o x
$xox=array("A" => array("O","X","O"),
"B" => array("O","X",""),
"C" => array("X","O","X"));
?>

<?php
$xox["A"][2] = x;
?>
Razvoj aplikacija za WEB. POLJA. 59/84

Dvodimenzionalna polja (matrice) 0 1 2


Redovi mogu da se označe i slovima:
A o x o
B o x x
<?php C x o x
$xox=array("A" => array("O","X","O"),
"B" => array("O","X",""),
"C" => array("X","O","X"));
?>

<?php
$xox["A"][2] = x;
?>
Razvoj aplikacija za WEB. CIKLUSI. 60/84

Ciklusi su izrazi kojima se ostvaruje ponavljanje određene naredbe ili bloka naredbi.

Naredbe će se ponavljati dok je ispunjen postavljeni logički uslov.


while ciklus.

<?php <?php
while(<uslov>) $i=0;
{ while($i<10)
naredba1; {
naredba2; echo $i . " ";
} $i++;
?> }
?>
Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 61/84

while ciklus.
<?php
<?php
$i=0;
do
do
{
{
naredba1;
echo $i . " ";
naredba2;
$i++;
}
}
while(<uslov>);
while($i<10);
?>
?>
Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 62/84

for ciklus.

<?php
for(<pocetni_izraz>;<uslov>;<pon_izraz>)
{
naredba1;
naredba2;
} <?php
?> for($i=0;$i<10;$i++)
{
echo $i . " ";
$i++;
}
?> Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 63/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
Klasično 3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
for ($i=0;$i<5;$i++)
{
echo $predmeti[$i]." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 64/84

foreach ciklus.
Ovaj ciklus obavlja naredbe unutar tela
<?php
ciklusa jednom za svakog člana polja (za
foreach($polje as $vrednost)
svaki element niza): $polje, a vrednost
{
trenutnog člana polja (elementa niza)
naredba1;
smešta se u promenljivu: $vrednost.
naredba2;
}
?>
<?php
foreach($polje as $kljuc =>$vrednost)
{
naredba1;
naredba2;
}
?> Za dobijanje ključa trenutnog člana.
Razvoj aplikacija za WEB. CIKLUSI. 65/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
foreach($predmeti as $predmet)
{
echo $predmet." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 66/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
foreach($predmeti as $predmet)
{
echo $predmet." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 67/84
Ključ Vrednost
foreach ciklus. Matematika 5
Fizika 6
Računarstvo 7
Uvod u programiranje 6
<?php Objektno programiranje 7
$espb=array("Matematika" => 5,
"Fizika" => 6,
"Racunarstvo" => 7,
"Uvod u programiranje" => 6,
"Objektno programiranje" => 7);
foreach($espb as $predmet=>$bod)
Matematika ESPB: 5
{ Fizika ESPB: 6
echo "$predmet ESPB: $bod </br>"; Racunarstvo ESPB: 7
} Uvod u programiranje ESPB: 6
?> Rezultat: Objektno programiranje ESPB: 7
Razvoj aplikacija za WEB. CIKLUSI. 68/84

Ugnježdeni ciklusi.

<?php
for($i=1; $i<4; $i++)
{
for($j=1; $j<=5; $j++)
{
echo "$i-$j ";
}
echo "<br />";
}
?>
Rezultat: 1-1 1-2 1-3 1-4 1-5
2-1 2-2 2-3 2-4 2-5
3-1 3-2 3-3 3-4 3-5
Razvoj aplikacija za WEB. POLJA. 69/84

<?php 0 1 2
$xox=array(array("O","X","O"),
array("O","X",""),
0 o x o
array("X","O","X")); 1 o x
for($i=0; $i<3; $i++)
{
2 x o x
for($j=0; $j<3; $j++)
{ Rezultat: O X O
O X
echo $xox[$i][$j]." "; X O X
}
echo "<br />";
}
?>
Razvoj aplikacija za WEB. POLJA. 70/84

<?php 0 1 2
$xox=array(array("O","X","O"),
array("O","X",""),
0 o x o
array("X","O","X")); 1 o x
foreach($xox as $red)
{
2 x o x
foreach($red as $element)
{ Rezultat: O X O
O X
echo $element." "; X O X
}
echo "<br />";
}
?>
Razvoj aplikacija za WEB. CIKLUSI. 71/84

Prevremeni izlazak iz ciklusa - break.

<?php
for($i=1; $i<3; $i++)
{ Rezultat: 1-1 1-2
2-1 2-2
for($j=1; $j<=5; $j++)
{
if($j==3)
break;
else
echo "$i-$j ";
}
if($i==2)
break;
else
echo "<br />";
}
?>
Razvoj aplikacija za WEB. Funkcije. 72/84

Funkcije se pišu tako što se navede ključna riječ function, ime funkcije i otvorena i
zatvorena zagrada.

<?php
function ImeFunkcije()
{
naredba1;
naredba2;
}
?>
Za imenovanje funkcija važe ista pravila kao i za imenovanje promenljivih: mogu se
koristiti slova, brojevi i povlaka (_), a ime funkcije može početi slovom ili povlakom.
Razvoj aplikacija za WEB. Funkcije. 73/84

Ime funkcije je jedinstveno – ne mogu postojati dve funkcije sa istim imenom.

<?php
function Pozdrav()
{
echo 'Dobro dosli na II god. Master studija';
}
?>

<?php
Pozdrav();
?>
Razvoj aplikacija za WEB. Funkcije sa argumentima. 74/84

Prilikom poziva, funkciji se mogu predati određeni podaci koje će ona upotrebiti.

<?php
function ImeFunkcije($arg1, $arg2)
{
naredba1;
naredba2;
}
?>
Razvoj aplikacija za WEB. Funkcije sa argumentima. 75/84

Prilikom navođenja argumenata navodi se samo njihovo ime, a ne navodi se tip


podatka.

<?php
function Pomnozi($arg1, $arg2)
{
echo $arg1*$arg2;
}
?>
<?php
Pomnozi(15,3);
?>
Rezultat: 45
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 76/84

Najčešći način prenosa argumenata funkciji je prenos po vrednosti kod kojeg se


vrednost argumenta kopira u novu promenljivu.

<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 2;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 77/84

<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 10;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Rezultat:
Vrednost u funkciji: 11
Vrednost nakon povratka iz funkcije: 10
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 78/84

<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 10;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Razlog tome je što funkcija dobija kopiju vrednosti, a ne originalnu promenljivu, pa
promena vrednosti promenljive u funkciji nema uticaja na vrednost originalne
promenljive.
Razvoj aplikacija za WEB. Vraćanje rezultata funkcije. 79/84

<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
return $a;
}
$broj = 10;
$broj=Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Rezultat:
Vrednost u funkciji: 11
Vrednost nakon povratka iz funkcije: 11
Razvoj aplikacija za WEB. Rekurzivne funkcije. 80/84

Rekurzivna funkcija poziva samu sebe.


<?php
function Faktorijel($broj)
{
if($broj==0 || $broj==1)
return 1;
else
return $broj*Faktorijel($broj-1);
}
$c=Faktorijel(5);
echo $c;
?>
Rezultat: 120
Razvoj aplikacija za WEB. Uključivanje spoljnih funkcija. 81/84

Potreba za korišćenjem neke funkcije može se pojaviti na više mesta i to u odvojenim


skriptama.
Da se funkcije ne bi morale ponovno pisati za svaku skriptu, koja ih koristi, moguće ih
je napisati u posebnoj skripti i onda se ta skripta uključuje u kod skripte koja poziva
funkciju.

Naziv skripte: mnozenje.php :


<?php
function Mnozi($a, $b)
{
return $a * $b;
}
?>
Razvoj aplikacija za WEB. Uključivanje spoljnih funkcija. 82/84

Da bi se funkcija pozvala u nekoj drugoj skripti, potrebno je upotrebom naredbe


include u kod trenutne skripte uključiti skriptu kojoj se funkcija nalazi:

<?php
include("mnozenje.php"); Funkcija se se može uključiti i upotrebom
{ naredbe require:
$c = Mnozi(3, 4); <?php
} require("mnozenje.php");
?> {
$c = Mnozi(3, 4);
}
?>

Razlika između naredbi include i require je u načinu reagovaanja na grešku.


Razvoj aplikacija za WEB. Uključivanje spoljnih funkcija. 83/84

Ako se prilikom izvođenja skripte dogodi greška iz skripte uključene pomoću naredbe
include, ispisat će se poruka o grešci, ali će skripta nastaviti s izvođenjem.

Kod naredbe require, u takvom slučaju, prekida se izvršavanje skripte u koju je


skripta uključena.

Upotreba naredbi include i require nije ograničena samo na uključivanje skripti koje
sadrže funkcije, već se mogu uključiti i datoteke koje sadrže HTML kod ili običan tekst.

Bitno je zapamtiti da će sadržaj uključene datoteke biti umetnut u skriptu na mesto


poziva naredbe include, odnosno require.
Razvoj aplikacija za WEB. Predefinisane globalne promenljive. 84/84

Promenljiva Opis
$GLOBALS vrednosti globalnih promenljivih iz aktivne skripte
$_SERVER vrednosti postavljene od strane web servera
$_ENV vrednosti iz okruženja u kojem je instaliran PHP
$_GET vrednosti dostupne u URL-u trenutne stranice
$_POST vrednosti prenešene u HTTP zahtevu metodom POST
vrednosti zapisane u kolačićima (tekstualnim datotekama
$_COOKIE
koje web pretraživač čuva na korisnikovom računaru)
$_REQUEST vrednosti iz polja $_GET, $_POST i $_COOKIE
$_FILES vrednosti koje se odnose na datoteke poslane na server

You might also like