Professional Documents
Culture Documents
Web programiranje 2
1. Funkcije za rad sa promjenjivima
1.1 Prikaz i definisanje tipa podataka
O funkcijama će biti više riječi na narednim predavanjima, ali za sada ćemo
samo ukratko da se upoznamo sa nekim od funkcija za rad sa
promjenjivima.
string gettype(promjenjiva)
Ova funkcija utvrđuje tip promjenjive koja je prosljeđena funkciji kao
argument. Vraća znakovni string na primjer: „boolean“, „integer“,
„float“,
„double“,itd.
int settype(promjenjiva, tip)
Mijenja tip promjenjive koji se prosljeđuje funkciji kao argument. Tip se
zadaje kao znakovni niz. FunProm.
php
Web programiranje 4
1.2 Funkcije za provjeru tipa podataka
Funkcije za provjeru tipova podataka:
is_long(promjenjiva), is_int(), is_integer() – provjera da li je
promjenjiva celobrojnog tipa
is_double(), is_float(), is_real() – provjera da li je promjenjiva
tipa u pokretnom zarezu
is_string() – provjera da li je promjenjiva znakovnog tipa FunProm.
is_array – provjerava da li je promjenjiva tipa niz php
5
1.3 Funkcije za ispitivanje stanja
promjenjivih
boolean isset(promjenjiva)
Ova funkcija vraća true ako je promjenjiva definisana.
void unset(promjenjiva)
Ova funkcija poništava definiciju promjenjive.
boolean empty(promjenjiva)
Ova funkcija ispituje da li postoji promjenjiva i vraća true ako
promjenjiva ne postoji, ili ako je prazna.
FunProm1
.php
Web programiranje 6
2. Ternarni operator i uslovne strukture
7
2.1 Ternarni operator
Ternarni operator ispituje uslov, i u zavisnosti da li je uslov
true ili false izvršava se jedan, ili drugi niz naredbi.
Web programiranje 8
2.2 Uslovna struktura IF # 1
IF.php
9
Često unutar jednog uslovnog iskaza if treba da se izvrši
više iskaza, i u tom slučaju iskaze treba staviti kao blok
naredbi.
Blok se označava sa { za početak bloka i } za kraj bloka.
IF.php
Web programiranje 10
Napomena: Kao što je rečeno, PHP zanemaruje praznine
(whitespaces) u kodu i zbog toga bi iskaze trebalo uvlačiti radi bolje
čitljivosti koda.
Uvlačenje se najčešće primjenjuje kako bi se lakše uočili iskazi
(naredbe) koje će se izvršiti ako je uslov ispunjen, blokovi naredbi i
naredbe koje se izvršavaju unutar ciklusa (petlji).
Blok je u uvom slučaju od IF uvučen za
jedan tabulator (uvlačenje je
proizvoljno)
IF.php
11
Takođe postoji i sintaksa if...else if..else, gde se eksplicitno
daje jedan ili više iskaza koji će se izvršiti ukoliko uslov nije
zadovoljen (false).
Pritom, klauzula else if moze da se piše i sa razmakom, i spojeno
elseif.
IF1.php
Web programiranje 12
2.3 Uslovna struktura SWITCH # 1
Iskaz switch slično funkcioniše kao if, gde uslov može da ima
više različitih vrijednosti skalarnog tipa (integer, float ili string).
16
3.1 Uvod
Naredbe ponavljanja omogućavaju ciklično ponavljanje
neke naredbe, ili bloka naredbi više puta i zbog toga se
ove naredbe nazivaju petlje.
Broj ponavlja zavisi od vrijednosti logičkog izraza (uslova).
Naredbe ili blok naredbi se ponavlja sve dok je uslov
tačan, a ponavljanje se prekida kada uslov postane
netačan.
Petlja while
Petlja do...while
Petlja for
Petlja foreach
Web programiranje 17
3.2 Petlja WHILE # 1
18
Dijagram toka (eng. flow chart) while petlje dat je na
slici.
19
U navedenom pseudo-kodu, inicijalizacija predstavlja
dodjeljivanje početne vrijednosti upravljačkoj promjenjivoj,
koja kontroliše kada će petlja da prestane da se izvršava.
while.php
20
3.2 Petlja WHILE #3
while1.php
Web programiranje 21
3.3 Petlja DO...WHILE # 1
Web programiranje 22
Dijagram toka petlje do...while dat je na slici.
23
While vs do...while
Web programiranje 24
Koliko puta će se petlja izvršiti?
dowhile.php
25
3.4 Petlja - FOR # 1
Web programiranje 26
Dakle, na početku izvršavanja petlje for vrši se
inicijalizacija kontrolog dijela, i to samo jednom.
Uslov daljeg izvršavanja petlje for je predstavljen
logičkim izrazom, čija se tačnost provjerava prije svakog
izvršavanja tijela petlje.
Izvršavanje tijela petlje se prekida kada je vrijednost
logičkog izraza netačna (false).
Dio inicijalizacija for petlje može da bude bilo
koji izraz, ali je to obično naredba dodjele.
Dio iteracija for petlje može biti bilo koji izraz, ali je to
obično operacija inkrement (uvećanje operanda za jedan).
27
Web programiranje 28
for.php
for1.php
Primjer tablice množenja
Web programiranje 29
3.5 Petlja - FOREACH
30
3.6 Izlazak iz upravljačke strukture
Postoje tri načina da se prekine izvršavanje bloka
koda:
Naredba break, kojom se iskače iz petlje (bloka koda),
Naredba continue, kojom se preskače tekuća iteracija
petlje,
Naredba goto, kojom se „skače“ na određeni dio koda i
Naredba exit, kojom se izlazi iz cijelog PHP skripta.
Ove naredbe se nazivaju naredbe kontrole toka.
Web programiranje 31
3.7 Kontrola toka break # 1
break.php
32
Naredba break može da koristi i opcioni numerički
argument, pomoću koga se kontroliše način na koji se kod
prekida kod ugnježdenih (eng. nested) petlji i/ili blokova
naredbi.
break1.php
Web programiranje 33
3.8 Kontrola toka continue
Pomoću kontrole toka continue može da se preskoči
određena iteracija petlje.
continue.php
34
3.9 Efekti naredbi continue i break
Web programiranje 35
3.10 Efekti naredbi continue i break
exit.php
exit1.php
36
3. Efekti naredbi goto #1
11
labela goto.php
37
3. Efekti naredbi goto #2
12
38
4. Nizovi i funkcije za rad sa nizovima
Web programiranje 39
4.1 Pojam nizova # 1
43
4.3 Nizovi sa znakovnim indeksima –
associative array # 2
Web programiranje 44
Kao i u numerički indeksiranim nizovima, možete da
upotrijebite operator niza za dodavanje asocijativnog
niza:
$character['supername'] = "Mega X-Ray
Guy";
U ovom primjeru dodat je ključ supername, koji ima
vrijednost Mega X-Ray Guy.
Jedina razlika izmedu asocijativnog i numerički
indeksiranog niza je naziv ključa.
U numerički indeksiranom nizu naziv ključa je broj.
U asocijativnom nizu naziv ključa je smisaona riječ.
45
4.3 Nizovi sa znakovnim indeksima –
associative array #5
nizovi1.php
46
4.4 Funkcija range()
Funkcija range() automatski pravi niz rastućih brojeva.
Na primjer, $brojevi=range(1,100) smješta niz
brojeva od 1 do 100 u rastućem redosljedu u niz
$brojevi.
Na primjer, $neparni=range(1,10,2) smješta
neparne brojeve od 1 do 10 u niz $brojevi u rastućem
redoslijedu.
nizovi2.php
Web programiranje 47
4.5 Prikaz elemenata niza pomoću petlji # 1
nizovi3.php
48
Petlja foreach se koristi samo u kombinaciji sa
nizovima, a koristi se za kretanje kroz svaki key/value
par.
Sintaksa je:
foreach ($array as $value)
{code to be executed;}
nizovi3.php
Web programiranje 49
4.6 Prikaz elemenata niza pomoću
funkcije each() # 1
50
U ovom primjeru možemo vidjeti dva načina ispisa
elemenata niza $automobili.
Jedan je putem while() petlje i korištenja funkcije
each(), a drugi je putem foreach() petlje.
nizovi4.php
51
4.7 Prikaz elemenata niza pomoću
funkcije list() # 1
52
nizovi5.php
53
nizovi6.php
Web programiranje 54
4.8 Operatori za rad sa nizovima
55
4.9 Pojam multidimenzionalnih nizova # 1
Web programiranje 56
mdarray.php
Web programiranje 57
Na liniji 13 niz $characters je pokrenut pomoću funkcije
array().
U linijama od 14 do 19 predstavljen je prvi, u linijama od 20 do
24 drugi, a u linijama od 26 do 31 treći elemenat.
Ovi elementi mogu da budu referencirani kao
$characters[0], $characters[1] i $characters[2].
Svi elementi se sastoje od asocijativnih nizova, od kojih svaki
sadrži četiri elementa: name, occupation, age i
special_power.
Međutim, pretpostavimo da pokušavate da odštampate glavne
elemente, kao što je:
echo $characters[1];
U ovom kodu ispis će biti:
Array
58
Zato što glavni elemenat sadrži niz.
Da biste stvarno preuzeli sadržaj koji želite (odnosno,
specifičnu informaciju koja se nalazi unutar elementa
unutrašnjeg niza), potrebno je da pristupite indeksnoj
poziciji matičnog elementa i da upotrebite naziv
asocijativnog niza vrijednosti koju želite da prikažete.
Pogledajte sljedeći primjer:
echo $characters[1]['occupation'];
Ovaj primjer odštampaće sljedeće:
superhero
59
Štampanje informacija koje se nalaze u svakom elementu
niza: mdarray.php
60
Petlja foreach obrađuje glavni elemenat niza $characters.
Ona se ponavlja kroz ovaj niz i dodjeljuje privremeni naziv $c
elementu koji se nalazi unutar svake pozicije.
Zatim, kod pokreće petlju while. Ova petlja koristi dvije funkcije za
ekstraktovanje sadržaja unutrašnjeg niza - list() i each().
Funkcija list() dodeljuje naziv za rezervisane varijable $k i
$v, koje će biti popunjene ključevima i vrijednostima skupljenim iz
funkcije each().
Funkcija each() pregleda svaki elemenat niza $c i u skladu sa
njim ekstraktuje informacije.
Iskaz echo jednostavno štampa svaki ključ i vrijednost ($k i
$v) koji su ekstraktovani iz niza $c pomoću funkcije each() i
dodaje novi red za prikaz.
61
matrice.php
matrice1.php
Web programiranje 62
4.10 Funkcije za prebrojavanje
elemenata niza # 1
63
PNiz.php
64
4.11 Funkcije za dodavanje
elemenata niza # 1
66
4.12 Funkcije za dodavanje
elemenata niza #1
sort(imeNiza[,Flag]) – sortira niz, Flag može biti
SORT_NUMERIC, SORT_REGULAR i SORT_STRING
rsort(imeNiza[,Fleg]) – sortira niz u opadajućem
redosljedu
asort(imeNiza[,Fleg]) – sortira niz zadržavajući
key/value parove.
usort(imeNiza[,imeFunkcije]) – sortira niz na
osnovu zadate funkcije.
array_reverse(imeNiza[,fixIndekse]) – obrne
redosljed elemenata, ako su pravi indeksi numerički i
fixIndekse=TRUE čuvaju se kao indeksi.
array_flip (imeNiza) – obrne mjesta indeksima i
v r ij e d n o s t ima.
W eb p r og ra m ira n je 67
4.12 Funkcije za dodavanje
elemenata niza #2
SNiz.php
Web programiranje 68
4.13 Funkcije za lociranje elemenata u nizu
in_array(element,imeNiza) – daje vrijednost TRUE,
ako se vrijednost prosljeđenog elementa nalazi u datom nizu i
FALSE u suprotnom slučaju.
array_keys(imeNiza[,element]) – daje niz svih
indeksa elemenata, odnosno niz indeksa zadate vrijednosti.
array_search(element,imeNiza) – daje vrijednost
prvog indeksa zadate vrijednosti.
69
4.14 Funkcije za kretanje po nizu
key(imeNiza) – daje vrijednost trenutnog indeksa.
current(imeNiza) – daje trenutnu vrijednost.
each(imeNiza) – daje trenutni indeks-vrijednost par i
pomjera pokazivač za jedan element.
reset(imeNiza) – vraća pokazivač na početak niza
(prvi element).
next(imeNiza) – vraća vrijednost sljedećeg elementa
u nizu i pomjera pokazivač za jedno mjesto unaprijed.
prev(imeNiza) – vraća vrijednost prethodnog
elementa u nizu i pomjera pokazivač za jedno mesto
unazad.
end(imeNiza) – pomjera pokazivač na kraj niza i vraća
vrijednost elementa na kraju niza.
Web programiranje 70
4.15 Funkcije za kombinovanje nizova # 1
Web programiranje 72
5. Primjer interakcije HTML forme sa PHP-om
Web programiranje 73
5.1 Zahtjev u primjeru # 1
Web programiranje 74
Kada kupac unese osnovne podatke za transakciju (ime,
prezime, godina rođenja, pol, način plaćanja i količinu
Ethereum-a koju želi da kupi, treba da se odštampa potvrda o
transakciji sa sljedećim podacima:
Ime kupca
Prezime kupca
Način plaćanja
Broj kupljenih jedinica Ethereum-a
Trenutna cijna jedne jedinice Ethereum-a u dolarima
Iznos transakcije u dolarima i
Vrijeme i datum izvršenja transakcije (dinamički sadržaj).
Ukoliko kupac u HTML formu u polje za željeni broj jedinica
Ethereum-a koji želi da kupi unese 0, ili ostavi prazno, treba da
se ispiše poruka da transakcija ne postoji.
75
Stranica sa potvrdom o transakciji, odnosno obavejštenje
da kupovina nije realizovana treba da izgledaju kao što je
prikazano na slikama ispod.
76
5.2 Mogući način pristupanja elementima
HTML forme iz PHP-a
Postoji tri načina za pristupanje elementima HTML forme pomoću
PHP koda (neka je u primjerima ispod vrijednost atributa name
elementa forme kojem se pristupa postavljena na ime):
1. $ime
2. $_POST[‘ime’]
3. $HTTP_POST_VARS[‘ime’]
Da bi se koristio prvi način, potrebno je da se parametar
register_globals postavi na vrijednost on u podešavanjima
web servera. Zbog ovoga se ovaj način ne preporučuje.
Drugi način je optimalan i zato ćemo i mi da ga koristimo u našim
primjerima.
Treći način je složen i zastario (eng. obsolete) i treba ga izbjegavati.
Web programiranje 77
5.3 $_POST, $_GET, $_REQUEST
$_POST i $_GET su superglobalni nizovi.
Jedan od navedena dva niza sadržaće vrijednosti svih polja
HTML forme.
Koji niz će biti korišten zavisi od POST/GET metode koja se
navede u formi.
<form name="prva" method="POST" action="Potvrda.php">
<form name="prva" method="GET" action="Potvrda.php">
Svim poljima HTML forme u stranici Potvrda.php može da se
pristupi preko naredbi:
$_POST[‘ime_polja’]
$_GET[‘ime_polja’]
78
5.4 Funkcija date()
Obzirom da je jedan od zahtjeva u primjeru da se prikaže
datum i vrijeme realizacije transakcije (tekući datum i vrijeme),
potrebno je koristiti funkciju date().
Funkcija date() kao argument prima znakovni niz, koji
predstavlja format vremena/datuma koji treba da se prikaže.
Svaki karakter u argumentu predstavlja jedan element datuma,
odnosno vremena:
H označava sat u 24-časovnom format
i označava minute sa vodećom cifrom 0 za jednocifreni broj minuta
(0-9)
j označava dan u mesecu, bez vodeće cifre 0 za jednocifrene dane
S označava redni sufiks na engleskom jeziku (st/nd/rd)
F označava pun naziv meseca.
Web programiranje 79
5.5 Rješenje # 1
Web programiranje 80
Prvo je potrebno da se definišu kraća imena varijabli koje će uzimati
vrijednost odgovarajućih polja iz html forme korištenjem $_POST
superglobalnog niza.
Takođe, definisana je konstanta ETHCIJENA, koja
predstavlja trenutnu vrijednost Ethereum valute.
potvrda.php
Web programiranje 81
Varijabla $iznos čuva vrijednost transakcije u dolarima,
koja se dobija kada se broj kupljenih Ethereum-a
($kolicina) pomnoži sa cijenom jedne jedinice
(ETHCIJENA).
potvrda.php
82
Ako je kupac u HTML formi unijeo da želi da kupi više od 0
jedinica Ethereum-a, prikazuju se podaci o transakciji
(ime,prezime,nacin placanja, broj kupljenih ETH, trenutna
cijena, iznos transakcije u dolarima, vrijeme i
datum transakcije).
potvrda.php
Web programiranje 83
Ako je kupac u HTML formi za željeni iznos Ethereum
valute koju želi da kupi unijeo 0 ili je ostavio prazno,
ispisuje se poruka da ne postoji transakcija i da kupovina
nije realizovana.
potvrda.php
84
Vježbe
Vježbe raditi u sljdećem redoslijedu:
Vježba1.docx – ovdje se radi o 6 manjih vježbi
Vjezba-nizovi-modify-array-with-loop
Vjezba-nizovi-modify-array-with-array_walk
Vjezba-nizovi-modify-array-with-array_map
Vjezba-nizovi-joining-array-with-commas
Vjezba-nizovi-extracting-data-from-json
Vjezba-processing-and-validating-user-input
Web programiranje 85
HVALA NA PAŽNJI!
Kontakti:
mr. sc. Benjamin Suljić, dipl.ing.el.
email: benjamin.suljic@gmail.com
LinkedIn: https://www.linkedin.com/in/benjaminsuljic/
Informacione tehnologije 86