php i mysql deo 1 advance

16
Advance  ®  Creative Training Center Centar za Edukaciju č Đđć     Č Č

Upload: anchy

Post on 02-Mar-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

983120983112983120 983145 983117983161983123983121983116

983120983154983137983162983150983145983150983141983084 983147983151983149983141983150983156983137983154983145983084 983152983154983151983149983141983150983148983146983145983158983141983084 983156983145983152983151983158983145 983152983154983151983149983141983150983148983146983145983158983145983144983084

983158983145983140983148983146983145983158983151983155983156983084 983147983151983150983155983156983137983150983156983141

983120983112983120 983151983152983141983154983137983156983151983154983145

983110983157983150983147983139983145983146983141 983162983137 983151983138983154983137983140983157 983152983154983151983149983141983150983148983146983145983158983145983144

983120983112983120 983155983156983154983157983147983156983157983154983141 983143983154983137983150983137983150983146983137

983120983112983120 983152983141983156983148983146983141

Č983137983155 983089983084983090 991251 983145983150983140983145983158983145983140983157983137983148983150983151

Č983137983155 983089983084983090983084983091 983085 983143983154983157983152983150983151

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

U ovom delu obradićemo PHP sintaksu Zapravo manje više PHP sintaksa je slična kao i JavaScriptsintaksa u globalu ali naravno oba ova jezika imaju svoje specifičnosti odnosno razlike Ukoliko stedobro savladali JavaScript biće vam vrlo lako učenje i PHP

PHP je u globalu malo složeniji jezik od JavaScript ne toliko po obimu koliko po tome što PHPpruža mogućnost dobro i pravo objektno programiranje I PHP ima jako mnogo ugradjenih gotovihfunkcija koje mogu mnogo toga da završe umesto pisanja dugačkih potprograma i samim tim dauštede i vreme i napor U tom smislu jako je preporučljivo da se nauče dobro što više ugradjenihfunkcija kao i njihove mogućnosti

Praznine komentari promenjljive ikonstante

Oznaka ltphp ili samo lt je početak PHP programa a oznaka gt je kraj PHP kod se stavlja uvek ufajl sa ekstenzijom php Svaki kod koji je izvan znakova za početak i kraj PHP koda tumači se kaoHTML kod ili neki drugi

Unutar PHP znakova za početak i kraj mogu se ubacivati i HTML kodovi ali isključivo pomoću PHPnaredbe prikaza PRINT ili ECHO unutar dvostrukih ili jednostrukih navodnika

Svaki PHP kod sastavljen je od iskaza praznina i komentara

Praznine

To su znakovi kao što su novi red tabulatori i razmaci Oni se prilikom izvršenja koda zanemaruju asluže da bi nama program bio čitljiv

Komentari

Komentari služe za objašnjenje PHP koda prilikom našeg čitanja a pri izvršenju programa sezanemaruju Postoji višeredni komentar koji počinje sa oznakom a završava se sa na primer

Autor Milenko Pantić

Skripta za foto galeriju

Napravljena 10102008

Komentar pisan samo u jednom redu može početi sa dve kose crte ili pak sa tarabom

Deo koda za proveru verodostojnosti unetog podatka za username

Deo koda za proveru verodostojnosti unetog podatka za username

Sve iza dve kose crte ili tarabe prilikom izvršenja programa se zanemaruje sve dok se ne dodje dokraja reda ili do znake za kraj PHP koda

Sve ostalo u PHP kodu nazivamo iskazima i po njima se program izvršava Svi iskazi u PHP kodu seodvajaju znakom tačka zarez

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Promenjljive

Promenjljive su veličine koje tokom izvršavanja PHP programa mogu menjati svoju vrednost UPHP-u oznake za promenljive moraju početi sa znakom dolar $ Iza znaka dolar naziv mora početislovom a posle toga možemo pisati brojeve slova ili neke druge znakove ali ne i razmak

Zapamtite da PHP razlikuje velika i mala slova u nazivu promenjljive

U PHP ne moramo prvo deklarisati promenjljive kao kod nekih drugih programskih jezika većjednostavno samo dodelimo vrednost Promenjljivama dodeljujemo vrednost upotrebom operatoraza dodelu vrednosti a to je znak ldquo = rdquo Promenjljivoj možete dodeliti i vrednos druge promenjljivena primer

$visina=8

$visina2=$visina

Sada i promenjljiva $visina2 ima vrednos 8

Tipovi promenjljivihU PHP-u razlikujemo sledeće tipove promenjljivih

bull Integer ndash celobrojni podacibull Double ndash decimalni brojevi dvostruke preciznostibull String ndash znakovna promenjljiva ili da bude razumljivije promenjljiva kojoj se dodeljuje

tekst ili skup nekih znakova unutar dvostrukih i jednostrukih navodnika Kao string unutarjednostrukih i dvostrukih navodnika može stajati i HTML JavaScript kod i slično

bull Bool ndash logičke vrednosti odnosno true (tačno) i false (netačno)bull Arraj ndash nizovi podatakabull Object ndash objekat čuvaju se klasebull Logički podacibull

NULL - promenjljive kojima nije dodeljena vrednos imaju vrednost tipa NULL NULL jenepostojaća vrednos prazno polje ili ti polje bez vrednosti Napomena da je i nula vrednosti zato ne treba mešati nulu i NULL

bull Resurs - promenjljive za rad sa bazama podataka imaju vrednost tipa resurs

PHP podržava tipove podataka pdfdoc i pdfinfo ako server podržava rad sa PDF dokumentima

U PHP-u možemo u hodu menjati tip podataka

PHP podržava i promenjljiva promenjljiva logiku pomoću koje se imena promenjljivih mogu menjatidinamički To je u stvari kada vrednost jedne promenjljive koristimo da bi smo dobili naziv drugepromenjljive Na primer

$promenjljiva=tezina$$promenjljiva=10

Dobili smo novu promenjljivu $tezina koja ima isto vrednost 10

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Vidljivost promenjljive

Sve promenjljive nisu vidljive svuda u skripti U PHP-u imamo sledeće vidljivosti promenjljive

1 Superglobalne promenjljive vidljive su svuda2

