Advance ® Creative Training Center Centar za Edukaciju č Đđć Č Č
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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