Globalne promenjljive vidljive su svuda u skripti ali ne i u funkciji koju smo izradiliTakodje nije vidljiva i fajlovima koji se umeću u tu skriptu iskazima include i require

3 Promenjljive unutar funkcije vidljive su samo u tu funkciju4 Promenjljive unutar funkcije koje definišemo kao globalne vidljive su kao globalne

Spisak superglobalnih promenjljivih je sledeći

bull $GLOBALS ndash niz svih globalnih promenjljivihbull $_SERVER ndash niz svih serverskih promenjljivihbull $_GET ndash niz promenjljivih koje se prosledjuju skripti metodom GETbull $_POST ndash niz promenjljivih koje se prosledjuju skripti metodom POSTbull $_COOKIE ndash niz kolačićabull $_FILES ndash niz promenjljivih koje sadrže razne tipove podataka pa i fajlove koje se prenose

internetombull $_ENV ndash niz promenjljivih okruženjabull $_REQUEST ndash niz promenjljivih korisnikabull $_SESSION ndash niz promenjljivih sesije

Konstante

Konstanta nosi vrednost isto kao i promenjljiva ali za razliku od promenjljive koja može da semenja u toku izvršavanja programa konstanta se ne menja Konstantu u programu možemo pisatikao vrednost bez ikakve oznake (na primer 314 za vrednost PI) ili da joj damo oznaku zapromenjljivu ali da je ne menjamo Ipak ako izradjujemo veliki sajt da ne bi došlo do grešaka izabuna poželjno je da definišemo konstante jednom za uvek Definisanje konstanti se vrši

funkcijom DEFINE na sledeći način

define (HLEB40)

define (PIVO50)

define (SALAMA100)

Kasnije kad nam treba konstanta u programu pozivamo je sa HLEB PIVO ili SALAMA Oznake zakonstante su bez znaka dolar ispred naziva Vrednosti naših gornjih konstanti redom su 40 50 100Poželjno je konstante pisati velikim slovima kako bi se uočavale ali mogu se pisati i malim slovima

PHP operatori

Kao i u matematici operatori omogućavaju izvršavanje operacija nad promenljivima i konstantamana primer sabiranja množenja itd Operatori se mogu pisati sa jednim dva ili tri znaka Postojesledeći tipovi operatora

bull Aritmetički operatoribull Operator nad znakovnim nizombull Operatori dodelebull Operatori poredjenjabull Logički operatoribull Operatori nad bitovima

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

bull Ostali operatori

Aritmetički operatori

983119983152983141983154983137983156983151983154 983118983137983162983145983158 983120983154983145983149983141983154

+ 983123983137983138983145983154983137983150983146983141 $983137 + $983138

983085 983151983140983157983162983145983149983137983150983146983141 $983137 983085 $983138

983149983150983151983422983141983150983146983141 $983137 $983138

983140983141983148983141983150983146983141 $983137 $983138

983117983151983140983157983148983151 $983137 $983138

Evo primera upotrbe operatora

$a = $b + $c

Znak minus se koristi i za označavanje negativnih brojeva

$a = - 1

Ne treba posebno objasnjavati ove operatore osim operatora modulo koji je možda nepoznatModulo vraća ostatak celobrojnog deljenja promenjljive $a promenjljivom $b Na primer

$a = 36

$b = 5

$c = $a $b Promenjljiva $c imaće vrednost 2 jer je 36 5 = 72

Aritmetički operatori se isključivo primenjuju nad brojevima

String operatori

Jedini operator nad stringovima je tačka Ovaj operator se koristi za spajanje dva i višeznakovna izraza u jedan Sve će biti jasnije nakon sledećeg primera

$a = Ana

$b = voli

$c = Bobana$rezultat = $a $b $c

Znakovna proemnjljiva $rezultat imaće vrednost Ana voli Bobana

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 2: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

U ovom delu obradićemo PHP sintaksu Zapravo manje više PHP sintaksa je slična kao i JavaScriptsintaksa u globalu ali naravno oba ova jezika imaju svoje specifičnosti odnosno razlike Ukoliko stedobro savladali JavaScript biće vam vrlo lako učenje i PHP

PHP je u globalu malo složeniji jezik od JavaScript ne toliko po obimu koliko po tome što PHPpruža mogućnost dobro i pravo objektno programiranje I PHP ima jako mnogo ugradjenih gotovihfunkcija koje mogu mnogo toga da završe umesto pisanja dugačkih potprograma i samim tim dauštede i vreme i napor U tom smislu jako je preporučljivo da se nauče dobro što više ugradjenihfunkcija kao i njihove mogućnosti

Praznine komentari promenjljive ikonstante

Oznaka ltphp ili samo lt je početak PHP programa a oznaka gt je kraj PHP kod se stavlja uvek ufajl sa ekstenzijom php Svaki kod koji je izvan znakova za početak i kraj PHP koda tumači se kaoHTML kod ili neki drugi

Unutar PHP znakova za početak i kraj mogu se ubacivati i HTML kodovi ali isključivo pomoću PHPnaredbe prikaza PRINT ili ECHO unutar dvostrukih ili jednostrukih navodnika

Svaki PHP kod sastavljen je od iskaza praznina i komentara

Praznine

To su znakovi kao što su novi red tabulatori i razmaci Oni se prilikom izvršenja koda zanemaruju asluže da bi nama program bio čitljiv

Komentari

Komentari služe za objašnjenje PHP koda prilikom našeg čitanja a pri izvršenju programa sezanemaruju Postoji višeredni komentar koji počinje sa oznakom a završava se sa na primer

Autor Milenko Pantić

Skripta za foto galeriju

Napravljena 10102008

Komentar pisan samo u jednom redu može početi sa dve kose crte ili pak sa tarabom

Deo koda za proveru verodostojnosti unetog podatka za username

Deo koda za proveru verodostojnosti unetog podatka za username

Sve iza dve kose crte ili tarabe prilikom izvršenja programa se zanemaruje sve dok se ne dodje dokraja reda ili do znake za kraj PHP koda

Sve ostalo u PHP kodu nazivamo iskazima i po njima se program izvršava Svi iskazi u PHP kodu seodvajaju znakom tačka zarez

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Promenjljive

Promenjljive su veličine koje tokom izvršavanja PHP programa mogu menjati svoju vrednost UPHP-u oznake za promenljive moraju početi sa znakom dolar $ Iza znaka dolar naziv mora početislovom a posle toga možemo pisati brojeve slova ili neke druge znakove ali ne i razmak

Zapamtite da PHP razlikuje velika i mala slova u nazivu promenjljive

U PHP ne moramo prvo deklarisati promenjljive kao kod nekih drugih programskih jezika većjednostavno samo dodelimo vrednost Promenjljivama dodeljujemo vrednost upotrebom operatoraza dodelu vrednosti a to je znak ldquo = rdquo Promenjljivoj možete dodeliti i vrednos druge promenjljivena primer

$visina=8

$visina2=$visina

Sada i promenjljiva $visina2 ima vrednos 8

Tipovi promenjljivihU PHP-u razlikujemo sledeće tipove promenjljivih

bull Integer ndash celobrojni podacibull Double ndash decimalni brojevi dvostruke preciznostibull String ndash znakovna promenjljiva ili da bude razumljivije promenjljiva kojoj se dodeljuje

tekst ili skup nekih znakova unutar dvostrukih i jednostrukih navodnika Kao string unutarjednostrukih i dvostrukih navodnika može stajati i HTML JavaScript kod i slično

bull Bool ndash logičke vrednosti odnosno true (tačno) i false (netačno)bull Arraj ndash nizovi podatakabull Object ndash objekat čuvaju se klasebull Logički podacibull

NULL - promenjljive kojima nije dodeljena vrednos imaju vrednost tipa NULL NULL jenepostojaća vrednos prazno polje ili ti polje bez vrednosti Napomena da je i nula vrednosti zato ne treba mešati nulu i NULL

bull Resurs - promenjljive za rad sa bazama podataka imaju vrednost tipa resurs

PHP podržava tipove podataka pdfdoc i pdfinfo ako server podržava rad sa PDF dokumentima

U PHP-u možemo u hodu menjati tip podataka

PHP podržava i promenjljiva promenjljiva logiku pomoću koje se imena promenjljivih mogu menjatidinamički To je u stvari kada vrednost jedne promenjljive koristimo da bi smo dobili naziv drugepromenjljive Na primer

$promenjljiva=tezina$$promenjljiva=10

Dobili smo novu promenjljivu $tezina koja ima isto vrednost 10

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Vidljivost promenjljive

Sve promenjljive nisu vidljive svuda u skripti U PHP-u imamo sledeće vidljivosti promenjljive

1 Superglobalne promenjljive vidljive su svuda2

Globalne promenjljive vidljive su svuda u skripti ali ne i u funkciji koju smo izradiliTakodje nije vidljiva i fajlovima koji se umeću u tu skriptu iskazima include i require

3 Promenjljive unutar funkcije vidljive su samo u tu funkciju4 Promenjljive unutar funkcije koje definišemo kao globalne vidljive su kao globalne

Spisak superglobalnih promenjljivih je sledeći

bull $GLOBALS ndash niz svih globalnih promenjljivihbull $_SERVER ndash niz svih serverskih promenjljivihbull $_GET ndash niz promenjljivih koje se prosledjuju skripti metodom GETbull $_POST ndash niz promenjljivih koje se prosledjuju skripti metodom POSTbull $_COOKIE ndash niz kolačićabull $_FILES ndash niz promenjljivih koje sadrže razne tipove podataka pa i fajlove koje se prenose

internetombull $_ENV ndash niz promenjljivih okruženjabull $_REQUEST ndash niz promenjljivih korisnikabull $_SESSION ndash niz promenjljivih sesije

Konstante

Konstanta nosi vrednost isto kao i promenjljiva ali za razliku od promenjljive koja može da semenja u toku izvršavanja programa konstanta se ne menja Konstantu u programu možemo pisatikao vrednost bez ikakve oznake (na primer 314 za vrednost PI) ili da joj damo oznaku zapromenjljivu ali da je ne menjamo Ipak ako izradjujemo veliki sajt da ne bi došlo do grešaka izabuna poželjno je da definišemo konstante jednom za uvek Definisanje konstanti se vrši

funkcijom DEFINE na sledeći način

define (HLEB40)

define (PIVO50)

define (SALAMA100)

Kasnije kad nam treba konstanta u programu pozivamo je sa HLEB PIVO ili SALAMA Oznake zakonstante su bez znaka dolar ispred naziva Vrednosti naših gornjih konstanti redom su 40 50 100Poželjno je konstante pisati velikim slovima kako bi se uočavale ali mogu se pisati i malim slovima

PHP operatori

Kao i u matematici operatori omogućavaju izvršavanje operacija nad promenljivima i konstantamana primer sabiranja množenja itd Operatori se mogu pisati sa jednim dva ili tri znaka Postojesledeći tipovi operatora

bull Aritmetički operatoribull Operator nad znakovnim nizombull Operatori dodelebull Operatori poredjenjabull Logički operatoribull Operatori nad bitovima

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

bull Ostali operatori

Aritmetički operatori

983119983152983141983154983137983156983151983154 983118983137983162983145983158 983120983154983145983149983141983154

+ 983123983137983138983145983154983137983150983146983141 $983137 + $983138

983085 983151983140983157983162983145983149983137983150983146983141 $983137 983085 $983138

983149983150983151983422983141983150983146983141 $983137 $983138

983140983141983148983141983150983146983141 $983137 $983138

983117983151983140983157983148983151 $983137 $983138

Evo primera upotrbe operatora

$a = $b + $c

Znak minus se koristi i za označavanje negativnih brojeva

$a = - 1

Ne treba posebno objasnjavati ove operatore osim operatora modulo koji je možda nepoznatModulo vraća ostatak celobrojnog deljenja promenjljive $a promenjljivom $b Na primer

$a = 36

$b = 5

$c = $a $b Promenjljiva $c imaće vrednost 2 jer je 36 5 = 72

Aritmetički operatori se isključivo primenjuju nad brojevima

String operatori

Jedini operator nad stringovima je tačka Ovaj operator se koristi za spajanje dva i višeznakovna izraza u jedan Sve će biti jasnije nakon sledećeg primera

$a = Ana

$b = voli

$c = Bobana$rezultat = $a $b $c

Znakovna proemnjljiva $rezultat imaće vrednost Ana voli Bobana

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 3: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Promenjljive

Promenjljive su veličine koje tokom izvršavanja PHP programa mogu menjati svoju vrednost UPHP-u oznake za promenljive moraju početi sa znakom dolar $ Iza znaka dolar naziv mora početislovom a posle toga možemo pisati brojeve slova ili neke druge znakove ali ne i razmak

Zapamtite da PHP razlikuje velika i mala slova u nazivu promenjljive

U PHP ne moramo prvo deklarisati promenjljive kao kod nekih drugih programskih jezika većjednostavno samo dodelimo vrednost Promenjljivama dodeljujemo vrednost upotrebom operatoraza dodelu vrednosti a to je znak ldquo = rdquo Promenjljivoj možete dodeliti i vrednos druge promenjljivena primer

$visina=8

$visina2=$visina

Sada i promenjljiva $visina2 ima vrednos 8

Tipovi promenjljivihU PHP-u razlikujemo sledeće tipove promenjljivih

bull Integer ndash celobrojni podacibull Double ndash decimalni brojevi dvostruke preciznostibull String ndash znakovna promenjljiva ili da bude razumljivije promenjljiva kojoj se dodeljuje

tekst ili skup nekih znakova unutar dvostrukih i jednostrukih navodnika Kao string unutarjednostrukih i dvostrukih navodnika može stajati i HTML JavaScript kod i slično

bull Bool ndash logičke vrednosti odnosno true (tačno) i false (netačno)bull Arraj ndash nizovi podatakabull Object ndash objekat čuvaju se klasebull Logički podacibull

NULL - promenjljive kojima nije dodeljena vrednos imaju vrednost tipa NULL NULL jenepostojaća vrednos prazno polje ili ti polje bez vrednosti Napomena da je i nula vrednosti zato ne treba mešati nulu i NULL

bull Resurs - promenjljive za rad sa bazama podataka imaju vrednost tipa resurs

PHP podržava tipove podataka pdfdoc i pdfinfo ako server podržava rad sa PDF dokumentima

U PHP-u možemo u hodu menjati tip podataka

PHP podržava i promenjljiva promenjljiva logiku pomoću koje se imena promenjljivih mogu menjatidinamički To je u stvari kada vrednost jedne promenjljive koristimo da bi smo dobili naziv drugepromenjljive Na primer

$promenjljiva=tezina$$promenjljiva=10

Dobili smo novu promenjljivu $tezina koja ima isto vrednost 10

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Vidljivost promenjljive

Sve promenjljive nisu vidljive svuda u skripti U PHP-u imamo sledeće vidljivosti promenjljive

1 Superglobalne promenjljive vidljive su svuda2

Globalne promenjljive vidljive su svuda u skripti ali ne i u funkciji koju smo izradiliTakodje nije vidljiva i fajlovima koji se umeću u tu skriptu iskazima include i require

3 Promenjljive unutar funkcije vidljive su samo u tu funkciju4 Promenjljive unutar funkcije koje definišemo kao globalne vidljive su kao globalne

Spisak superglobalnih promenjljivih je sledeći

bull $GLOBALS ndash niz svih globalnih promenjljivihbull $_SERVER ndash niz svih serverskih promenjljivihbull $_GET ndash niz promenjljivih koje se prosledjuju skripti metodom GETbull $_POST ndash niz promenjljivih koje se prosledjuju skripti metodom POSTbull $_COOKIE ndash niz kolačićabull $_FILES ndash niz promenjljivih koje sadrže razne tipove podataka pa i fajlove koje se prenose

internetombull $_ENV ndash niz promenjljivih okruženjabull $_REQUEST ndash niz promenjljivih korisnikabull $_SESSION ndash niz promenjljivih sesije

Konstante

Konstanta nosi vrednost isto kao i promenjljiva ali za razliku od promenjljive koja može da semenja u toku izvršavanja programa konstanta se ne menja Konstantu u programu možemo pisatikao vrednost bez ikakve oznake (na primer 314 za vrednost PI) ili da joj damo oznaku zapromenjljivu ali da je ne menjamo Ipak ako izradjujemo veliki sajt da ne bi došlo do grešaka izabuna poželjno je da definišemo konstante jednom za uvek Definisanje konstanti se vrši

funkcijom DEFINE na sledeći način

define (HLEB40)

define (PIVO50)

define (SALAMA100)

Kasnije kad nam treba konstanta u programu pozivamo je sa HLEB PIVO ili SALAMA Oznake zakonstante su bez znaka dolar ispred naziva Vrednosti naših gornjih konstanti redom su 40 50 100Poželjno je konstante pisati velikim slovima kako bi se uočavale ali mogu se pisati i malim slovima

PHP operatori

Kao i u matematici operatori omogućavaju izvršavanje operacija nad promenljivima i konstantamana primer sabiranja množenja itd Operatori se mogu pisati sa jednim dva ili tri znaka Postojesledeći tipovi operatora

bull Aritmetički operatoribull Operator nad znakovnim nizombull Operatori dodelebull Operatori poredjenjabull Logički operatoribull Operatori nad bitovima

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

bull Ostali operatori

Aritmetički operatori

983119983152983141983154983137983156983151983154 983118983137983162983145983158 983120983154983145983149983141983154

+ 983123983137983138983145983154983137983150983146983141 $983137 + $983138

983085 983151983140983157983162983145983149983137983150983146983141 $983137 983085 $983138

983149983150983151983422983141983150983146983141 $983137 $983138

983140983141983148983141983150983146983141 $983137 $983138

983117983151983140983157983148983151 $983137 $983138

Evo primera upotrbe operatora

$a = $b + $c

Znak minus se koristi i za označavanje negativnih brojeva

$a = - 1

Ne treba posebno objasnjavati ove operatore osim operatora modulo koji je možda nepoznatModulo vraća ostatak celobrojnog deljenja promenjljive $a promenjljivom $b Na primer

$a = 36

$b = 5

$c = $a $b Promenjljiva $c imaće vrednost 2 jer je 36 5 = 72

Aritmetički operatori se isključivo primenjuju nad brojevima

String operatori

Jedini operator nad stringovima je tačka Ovaj operator se koristi za spajanje dva i višeznakovna izraza u jedan Sve će biti jasnije nakon sledećeg primera

$a = Ana

$b = voli

$c = Bobana$rezultat = $a $b $c

Znakovna proemnjljiva $rezultat imaće vrednost Ana voli Bobana

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 4: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Vidljivost promenjljive

Sve promenjljive nisu vidljive svuda u skripti U PHP-u imamo sledeće vidljivosti promenjljive

1 Superglobalne promenjljive vidljive su svuda2

Globalne promenjljive vidljive su svuda u skripti ali ne i u funkciji koju smo izradiliTakodje nije vidljiva i fajlovima koji se umeću u tu skriptu iskazima include i require

3 Promenjljive unutar funkcije vidljive su samo u tu funkciju4 Promenjljive unutar funkcije koje definišemo kao globalne vidljive su kao globalne

Spisak superglobalnih promenjljivih je sledeći

bull $GLOBALS ndash niz svih globalnih promenjljivihbull $_SERVER ndash niz svih serverskih promenjljivihbull $_GET ndash niz promenjljivih koje se prosledjuju skripti metodom GETbull $_POST ndash niz promenjljivih koje se prosledjuju skripti metodom POSTbull $_COOKIE ndash niz kolačićabull $_FILES ndash niz promenjljivih koje sadrže razne tipove podataka pa i fajlove koje se prenose

internetombull $_ENV ndash niz promenjljivih okruženjabull $_REQUEST ndash niz promenjljivih korisnikabull $_SESSION ndash niz promenjljivih sesije

Konstante

Konstanta nosi vrednost isto kao i promenjljiva ali za razliku od promenjljive koja može da semenja u toku izvršavanja programa konstanta se ne menja Konstantu u programu možemo pisatikao vrednost bez ikakve oznake (na primer 314 za vrednost PI) ili da joj damo oznaku zapromenjljivu ali da je ne menjamo Ipak ako izradjujemo veliki sajt da ne bi došlo do grešaka izabuna poželjno je da definišemo konstante jednom za uvek Definisanje konstanti se vrši

funkcijom DEFINE na sledeći način

define (HLEB40)

define (PIVO50)

define (SALAMA100)

Kasnije kad nam treba konstanta u programu pozivamo je sa HLEB PIVO ili SALAMA Oznake zakonstante su bez znaka dolar ispred naziva Vrednosti naših gornjih konstanti redom su 40 50 100Poželjno je konstante pisati velikim slovima kako bi se uočavale ali mogu se pisati i malim slovima

PHP operatori

Kao i u matematici operatori omogućavaju izvršavanje operacija nad promenljivima i konstantamana primer sabiranja množenja itd Operatori se mogu pisati sa jednim dva ili tri znaka Postojesledeći tipovi operatora

bull Aritmetički operatoribull Operator nad znakovnim nizombull Operatori dodelebull Operatori poredjenjabull Logički operatoribull Operatori nad bitovima

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

bull Ostali operatori

Aritmetički operatori

983119983152983141983154983137983156983151983154 983118983137983162983145983158 983120983154983145983149983141983154

+ 983123983137983138983145983154983137983150983146983141 $983137 + $983138

983085 983151983140983157983162983145983149983137983150983146983141 $983137 983085 $983138

983149983150983151983422983141983150983146983141 $983137 $983138

983140983141983148983141983150983146983141 $983137 $983138

983117983151983140983157983148983151 $983137 $983138

Evo primera upotrbe operatora

$a = $b + $c

Znak minus se koristi i za označavanje negativnih brojeva

$a = - 1

Ne treba posebno objasnjavati ove operatore osim operatora modulo koji je možda nepoznatModulo vraća ostatak celobrojnog deljenja promenjljive $a promenjljivom $b Na primer

$a = 36

$b = 5

$c = $a $b Promenjljiva $c imaće vrednost 2 jer je 36 5 = 72

Aritmetički operatori se isključivo primenjuju nad brojevima

String operatori

Jedini operator nad stringovima je tačka Ovaj operator se koristi za spajanje dva i višeznakovna izraza u jedan Sve će biti jasnije nakon sledećeg primera

$a = Ana

$b = voli

$c = Bobana$rezultat = $a $b $c

Znakovna proemnjljiva $rezultat imaće vrednost Ana voli Bobana

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 5: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

bull Ostali operatori

Aritmetički operatori

983119983152983141983154983137983156983151983154 983118983137983162983145983158 983120983154983145983149983141983154

+ 983123983137983138983145983154983137983150983146983141 $983137 + $983138

983085 983151983140983157983162983145983149983137983150983146983141 $983137 983085 $983138

983149983150983151983422983141983150983146983141 $983137 $983138

983140983141983148983141983150983146983141 $983137 $983138

983117983151983140983157983148983151 $983137 $983138

Evo primera upotrbe operatora

$a = $b + $c

Znak minus se koristi i za označavanje negativnih brojeva

$a = - 1

Ne treba posebno objasnjavati ove operatore osim operatora modulo koji je možda nepoznatModulo vraća ostatak celobrojnog deljenja promenjljive $a promenjljivom $b Na primer

$a = 36

$b = 5

$c = $a $b Promenjljiva $c imaće vrednost 2 jer je 36 5 = 72

Aritmetički operatori se isključivo primenjuju nad brojevima

String operatori

Jedini operator nad stringovima je tačka Ovaj operator se koristi za spajanje dva i višeznakovna izraza u jedan Sve će biti jasnije nakon sledećeg primera

$a = Ana

$b = voli

$c = Bobana$rezultat = $a $b $c

Znakovna proemnjljiva $rezultat imaće vrednost Ana voli Bobana

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 6: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 615

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Operator dodele

Operator dodele je matematički znak jednakosti = Na primer

$masa = 5

Navedeni iskaz bi trebalo čitati promenjljivoj masi dodeljujemo vrednost 5

Možemo pisati izraze slične sledećem

$a = 2 + ($b = 3)

Vrednost promenjlive $a biće 5

Kombinovani operator dodele

Kombinovani operatori dodele su sledeći $a += 5

Isti je iskazu kao da smo napisali $a = $a +5

Pored kombinovanog operatora += postoje i sledeći

983119983152983141983154983137983156983151983154 983125983152983151983156983154983141983138983137 983109983147983158983145983158983137983148983141983150983156983137983150 983145983162983154983137983162983157

+983101 $983137 +983101 $983138 $983137 983101 $983137 + $983138

983085983101 $983137 983085983101 $983138 $983137 983101 $983137 983085 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

983101 $983137 983101 $983138 $983137 983101 $983137 $983138

Prefiksni i sufiksni operatori

Prefiksni i sufiksni operatori uvećanja imaju oznaku ++ a umanjenja --

$a = 10

echo ++$a

Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek onda se izvršava izrazecho$a Znači kao rezultat ovih izraza ispisaće se u našem slučaju 11 Potpuno identičan efekat imai prefiksni operator umanjenja naravno sa tom razlikom što se vrednost promenjljive $a umanjujeza 1

A sufiksno uvećanje (umanjenje) je sledeća logika

$a = 10echo $a++

U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači ispisuje se broj 10) panakon toga se vrednost promenjljive uvećava za 1 i dodeljuje promenjljivoj $a Tako na primer akonastavimo gornju skripticu sledećim izrazom

echo $a

Tek onda biće ispisan broj 11

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 7: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 715

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Sve isto se odnosi i na sufiksno umanjenje naravno samo što je upitanju umanjenje vrednostipromenjljive za 1

Referentni operator dodele

Oznaka za referencu je znak amp Efekat ovog operatora najbolje možemo objasniti na primeru

$a = 5

$b = $a

Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa $b E sad nakontoga u daljem toku programa ako promenimo vrednos promenjljive $a vrednost promenjljive $bkao što znamo i dalje će naravno ostati nepromenjena Medjutim ako napišemo ovako

$a = 5

$b = amp$a

Efekat će biti taj da ako u daljem toku programa promenimo vrednost promenjljive $a vrednostpromenjljive $b neće ostati nepromenjen već će i on biti automatski promenjen u novu vrednost

koju ima promenjljiva $a

Operatori poredjenja

Operator poredjenja ima simbol duplo jednako == Kao rezultat operatora poredjenja uvekdobijamo logičku vrednost true (istina) ili false (laž) u zavisnosti od rezultata poredjenja Akonapišemo

$a == $b

Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake Rezultat koji vraćaovaj izraz je true (istina) ako su jednake i false (laž) ako nisu jednake Operator jednakosti se lakobrka sa operatorom dodele i ako dodje do toga program neće raditi ono sto mi želimo Na primer

$a = 5

$b = 7

Rezultat izraza $a = $b biće TRUE jer operator = služi za dodeljivanje i u ovom našem slučajupromenjljivoj $a uspešno je program dodelio vrednost koju ima promenjljiva $b odnosno vrednost7 To je vrednost koja nije nula pa je logička vrednost tog iskaza TRUE Ako bi smo napisali $a == $brezultat bi bio FALSE jer 5 nije jednako 7 Kao što vidimo operator poredjenja i operator dodeledaju često kao rezultat suprotnu logiku i zato moramo voditi računa da ih ne pomešamo Postoji ioperator identičnosti čija je oznaka trostruko jednako === Operator identičnosti vraća TRUE akosu obe vrednosti jednake i istog su tipa Evo tabelarna prestava operatora poredjenja

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137

983101983101 983146983141983140983150983137983147983151 $983137 983101983101 $983138983101983101983101 983145983140983141983150983156983145č983150983151 $983137 983101983101983101 $983138

983101 983154983137983162983148983145č983145983156983151 $983137 983101 $983138

983100983102 983154983137983162983148983145č983145983156983151 $983137 983100983102 $983138

983100 983149983137983150983146983141 983151983140 $983137 983100 $983138

983102 983158983141ć983141 983151983140 $983137 983102 $983138

983100983101 983149983137983150983146983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983100983101 $983138

983102983101 983158983141ć983141 983145983148983145 983146983141983140983150983137983147983151 983151983140 $983137 983102983101 $983138

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 8: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 815

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 9: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 915

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Logički operatori

Želimo proveriti da li je vrednost promenjljive $a izmedju 10 i 100 Znači treba proveriti uslove $agt= 10 i $a lt= 100 To radimo upotrebom logičkog operatora konjukcije koji ima znak ampamp ili and

na sledeći način

$a gt= 10 ampamp $a lt= 100

Sve logičke operatore daću tabelarno

983119983152983141983154983137983156983151983154 983113983149983141 983125983152983151983156983154983141983138983137 983122983141983162983157983148983156983137983156

983150983141983143983137983139983145983146983137 $983138 983158983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 $983138 983142983137983148983155983141 983145 983151983138983154983150983157983156983151

ampamp 983147983151983150983146983157983147983139983145983146983137 $983137 ampamp $983138 983126983154983137ć983137 983156983154983157983141 983155983137983149983151 983137983147983151 983155983157 983145 $983137 983145 $983138 983156983154983157983141

983164983164 983140983145983155983146983157983150983147983139983145983146983137 $983137 983164983164 $983138 983126983154983137ć983137 983156983154983157983141 983137983147983151 983146983141 983145983148983145 $983137 983145983148983145 $983138 983156983154983157983141

983137983150983140 983147983151983150983146983157983147983139983145983146983137 $983137 983137983150983140 $983138 983113983155983156983151 983147983137983151 ampamp 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

983151983154 983140983145983155983146983157983150983147983139983145983146983137 $983137 983151983154 $983138 983113983155983156983151 983147983137983151 983164983164 983155983137983149983151 983150983145983422983145 983152983154983145983151983154983145983156983141983156

Ostali operatori

Ostali operatori su bull Operator zarez koristi se ze razdvajanje argumenata funkcija i stavki u spiskubull Operatori new i - gt koriste se za pravljenje objekta i za pristup članovima objektabull Operatori elementa niza [ ] omogućavaju pristupu elementima niza Koristi se i oznaka

=gt bull Uslovni operator ima oznaku Logika ovog operatora videćemo na primeru

($visina gt 200 $b=visok $b=nizak) Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost visok a akoje $visina manja od 200 onda $b dobija vrednost nizak Ako želimo da se odma rezultatispiše na ekran onda nam ne treba promenjljiva $b već izraz možemo napisati ovako

echo ($ocena gt 50 Položio Pao) bull Operator potiskivanja greške sa oznakom se koristi ispred izraza kad ne želimo da

posetioci sajta vide ispisivanje greške koja može nastati u toku izvršenja tog izraza Toispisivanje greške može odati bitne tajne podatke u vezi sajta

bull Operator izvršenja ima oznaku ` ` Radi se o paru inverznih polunavodnika Inverznipolunavodnik se nalazi na tastaturu gde i znak ~ PHP će izvršiti sve šta se nalazi izmedjuinverznih polunavodnika u komandnom okruženju na serveru izlazni podaci komandepretstavljaju vrednost izrazaNa UNIX serveru upotrebljava se$iz = `ls ndash la`

echo ltpregt$izltpregt A na windows serveru

$out = `dir c`

echo ltpregt$izltpregt

U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu $iz

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 10: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1015

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Prioritet operatora

Kada se u jednom izrazu nadju više operatora onda redosled po kojima će se izvršavati operatorizavisi od njihovog prioriteta Ukoliko dva i više operatora imaju isti prioritet onda se oni izvršavaju

sa leva na desno ili obrnuto u zavisnosti od toga koji su operatori u pitanju ndash što se nazivaasocijativnost Sada će mo dati tabelu prioriteta operatora i to tako da najmanji prioritet imajuoperatori pri vrhu a najveći pri dnu tabele Napomena da smo sa nb u tabeli označili ukoliko jeasocijativnost takva da je sve jedno da li se izvršava sa leva na desno ili sa desna na levo

983105983155983151983139983145983146983137983156983145983158983150983151983155983156 983119983152983141983154983137983156983151983154983145

983116983141983158983151

983116983141983158983151 983151983154

983116983141983158983151 983160983151983154

983116983141983158983151 983137983150983140

983108983141983155983150983151 983141983139983144983151 (983145983148983145 983152983154983145983150983156)

983116983141983158983151 983101 +983101 983085983101 983101 983101 983086983101 983101 amp983101 983164983101 983134983101 983166983101 983100983100983101 983102983102983101

983116983141983158983151 983103

983116983141983158983151 983164983164

983116983141983158983151 ampamp

983116983141983158983151 983164

983116983141983158983151 983134

983116983141983158983151 amp

983150983138 983101 983101 983101 983101983101983101

983150983138 983100 983100983101 983102 983102983101

983116983141983158983151 983100983100 983102983102983116983141983158983151 + 983085

983116983141983158983151

983108983141983155983150983151 983166 ++ 983085983085 (983145983150983156) (983140983151983157983138983148983141) (983155983156983154983145983150983143) (983137983154983154983137983161) (983151983138983146983141983139983156) 983104

983108983141983155983150983151 983131983133

983150983138 983150983141983159

983150983138 ( )

Najveći prioritet ima mala zagrada zato uz pomoć malih zagrada možemo zaobići prioritete takošto ako želimo da se prvo izvrši nešto manjeg prioriteta stavimo to u malim zagradama Na primer

$a = (5 + 2) 7

Vrednost promenjljive biće 49 a da smo napisali

$a = 5 + 2 7

Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7 2 pa nakon toga rezultattoga će se sabrati sa 5 U prvom slučaju zbog zagrada će se prvo izvršiti sabiranje pa nakon togarezultat sabiranja će se pomnožiti sa 7 Možemo koristiti neograničen broj malih zagrada i uvek ćese prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše ugnježdena

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 11: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1115

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Funkcije za obradu promenjljivih

gettype ()

gettype () funkcija utvrdjuje kog je tipa promenjljiva i vraća naziv tipa promenjljive Naziv tipapromenjljive može biti sledeći

bull booleanbull integerbull doublebull stringbull arraybull objectbull resourcebull NULLbull unknown type - ako je tip promenjljive nepoznat

Evo primera $a= 412

echo gettype($a) Rezultat će bitidouble Za razliku od funkcije gettype () koja ispituje tipove promenjljivih i koja kao rezultat vraća imetipa promenjljive postoje i funkcije koje ispituju tačno odredjene tipove promenjljivih i vraćajulogički true ako je promenjljiva tog tipa ili false ako nije Te funkcije su

bull is_array - utvrdjuje da li je promenjljiva nizbull is_double is_float is_real (sve je to ista funkcija) - ispituje da li je promenjljiva realan

brojbull is_long is_int is_integer (takodje je sve to ista funkcija) - ispituje da li je promenjljiva

ceo brojbull

is_string - ispituje da li je promenjljiva stringbull is_object - ispituje da li je promenjljiva objekat

settype ()

Funkcija settype () ima sledeći oblik

settype ($a string) settype () menja tip promenjljive $a iz prvog argumenta u tip promenjljive koji je naveden udrugom argumentu funkcije koji je pod navodnicima U našem slučaju je tipa string Evo primer

$a=412

settype($a integer)

echo $a Rezultat

4 Postoje i funkcije koje menjaju tip promenjljive u tačno odredjen tip Evo tih funkcija

bull intval ($a) - menja vrednost u ceo brojbull doubleval ($a)

- menja vrednost promenjljve u realan brojbull strval ($a) - menja vrednost u string

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 12: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1215

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Ispitivanje i promena stanja promenjljive

Te funkcije su

bull

isset ($a)

funkcija vraća true ako je promenjljiva definisana a ako nije vraća falsebull unset ($a) čini nedefinisanom promenjljivu $abull empty ($a)

vraća true ako nije definisana promenjljiva $a ili ako je vrednost promenjljivenula a u suprotno ako je vrednost promenjljve različita od nule i definisana je vraća false

PHP strukture grananja

IF

Kroz primer je najlakše objasniti

if ( $a gt 0 ) echo vrednost je veća od nule i ona je $a Znači ukoliko vrednost promenjljive $a veća od nule izvršiće se echo iskaz a u suprotno neće

Blok iskaza

U prethodnom primeru za iskaz IF videli smo da ako je uslov zadovoljen izvršava se samo jedaniskaz Ukoliko želimo da izvršimo više od jednok iskaza nakon što je uslov zadovoljen moramokoristiti BLOK ISKAZA Blokom iskaza se naziva skup iskaza smeštenih u vitičastim zagradama tojest izmedju Da bi smo ovo objasnili uzmimo prethodni primer i proširimo ga sa još jednimizrazom na primer pored ispisivanja treba da se i kvadrira promenjljiva ukoliko je uslovzadovoljen

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

Znači ako je uslov ispunjen svi iskazi unutar vitičastih zagrada biće izvršeni a ako nije uslovispunjen svi će biti preskočeni Ovde smo došli do još jednog momenta Kao što znamo iskaz ltbrgtje u HTML iskaz koji služi da se sledeći ispis na koji se naidje ispiše u novi red Naime ranije smorekli da unutar PHP programa mogu da se implementiraju i HTML iskazi i to sad vidimo Dakle kaošto vidimo implementira se preko echo ili print naredbi i to tako što HTML iskaze stavimo unutarnavodnika

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 13: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1315

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

Iskaz ELSE

Iskaz ELSE omogućava izvršenje iskaza ukoliko iskaz IF nije ispunjen U prethodna dva primera videlismo da ako uslov IF nije bio ispunjen samo se preskače blok iskaza Sad će mo uvesti u novom

primeru mogućnost da ako uslov nije ispunjen da se ispiše poruka ne postoji vrednost promenjljiveili je jednaka nuli i u istom bloku da dodelimo vrednost promenjljivoj $a na primer 100

if ($a gt 0)

echo vrednost je veća od nule i ona je

$a

ltbrgt

$kvadrat = $a $a

echo a kvadrat te vrednosti je

$kvadrat

else

echo vrednost je manja ili jednaka nuli

$a = 100

Ako treba izvršiti samo po jedan iskaz onda nije neophodno koristiti blokove Na primer

if ($agt0) echo promenjljiva je veća od nule

else echo promenjljiva nije veća od nule

Iskaz ELSE IF

Po nekad treba doneti i više od dve odluke U tom slučaju se koristi ELSE IF uslov Ajde da vidimona primeru

Za veće kupovine daje se popust

bull Za manje od 5 kupljenih artikla nema popustabull 5 do 10 ndash popust 10bull 11 do 15 ndash popust 12bull

16 i više - popust 15

Evo kako bi izgledao kod

if ($količina lt 5) $procenat = 0

else if ($količina gt 4 ampamp $količina lt 11) $procenat = 10

else if ($količina gt 10 ampamp $količina lt 16) $procenat = 12

else ($količina gt 15) $procenat = 15

Ovde uslovi jedan drugi isključuje pa će se izvršiti samo jedan ali ako se uslovi preklapaju bićeizvršen onaj na koga se prvo naidje a ostali će biti preskočeni

SWITCH uslov

Takodje i iskaz SWITCH odlučuje izmedju više od dve opcije Upotrebićemo prethodni primer

switch ($količina)

case ($količinalt5)

$procenat=0

break

case ($količinagt4 ampamp $količinalt11)

$procenat=10

break

case ($količinagt10 ampamp $količinalt16)

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 14: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1415

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

$procenat=12

break

default

$procenat=15

break

Napravimo program koji će brojeve od 1 do 5 imenovati a ako je u pitanju neki drugi broj izvanskupa od 1 do 5 da ispiše vrednost promenjljive nije iz skupa jedan do pet

switch ($a)

case 1

echo jedan

break

case 2

echo dva

break

case 3

echo tri

break

case 4

echo četri

break

case 5

echo pet

break

default

echo vrednost promenjljive nije iz skupa od jedan do pet

break

Umesto na primer case 1 možemo pisati i neki matematički izraz ako je neophodno pa tako bibilo na primer

case ($b 25 + 4)

Isto može na primer i neki ovakav program da se pojavi nekad

switch ($x)

case ($y 4)

case (9 3)

echo Zapamti

break

default

echo Zaboravi

Dakle mogu da se pojave vise CASE naredbe sa jednom BREAK naredbom

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte

Page 15: PHP i MySQL Deo 1 Advance

7262019 PHP i MySQL Deo 1 Advance

httpslidepdfcomreaderfullphp-i-mysql-deo-1-advance 1515

Advance reg Creative Training Center Centar za Edukaciju

983120983154983141983140983137983158983137č983098 983126983148983137983140983145983139983137 Đ983151983154đ983141983158983145ć983084 983158983148983137983140983137983140983146983091983089983104983143983149983137983145983148983086983139983151983149 983156983141983148 983088983094983091983089983097983095983097983093983096983097

WHILE petlja

Kao i

IF

i ona ima logički uslov Razlika izmedju

while

petlje i

IF

uslova je u tome što

IF

izvršava

odredjeni iskaz ili blok iskaza ako je uslov ispunjen jednom a while petlja izvršava blok koda sve

dok je uslov ispunjen

While

petlja se koristi kada neznamo unapred broj iteracija Kada je poznatbroj iteracija obično se koristi for petlja

jer je brža Kao primer ispišimo brojeve od 10 do 20

$a=10

While ($a lt 21)

echo $a ltbrgt

$a++

PHP petlje

FOR petljeNapišimo for petljom brojeve od 10 do 20

for ($i=10 $i lt 21 $i++)

echo $i ltbrgt

Rezultat bi bio ispisivanje brojeva jedan ispod drugog od 10 do 20

Znači FOR petlja se sastoji od FOR strukture i blok iskaza FOR struktura ima tri nazovimoparametara Prvi parametar je brojač petlje (promenjljiva $i) koji uzima vrednost početkabrojanja Drugi parametar je uslov do kog broja treba brojati i treći parametar je za koju vrednostse brojač povećava nakon svake iteracije Blok petlje se izvršava svaki put kad se poveća vrednostbrojača Parametri se odvajaju tačka zarezom

DO WHILE petlja

Petlja DO WHILE se razlikuje od petlje WHILE po tome što se logički uslov nalazi na kraju Značiiskaz ili blok iskaza unutar petlje do while će se izvršiti bar jednom iako se možda logički uslovnikad neće ispuniti Evo i primera

$broj=1

do

echo $broj

ltbrgt

While ($brojlt1)

Izlaz iz petlje

I pre ostvarivanja uslova petlje može se izaći iz nje iskazom BREAK Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje Iskaz CONTINUEse koristi ako želimo momentalno krenuti na sledeću iteraciju petlje Iskaz EXIT se koristi kada seželi prekinuti izvršenje čitave skripte