Anda di halaman 1dari 39

Hadi-erina 2, tel.011/244-77-81 Hadi-erina 2, tel.

011 / 244 77 81
Cvijieva 98, tel. 011/275-42-23
Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs
www.systempro.co.rs
e-mail: office@systempro.co.rs
e-mail: office@systempro.co.rs

SADRAJ 2.11.3 WHILE petlja ........................................................................... 34 2.11.4 DO-


WHILE petlja ....................................................................... 35 2.11.5 FOR
1. HTML - osnove ......................................................................................5 petlja .............................................................................. 35 2.11.6
1.1 Uvod ..............................................................................................5 1.2 ta je include .................................................................................. 36 2.11.7
HTML? ....................................................................................5 1.3 ta je sve potrebno include_once ........................................................................... 36 2.11.8
da bismo napravili HTML stranicu?..................................6 1.4 HTML require .................................................................................. 36 2.11.9
tagovi .....................................................................................6 1.5 esto korieni HTML require_once ........................................................................... 36
tag-ovi ................................................................8
1.5.1 Komentar ...................................................................................8 1.5.2 A 3. HTML Forme (Forms)............................................................................. 37
tag ........................................................................................8 1.5.3 Img 3.1 Form tag ....................................................................................... 37 3.2 Input
tag.................................................................................... 10 1.5.4 Br tag ....................................................................................... 38 3.3 Primeri formi
tag ..................................................................................... 11 1.5.4 Specijalni 1 ............................................................................... 40 3.4 Label
karakteri..................................................................... 12 1.5.5 Font tag....................................................................................... 40 3.5 Select
tag................................................................................... 12 1.5.6 B tag...................................................................................... 41 3.6 Option
tag ...................................................................................... 14 1.5.7 I tag ..................................................................................... 41 3.7 Textarea
tag ....................................................................................... 14 1.5.8 U tag .................................................................................. 41 3.8 Primeri formi
tag ...................................................................................... 14 1.5.9 Sub i sup tag- 2 ............................................................................... 42
ovi......................................................................... 14
1.6 Tabele.......................................................................................... 15 4 Prosleivanje parametara u PHP-u ............................................................. 44
1.6.1 Table tag ................................................................................. 16 1.6.2 Tr 4.1 GET metoda ................................................................................... 45 4.2 POST
tag ..................................................................................... 17 1.6.3 Td metoda.................................................................................. 46
tag ..................................................................................... 17 1.6.4 Th
tag ..................................................................................... 18 1.6.5 Primeri 5 Uvod u MySQL ...................................................................................... 48
tabela ........................................................................... 18 5.1 ta je relaciona baza podataka ............................................................ 48 5.2 ta je
1.7 Liste ........................................................................................... 19 MySQL? ................................................................................. 51 5.3 ta su
1.7.1 Ol tag ..................................................................................... 19 1.7.2 Ul upiti? ................................................................................... 51 5.4 Objanjenje
tag ..................................................................................... 19 1.7.3 Li terminologije baze podataka ............................................... 52 5.5 Tipovi podataka u
tag ...................................................................................... 19 1.7.4 Primeri sortiranih i tabelama................................................................ 53
nesortiranih lista ................................................ 20 5.5.1 Numeriki tipovi podataka ............................................................ 53 5.5.2
MySQL tipovi datuma i vremena ...................................................... 54
2. PHP - Uvod ........................................................................................ 21 5.6 Selektovanje (itanje) podataka - SELECT .............................................. 55 5.7
2.1 ta je PHP? .................................................................................... 21 2.2 Kako Upisivanje novih podataka u tabele - INSERT........................................... 59 5.8 Izmena i
funkcionie PHP?....................................................................... 22 2.3 ta je potrebno da brisanje podataka - UPDATE, DELETE......................................... 60
bismo napravili i pokrenuli PHP stranicu na svom raunaru?.. 22 2.4
XAMPP .......................................................................................... 22 2.5 PHP 6 Povezivanje PHP-a i MySQL-a.................................................................... 63
Editori .................................................................................... 23 2.6 PHP tagovi - <?php 6.1 itanje podataka iz MySQLa, manipulacija i UPDATE .................................. 63
i ?> ...................................................................... 24 2.7 Naredba
echo ................................................................................. 24 2.8 7 PHP Funkcije ....................................................................................... 67
Komentari ..................................................................................... 26 2.9 Promenljive 7.1 Array funkcije................................................................................. 67 7.2 Funkcije za
(varijabile)..................................................................... 26 rad sa datumima i vremenom ............................................... 68 7.3 Direktorijumske
2.9.1 Dodeljivanje vrednosti promenljivoj ................................................ 27 2.9.2 funkcije.................................................................... 70 7.4 Fajl
Korienje vrednosti promenljivih ................................................... 28 funkcije .................................................................................. 71 7.5 FTP
2.10 Tipovi podataka ............................................................................. 29 Funkcije .................................................................................. 73 7.6 MySQL
2.10.1 Celi brojevi ............................................................................. 29 2.10.2 Realni funkcije ............................................................................... 73 7.7 Regularni
brojevi .......................................................................... 29 2.10.3 Tekstualni podaci Izrazi ............................................................................... 74 7.8 String
(string) ............................................................ 30 2.10.4 Logike funkcije ................................................................................ 75 7.9 Funkcije za rad sa
promenljive .................................................................. 31 promenljivama ........................................................ 76
2.11 Kontrolne strukture ........................................................................ 31
2.11.1 IF...ELSE ................................................................................ 32 2.11.2
SWITCH .................................................................................. 33
strana 2
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

strana 3 strana 4
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

HTML je pasivan jezik, bez mogunosti programiranja. Meutim, u kombinaciji sa


1. HTML - osnove jezicima kao to su JavaScript, PHP, ASP i drugi, web stranica se moe napraviti tako da nema
formu obinog ili ak multimedijalnog dokumenta, ve prave web aplikacije u kojoj se
1.1 Uvod izvravaju naredbe, itaju podaci iz baze podataka, vri interaktivna komunikacija sa
korisnikom itd. Kod bilo kojeg od navedenih jezika moe biti ugraen u HTML stranicu, ili initi
Vrlo esto smo u svakodnevnom ivotu u kontaktu sa Internetom, bilo da ga direktno
posebnu celinu.
koristimo ili posredno dobijamo informacije preko njega. Sa pojavom povezivanja raunara u
takozvane mree pojavila se i potreba za prikazivanjem i razmenjivanjem raznih informacija. Osnove internet programiranja, realno, sve vie postaju "bukvar" za rad na raunaru, a
Sa razvojem Interneta dolo je do pojave nove vrste dokumenata - hiperteksta. To je tekst koji kad se jednom savladaju, njihovo poznavanje moe doneti velike prednosti.
sadri veze ili linkove ka drugim dokumentima ili na samog sebe. Preciznije, hipertekst je
skup stranica u obliku datoteka, meusobno povezanih linkovima koje su umetnute u 1.3 ta je sve potrebno da bismo napravili HTML stranicu?
stranice. Na ove linkove se moe kliknuti. Za razliku od obinog teksta, koji se ita linearno Sve to je potrebno praktino ve postoji na raunaru:
(sleva na desno, odozgo nanie), hipertekst se ita pratei hiper-veze u tekstu, dakle, ne - bilo koji tekst editor (npr. Notepad)
nuno na linearan nain. Pored hiperteksta, sa razvojem mrea pojavile su se potrebe za - Web browser (npr. Internet Explorer, Firefox, Opera...).
prenoenjem slike, zvuka i generalno multimedijalnih sadraja. Poeljno je da nabavite vie web browser-a kao biste izgled vae prezentacije proverili u
Protokol koji obezbeuje prenos stranica i sadraja (slika i zvuka) je HTTP (HyperText njima (razliiti browser-i razliito tumae neke HTML tagove).
Transfer Protocol) i najee koristi port 80 ili 8080 (mogu se koristiti i drugi portovi). Raunari
koji obezbeuju dostupnost internet stranica se zovu serveri i oni su najee 24 asa 1.4 HTML tagovi
povezani u internet mreu. Na njima postoji program koji nama na zahtev itaa stranica HTML komande se piu u vidu tzv. tag-ova. Tagovi su neto slino komandama i
(browser) prosleuje traeni sadraj. Taj program se zove Web Server. funkcijama u programskim jezicima, ali ipak dovoljno razliiti. Svaki tag govori itau stranica
ta treba da uradi sa tekstom, slikom ili drugom vrstom sadraja, odnosno na koji nain da ih
1.2 ta je HTML? prikae korisniku u browseru.

HTML (HyperText Markup Language) je jezik koji se koristi za izradu statikih web stranica Tagovi se piu izmeu znakova < i >. Sve to se ne nalazi izmeu < i > prikazuje se
(dokumenata). Ve decenijama se pri projektovanju reenja za Web vri oslanjanje na njega onako kako je napisano. HTML tagovi su "case insensitive" tj. svejedno je da li ih piete
kao optu podlogu jer je jednostavno koncipiran i vrlo praktian, tako da svi browseri mogu malim ili velikim slovima.
da ga interpretiraju. HTML je jezik pomou koga se kombinuju slike, tekst, veze izmeu Postoje dva tipa tag-ova
dokumenata i zvuni zapisi u lako dostupnu formu, a sadraj internet stranica se uglavnom - poetni tag - oznaava se sa <naziv_taga>
prenosi u kodu HTML-a. Dokumenti na web-u se preteno nalaze u HTML obliku, ili u obliku - zavrni tag - oznaava se sa </naziv_taga>
PHP, ASP, JSP dinamikih web stranica u kojima se takoe koristi HTML. Tagovi se uglavnom pojavljuju u paru (poetni i zavrni tag). Dejstvo tag-a se protee
Uobiajeno je da se HTML datoteke zavravaju sa dodatkom na ime datoteke ".htm" ili od poetnog do zavrnog tag-a.Postoje tagovi kod kojih ne morate da stavljate zavrsni
".html". Najee ete nailaziti na dadoteke sa upravo ovakvim dodatkom na ime. To se sve tag , npr. tag <br> koji slui za prelazak u novi red ili tag <img> koji slui za ubacivanje slike
moe drugaije podesiti na web serveru, ali najee se upotrebljava upravo ova konvencija u HTML stranicu.
za zadavanje dodatka imena datoteke. Slike koje se esto koriste u okviru HTML dokumenata U okviru taga se nalaze opcije koje preciznije odreuju sam tag i kako ita stranica tu
su sa dodacima na ime datoteke ".gif" i ".jpg", meutim, u poslednje vreme sve se vie koristi informaciju treba da predstavi na ekranu. Ova objanjenja se nazivaju atributi i slue da
format ".png", jer su dva predhodna formata zvanino licencirana, a png je jo uvek detaljnije opiu dati tag. Posle svakog atributa se stavlja znak jednakosti koji slui za dodelu
besplatan. O samim formatima nee biti puno prie, ali bi trebalo napomenuti da se za slike vrednosti datom atributu, dok se vrednost atributa obavezno stavlja izmeu
sa velikim povrinama istih boja preporuuje upotreba "gif", a za fotografije upotreba "jpg" dvostrukih navodnika. Npr:
formata. Mora se imati na umu da konekcije korisnika ka internetu variraju po brzini, pa je
veliina slika (mesto na disku koje zauzimaju) jako bitna stavka kod izrade HTML dokumenta. <center> Tekst </center>
<br>
Za razvoj HTML-a zaduen je W3C (World Wide Consortium), a u novijim varijantama <body bgcolor="yellow"> Neki tekst! </body>
HTML-a tei se razdvajanju sadraja dokumenta od njegove prezentacije, i to kroz upotrebu <font face="Comic Sans MS"> Va tekst </font>
CSS-a (Cascading Style Sheets). Pomou njega, mogua je promena izgleda dokumenta bez
pristupa sadraju, na izuzetno pregledan i jednostavan nain. Minimalna struktura HTML dokumenta obuhvata tagove:
<HTML>, </HTML> - zagrade HTML-teksta;
<HEAD>, </HEAD> - zagrade zaglavlja, sadri meta-definicije HTML-dokumenta;
strana 5 <TITLE>, </TITLE> - zagrade za naziv HTML-dokumenta i
<BODY>, </BODY> - zagrade teksta obeleenog dokumenta.
strana 6
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Svaki HTML dokument se sastoji od dva dela: zaglavlja (engl. head) i tela (engl. body). Vebanje: Iako e to biti kasnije detaljno raeno, probajte da podeavate pozadinsku boju
Zaglavlje se odvaja tagovima <head> i </head> a telo dokumenta tagovima: <body> i ili pozadinsku sliku sajta, u okviru body taga.
</body>. Sve ono sto se napie u zaglavlju dokumenta nee se prikazati u prozoru browsera <BODY BGCOLOR="#FFFFFF">
ve obino slui samo da prui neke informacije o stranici kao to su naslov stranice, "meta" neki kratak tekst
tag-ovi kao i stilovi i skripte. </BODY>
Sve ono to je napisano izmeu tagova <body> i </body> predstavlja telo dokumenta
pojavie se kao sadraj prezentacije u prozoru browsera. <BODY BACKGROUND="slicica.gif"> neki kratak tekst </BODY> ,gde se slika nalazi na
istom mestu gde i sam sajt ili se ispred njenog imena nalazi putanja do nje.
Izgled stranice:
<html> <BODY BGCOLOR="#A067FE">
<head> <title> Ovo <U> je </U> neki <I>kratak</I> i neobican<B>tekst</B>
ovde je naziv prezentacije </BODY>
</title> </head>
Oigledno je da tag <U> znai podvuen, tag <B> bold, a tad <I> italic tekst.
<body>
ovde se unosi sve ono sto zelite da se vidi u prezentaciji
</body> </html> 1.5 esto korieni HTML tag-ovi
1.5.1 Komentar
Body tag ima nekoliko opcija koje se mogu navesti unutar njega. To su:
Komentar u HTML dokumentima se ne prikazije na samom dokumentu u korisnikom
prozoru, ali olakava snalaenje unutar HTML datoteke za dizajnere, programere i one
koji e eventualno neto menjati u samoj datoteci. Kod za komentar je:
alink <!-- ovde je komentar koji se ne vidi na ekranu -->
text U okviru komentara moe se ak pisati i vie redova. Jako je bitno stavljati komentare
vlink za lake snalaenje u velikim kodovima.
link
Sa ove etiri opcije mogue je podesiti boje aktivnog linka (link koji smo pozvali i 1.5.2 A tag
ekamo da se uita), boju teksta u okviru tela HTML dokumenta, boju poseenog linka i boju Jedan od najbitnijih tag-ova svih HTML datoteka i internet stranica je link. To je veza
linka pre njegovog pozivanja. U sluaju da ne stavimo nikakve vrednosti ovih opcija korisnik izmeu internet stranica. Najbitnije je svatiti osnovu anchor tag-a. Osnovna namena link-a je
e videti boje koje su podeene na njegovom itau internet stranica. da povee dve internet stranice, bilo tako to e jednu stranicu zameniti sa drugom u istom
prozoru, bilo tako to e pozvati novu internet stranicu u drugom
background prozoru. Postoji i mogunost pozicioniranja u okviru same stranice na unapred zatatu
bgcolor poziciju. Osnovni izgled tag-a je:
Ove dve opcije nam omoguavaju da kontroliemo pozadinu internet stranice. Prva <a href="druga.html">Druga strana</a>
opcija nam omoguava da uitamo pozadinsku sliku. U tom sluaju navodimo putanju do
slike (apsolutno ili relativno, pogledati detaljnije objanjenje pod anchor tag-om). U navodnicima u okviru link tag-a navedeno je ime dokumenta koji se poziva. Na ovaj
Druga opcija nam omoguava da postavimo odreenu boju pozadine. Moe se navesti nain poziva se internet stranica pod nazivom druga.html u istom prozoru. To bi otprilike
jedno od ponuenih imena boja, ili navesti tana boja u hex-a zapisu. izgledalo kao na sledeoj slici.
bottommargin
leftmargin
marginheight
marginwidth
rightmargin
topmargin
Navedene opcije slue za podeavanje margina dokumenta. Merenje se vri od levog
gornjeg ugla dela ekrana u kome se internet stranica prikazuje.

strana 7 strana 8
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

glavnom prozoru (ako je u glavnom prozoru vie roditeljskih prozora, a u njima jo


Kada se miem doe iznad teksta "druga strana" na samoj stranici prikazae se ruica sa roditeljskih prozora). Pod apostrofima se u tim sluajevima pie: "_self", "_blank", "_parent" i
ispravljenim kaiprstom i klikom na to mesto uitae se druga stranica. "_top". To su etiri opcije koje se mogu upisati u target opciju. Postoji mogunost definisanja
Najbitnije opcije koje se mogu dodati anchor tag-u su sledee: odreenog imena prozora u target opciji. Ime prozora se moe
zadati ili u okviru definisanja okvira ili u skripti (ako nam skripta otvara novi prozor).
href
1.5.3 Img tag
Slui za zadavanje imena druge strane. Ime se moe zadati apsolutno i relativno. Apsolutno Img tag nam slui za postavljanje slika na na dokument. Kao to je ve jednom
ime se zadaje kompletnom putanjom do dokumenta, npr. pomenuto, mora se voditi rauna da se stranica ne zatrpa sa slikama da se ne bi korisnik koji
"http://www.systempro.co.yu/druga.html". Primer relativnog zadavanja imena je pokuava da uita vau stranicu posle desetina sekundi okrene i ode sa vae prezentacije.
"druga.html". Kod relativnog zadavanja imena stranice mora se voditi rauna o lokaciji same Ako se eli na nekoj stranici prikazati vie slika (npr. foto album) najbolje reenje je da se
datoteke u odnosu na datoteku iz koje se link poziva. naprave manje slike i da se klikom na manju sliku omogui uitavanje prave slike, ili u
Za primer sa slike gde se u "www" direktorijumu nalazi "prva.html" internet stranica, a u zasebnom ili u istom prozoru. Mogue je i napraviti od same slike vezu do drugog
direktorijumu "neki_dir" nalazi datoteka "druga.html" kod anchor-a bi bio sledei: dokumenta. To se radi tako to se izmeu a tag-a definie slika sa img tag- om.
U okviru img tag-a mogu se dodati sledee opcije:
<a href="neki_dir/druga.html">Druga strana</a>
src
U navodnicima se navodi putanja do same slike za prvu opciju (apsolutno ili relativno).
Najee poetnike greke koje se javljaju kod imena slika je taj da web serveri su esto na
linux operativnom sistemu koji pravi razliku izmeu malih i velikih slova. Zbog toga se
mora voditi rauna o pravom imenu i trebalo bi izbegavati prazan karakter u imenima slika.
width
height
Ako bi eleli da na drugoj stranici stavimo link na prvu, mogli bismo to uraditi sledeim
kodom: Kod ovih parametra moe se postaviti irina (visina) prikaza slike na ekranu. Za sluaj da
je prava irina (visina) slike razliita od zadate moe se desiti da se slika na ekranu
<a href="../prva.html">Prva strana</a>
deformie i da ne izgleda kao to u stvarnosti izgleda. Jedinica mere u kojima se zadaje
Dakle direktorijumi se pozivaju svojim imenom, nakon ega sledi znak "/", a povratak u vrednost je pixel. To je veliina najmanje take koju moe ekran da prikae. Mora se
prethodni direktorijum sa "../". voditi rauna da slika koja je na nekom monitoru zauzima ceo ekran, na drugom
monitoru moe biti prikazana na delu ekrana, a na treem se moe videti samo deo slike.
Postoji i opcija u okviru "href" opcije za zadavanja skoka na odreeni deo strane. Na
primer, ako imamo tekst od desetak stranica i sastavljen od vie zasebnih celina. Ako bi border
dozvolili sa na primer same stranice korisniku da izabere pozicioniranje na vrh teksta
koji ga zanima to bismo mogli da izvedemo sledeim kodom: Veliina granice koja se iscrtava oko same slike. Najea vrednost je "0" jer najee ne
elimo da oko slike postoji bilo kakva dodatna linija. U sluaju da elimo granicu oko nae
<a href="#1">Tekst 1</a>
slike moemo postaviti neku drugu vrednost. Jedinice mere su opet pixeli.
<a name="1">Tekst 1</a>
I sada ovde ide neki tekst alt
U prvoj liniji moe se videti da putanja nije do same datoteke, ve se navodi karakter Tekst koji se navodi u ovoj opiciji slui da u sluaju ne mogunosti prikaza slike (bilo da
"#" pa onda ime, u konkretnom sluaju "1". To isto ime se koristi u drugoj liniji, ali samo kao je korisnik podesio opciju da se slike ne uitavaju, bilo da njegov program ne podrava
ime anchor tag-a. Na taj nain HTML stranica nam omoguuje brzo pronalaenje sadraja u tu opciju, ili je slika sa naeg servera obrisana, ili je promenjeno ime slike) bude ispisan na
okviru same stranice, ako postoji link na taj sadraj. ekran na mestu gde bi slika trebalo da bude.
target align
"Target" opcija se najee koristi kod okvira (frame), ili u sluajevima kada hoemo da Ova opcija podeava poravnanje slike u odnosu na sam tekst.
preciziramo gde elimo da se pozvana stranica otvori. Pozvana stranica se moe otvoriti u hspace
samom prozoru iz koga je pozvana, u praznom (novom) prozoru, u prozoru roditelju i u
strana 9 strana 10
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

vspace
Pomou ove dve opcije moe se podesiti rastojanje od teksta po horizontali odnosno
HTML primer koda 1 HTML primer koda 2
vertikali. Jednica mere je i u ovom (kao i u veini sluajeva) sluaju pixel.
<body> <body>
Primer HTML koda koji prikazuje jednu sliku i izgled stranice (slika 3.4.): Ovo je prvi red Ovo je prvi red<br>
Ovo nije drugi red Ovo je drugi red
<html>
</body> </body>
<head>
<title>Test</title>
</head> 1.5.4 Specijalni karakteri
<body> Karakteri kao to su prazan znak, znaci navoda, vee od, manje od i drugi koriste se u
<img src="images/aponcom.gif" width="151" height="37" border="0" alt="apon"> samom HTML kodu. Da bi ti karakteri bili prikazani na ekranu koristi se poseban nain
</body> </html> njihovog predstavljanja u kodu. Pregled neki specijalnih znakova je u tabeli:
razmak &nbsp;
& &amp;
&copy;
< &lt; &gt;
> &frac12;
&reg;
&deg;
&#149;
&#153;
&plusmn;

Vebanje: Pronaite neku sliku u Vaem kompjuteru, ubacite je u Vau internet stranu, itd.
i pokuajte da joj menjate parametre width i height.
1.5.5 Font tag
Podseamo, oko slike-linka esto moete dobiti runu plavu liniju. Oslobodiete je se
Font tag je jedan od osnovnih tag-ova za rad sa tekstom. U okviru opcija moe se
ako podesite parametar border na vrednost 0. podesiti boja, veliina i izgled slova. Za napredniji izgled samog teksta koristi se CSS, tako da
je sam tag skoro izaao iz upotrebe.
1.5.4 Br tag
Ako se eli da stranica bude ispisana na primer "Comic Sans MS" fontom onda treba
Ako napiete neki tekst u HTML dokumentu, bez obzira to ste pritisnuli taster "enter",
na ekranu neete videti novi red. Da bi ste naterali HTML datoteku da prikae novi red navesti sledei kod:
kada vi elite morate dodati br tag. Primer izgleda dela HTML koda u prvom i drugom <font face="Comic Sans MS"> Ovde dodje vas tekst. </font>
sluaju moete videti na slici 4.1. Ovo je jo jedan tag koji nema zavrni tag.
i dobija se rezultat
Ovde dodje vas tekst.
Ako se koriste fontovi koji nisu ire rasprostranjeni, bilo dobro navesti i nekoliko
alternativnih fontova, jedan za drugim, odvojenih zarezom. Ako posetilac stranice na
svom raunaru nema instaliran prvi font sa liste, on e koristiti sledei sa liste, itd.
<font face="Comic Sans MS,Arial,Courier">
Evo primera nekoliko popularnih fontova koje moete koristiti na svojim stranicama:
Verdana
Arial
Courier

strana 11 strana 12
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Times New Roman Pored boje i naina ispisivanja teksta, u okviru stranice moe se upravljati i veliinom slova.
Comic Sans MS Za ove potrebe koristi se size atribut unutar font taga. HTML razlikuje 7 veliina slova koje
nose vrednosti od 1 do 7. Podrazumevana veliina je 3.
Primer:
Primer HTML stranice:
<html>
<head>
<title>Test</title>
</head>
<body>
<font face="Arial" color="Aqua" size="+1">Tekst sa definicijom</font> i tekst bez
definicije
</body> </html>

Poslednja osobina koja se moe menjati je boja slova u okviru HTML stranice. Za te potrebe
koristi se atribut color font taga. Za ovaj atribut vai isto pravilo kao i kod definisanja boja
<body> tagom. Dakle, ako se eli dobiti sledei tekst ispisan crvenom
bojom:
Ovde ide vas tekst.
Pomou sledeeg dela koda:
<font color="#ff0000"> Ovde ide vas tekst. </font>

Boja slova se moe definisati i pomou HEX-a zapisa, na primer "#FCB137".

1.5.6 B tag
Kada elimo da neki tekst podebljamo koristimo B tag.

1.5.7 I tag
Za zakrivljenje teksta koristi se I tag.

1.5.8 U tag
Ako elimo da posebno podesimo da meki tekst bude podvuen, koristimo U tag.

1.5.9 Sub i sup tag-ovi


U sluaju da imamo potrebu da neki deo teksta pokaemo kao indeks ili kao nad tekst
koristiemo tag-ove sub i sup. Isprobajte koji je efekat tagova koji su korieni u sledeem
primeru.

<b>Bold</b> tekst
<i>Iskosen</i> tekst
<u>Podvucen</u> tekst
Neki <sub>indeks</sub> tekst i neki
<sup>nad</sup> tekst

strana 13 strana 14
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

1.5.10 Center tag


Ako se drugaije ne naglasi, tekst unutar HTML stranice je poravnat uz levu stranu. Ako
1.6.1 Table tag
se eli da naslov, ili bilo koji drugi element stranice, bude centriran, treba ga staviti U okviru table tag-a se mogu definisati sledei podaci za izgled cele tabele:
izmeu tagova <center> i </center> : background
<center> OVO JE CENTRIRAN TEKST </center> Opcija slui za podeavanje pozadinske slike koja e biti prikazana ispod cele tabele. U
to e dati sledei rezultat: sluaju slike koja je vea od tabele, slika e se automatski postaviti onoliko puta koliko je
potrebno da se popuni cela tabela, i u isto toliko redova koliko je dugaka tabela. U sluaju da
OVO JE CENTRIRAN TEKST
je slika pozadine vea od tabele, bie prikazan samo njen deo, koji tabela obuhvata.

1.6 Tabele bgcolor


Pozadinska boja tabele se moe definisati opcijom bgcolor. Boja se moe zadati imenom
Tabele u okviru HTML datoteka se esto koriste. Na skoro svakoj internet stranici boje ili njenim hex-a kodom.
moete videti bar jednu tabelu. Tabele u HTML-u se formiraju na specifian nain. Da bi ste border
mogli da napravite tabelu kakvu elite morate se pridravate nekih osnovnih pravila.
U HTML-u se prvo definie tabela, zatim se u okviru tabele definie red tabele, a zatim i Veliina granice tabele i granica izmeu polja se moe definisati ovom opcijom. Veliina sama
polja tabele. Svaki red mora sadrati barem jedno polje tabele. Svako polje se zadaje u pixel-ima. Ako elite da se ne vide granice izmeu polja postavite vrednost
tabele, da bi se pravilno prikazalo mora imati makar jedan specijalan karakter praznog border-a na nulu.
polja, ili makar sliku prikazanu u dimenzijama 0x0 px. Prilikom zatvaranja tag-a za
definisanje polja tabele mora se voditi rauna o poziciji zavrnog tag-a polja. On mora
align
imate neki karakter, makar to bio i komentar, u istom redu sa njim, da bi se pravilno Za podeavanje poravnanja tabele u odnosu na celu internet stranu koristimo opciju
prikazala tabela. Dole moete pogledati par primera kako se tabela moe formirati align. Tabela se moe postaviti sa leve, desne i u centar strane.
pravilno (slika 5.1.), kako nepravilno (slika 5.2.) i kako se moe napraviti tabela kakvu
elite (slika 5.3.). Ista pria vai i za redove tabela ako elite da ih spajate. cellspacing
Opcija slui za podeavanje razmaka izmeu polja tabele. Ako elite da nema razmaka
izmeu polja podesite i ovu opciju na nulu (za vebanje pokuajte da menjate ove
parametre.)
bordercolor
Podeavanje boje granice izmeu polja tabele i okvira same tabele se vri sa ovom
opcijom. Boja se zadaje na ve ranije opisan nain.
cellpading
Razmak izmeu granice polja i samih podataka unutar polja se podeava ovom opcijom.
Za podeavanje nepostojanja razmaka izmeu polja i ovu opciju morate podesiti na nulu.
height
Veliina koja se zadaje u ovoj opciji je visina tabele. Zadaje se u pixelima. Ova opcija
ne moe definisati veliinu tabele u sluaju da je stvarna veliina informacija (slika ili veliina
teksta) vilja od definicije u okviru nekog polja u samoj tabeli.
width
irina tabele se moe definisati ovom opicijom, ali takoe vai isto pravilo kao i za
Preiemo na definisanje samih tabela i HTML tag-ova koji nam slue za definisanje. visinu, ako je ukupan zbir polja iri od zadate irine tabela e se poveati.

strana 15 strana 16
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

1.6.2 Tr tag
Koristi se za definisanje jednog reda tabele. Svi redovi tabele zapoinju i zavravaju se 1.6.4 Th tag
ovim tag-om. U okviru jednog reda mora se definisati barem jedno polje tabele. Ovaj tag predstavlja zaglavlje tabele i identian je polju tabele po dodatnim opcijama.
Dodatne opcije su sledee: Jedina razlika izmeu tag-a za zaglavlje i tag-a za polje tabele je u tome to je tha tag
podeen da poravnanje po horizontali bude u centru polja, i da je font zadebljan. U
align sutini ovaj tag se ne koristi toliko esto jer se ponaa identino kao i td tag, a u stilu se moe
valign zadati znaajno preciznije izgled samog polja.
Prethodne dve opcije koriste se za podeavanje poravnanja. U prvom sluaju podeava
se poravnjanje u odnosu na horizontalu, a u drugom sluaju u odnosu na vertikalu.
Objekti koji se podeavaju su polja tabele u odnosu na samu tabelu. 1.6.5 Primeri tabela
Na sledeim slikama su prikazani primeri tabela i njihovi HTML dokumenti u kojima
vidite dodatne opcije koje su ukljuene ili ne.
1.6.3 Td tag
Postavljanje polja tabele se radi sa td tag-om. Sve informacije se dodaju u polje tabele. <table bordercolor="Aqua" cellspacing="2" cellpadding="2"
border="1">
Informacije mogu biti slike, tekst, tabele ... Jako je bitno nauiti osnove korienja ovog tag- <tr>
a, jer se u praksi jako esto koriste upravo tabele i upravo nain formatiranja tabela je u td <td width="100">Ovo je prvo polje prvog reda</td>
tag-u. U okviru td tag-a mora postojati barem neka informacija da bi je korisnik video kako <td width="250" valign="top">Ovo je drugo polje prvog
smo zamislili. Pred zavrni td tag obavezno mora stojati neki karakter ili neki HTML tag. reda</td>
</tr>
Dodatne opcije koje slue za podeavanje samog td tag-a su:
<tr>
align <td width="100">Ovo je prvo polje drugog reda</td>
valign
<td width="250">Ovo je drugo polje drugog reda</td>
</tr>
Prethodne dve opcije koriste se za podeavanje poravnanja. U prvom sluaju podeava </table>
<table bordercolor="Aqua" cellspacing="2" cellpadding="2"
se poravnjanje u odnosu na horizontalu, a u drugom sluaju u odnosu na vertikalu. Objekti border="1">
koji se podeavaju su objekti u polju tabele. <tr>
<td width="100">Ovo je prvo polje prvog reda</td>
width <td width="250" valign="top">Ovo je drugo polje prvog
height reda</td>
</tr>
irina polja tabele i visina se podeavaju ovim opcijama, ali u sluaju da je sadraj polja <tr>
vei od podeenih vrednosti polje e se automatski poveati. <td width="100" colspan="2">Ovo je prvo polje drugog
reda</td>
colspan </tr>
rowspan </table>
<table bordercolor="Aqua" cellspacing="2" cellpadding="2"
Opcijama colspan i rowspan se upravalja sa samim poljem tabele. Prvom se zadaje border="1">
komanda da se polje tabele prostire na vie polja u jednom redu, a druga da se polje prostire <tr>
<td width="100" rowspan="2">Ovo je prvo polje prvog
na vie redova u jednoj tabeli. Ta polja na koja se prostire moraju negde postojati u tabeli da reda</td>
bi tabela bila pravilno prikazana, u supratnom tabela nee izgledati kako elimo. <td width="250" valign="top">Ovo je drugo polje prvog
reda</td>
bgcolor </tr>
<tr>
background <td width="250">Ovo je drugo polje drugog reda</td>
</tr>
Za podeavanje pozadine samog polja koristi se bgcolor opcija, dok za podeavanje </table>
pozadinske slike postoji background opcija.
Naravno mogu se praviti i znatno kompleksnije tabele, ali za sada u ovim osnovnim
primerima mogu se videti nain pravljenja tabela.

Vebanje: Napravite tabelu, koja e se sastojati od niza slika, pored kojih se nalazi
tekstualno objanjenje.
strana 17 strana 18
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Vebanje: U koli ima vie predavaa, i svaki predava ima ime i prezime, i predmet
koji predaje. Napravite tabelu predavaa. Kao napredno vebanje ubacite i sliku 1.7.4 Primeri sortiranih i nesortiranih lista
predavaa.
Vebanje: U nekom programu za obradu slike, isecite jednu sliku na nekoliko delova, pa ih Na sledea dva primera videete sortiranu i nesortiranu listu.
onda sklopite u jednu sliku na jednoj web stranici.
Primer 1 Primer 2
<html> <html>
1.7 Liste <head> <head>
<title>Primer 1</title> <title>Primer 2</title>
Liste u HTML dokumentima su relativno esta pojava. Lista kao i u ostalim programima moe </head> </head>
biti nesortirana ili sortirana lista. Pod sortiranim listama se podrazumevaju one liste gde <body> <body>
ispred svake stavke liste stoji broj, slovo ili rimski broj. Takoe se mogu birati mala ili velika Kako se napiti Kupiti
slova i mala ili velika slova rimskih brojeva. Kod nesortiranih lista ispred stavki lista se moe <ol type="1"> <ul type="disc">
postaviti odreen simbol. Liste koje podrava HTML su i definicione liste. Te liste imaju naslov <li>Prvo pivo</li> <li>Gajbu piva</li>
ispred stavke liste. <li>Prvi dzin</li> <li>Dzin</li>
<li>Drugo pivo</li> <li type="circle">Sokove</li>
1.7.1 Ol tag <li>Drugi dzin</li> </ol>
Za postavljanje sortirane liste u HTML dokument koristi se ovaj tag. Dodatne opcije za </ol> </body>
ovaj tag su: </body> </html>
</html>
type
Ovom opcijom podeavamo tip sortirane liste. Ona moe biti sortirana brojevima (1),
moe biti sortirana abecedno sa velikom slovima (A), malim slovima (a), rimskim velikim brojevima
(slovima) (I) ili rimskim malim brojevima (i).

1.7.2 Ul tag
Nesortirane liste imaju skoro identine opcije kao i sortirane liste. One se postavljaju ul
tag-om. Opcije su:
type
Podeavanjem izgleda karaktera ispred stavke liste se izvrava ovom opcijom. Karakter
moe biti disk (pun krug), krug ili kocka.

1.7.3 Li tag
Ovaj tag se koristi i kod sortiranih i kod nesortiranih lista za postavljanje stavke u listi.
Postoji i mogunost postavljanja razliitog tipa kod nesortiranih lista za odreenu stavku liste.
Ona se postavlja izmeu poetnog i zavrnog tag-a sortirane ili nesortirane liste. Ovaj tag se
Osim ovakvih listi u upotrebi su (znatno ree) u definicione liste, ali o njima ovom prilikom
moe koristiti sa ili bez poetnog tag-a. Postavljanje liste (sortirane ili nesortirane) u HTML
nee biti rei.
dokumentu se automatski postavlja u novi red.

strana 19 strana 20
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

2. PHP - Uvod 2.2 Kako funkcionie PHP?

2.1 ta je PHP? PHP na strani web servera predstavlja pretprocesor kome se prosleuju PHP skripte. Ovo u
praksi radi na sledei nain: unutar HTML koda neke stranice pozicionirane su PHP skripte,
PHP - skraenica od Page Hypertext Pretprocesor dok stranice obavezno imaju ekstenziju "*.php". Kada je ovakva stranica postavljena na web
server i korisnik je zatrai putem svog browser-a, web server e na osnovu ekstenzije
PHP je iroko rasprostranjen open-source server-side skriptni jezik koji je posebno prepoznati da se radi o PHP stranici i proslediti je instaliranom pretprocesoru. Potom e
prikladan za dinamiko generisanje HTML koda u Web aplikacijama. pretprocesor izvriti programski kod i rezultat vratiti web serveru, koji nakon toga sve alje
open source - besplatan za upotrebu, slobodan za razvoj novih verzija, dodavanje browser-u. Rezultat procesiranja su dinamiki kreirane HTML stranice, koje se najee
novih funkcija itd. zasnivaju na podacima iz neke od baza podataka. Drugim reima, na osnovu PHP koda
generie se standardni HTML kod koji se alje klijentu (klijent je najee browser posetioca
scripting jezik - omoguava ubacivanje malih programskih segmenata (skripti) u sajta). Meutim, klijent ne moe videti PHP kod (skriptu) koji je generisao sadraj koji se
HTML kod koji sainjava Web stranicu posmatra, ve ima pristup istom HTML kodu kao rezultatu procesiranja.
server-side scripting jezik - skripte se izvravaju se na serveru, kada server primi
zahtev za PHP dokumentom. 2.3 ta je potrebno da bismo napravili i pokrenuli PHP stranicu na svom
Drugim reima, PHP je skriptni jezik pomou kojeg moete kreirati HTML stranice na
raunaru?
serveru pre nego to se one, popunjene dinamikim sadrajem, prikau posetiocu. Ostali instaliran i pokrenut neki od Web servera (Apache, Microsoft Internet Information
poznatiji programski (skriptni) jezici za istu namenu su: Microsoft ASP, Macromedia Server (IIS), Xitami, OmniHTTPd, itd.)
Coldfusion, Sun JSP itd. instaliran PHP - moe se preuzeti sa lokacije www.php.net, okvirna veliina ~20 mb
Po sintaksi je slian mnogim drugim programskim jezicima. Osnovna osobina PHP-a je obino uz ove dve komponente ide i instalacija MySQL-a (baza podataka koja se
jednostavnost, mada PHP poseduje mnoge napredne mogunosti neophodne u radu sa najee koristi u radu sa PHPom)
kompleksnijim aplikacijama. Izuzetno je prilagoen Webu, a i inae je prvobitno sluio editor pomou koga se kreiraju PHP dokumenti
kao alatka za obradu HTML obrazaca i pravljenje Web stranica Web browser u kome se vri pregled rezultata izvravanja PHP skripti na serveru
(Internet Explorer, Mozilla Firefox, Opera,...)
Svoju popularnost duguje i svojoj sposobnosti da podrava veliki broj sistema za
upravljanje bazama podataka (RDBMS), kao to su: na prvom mestu MySQL, pa zatim i 2.4 XAMPP
ostali: MS SQL server, Oracle, Postgre SQL, dBase, MS Access i jo mnogi drugi. Osim sa
razliitim bazama podataka, podrava i korienje velikog broja Internet protokola, kao i dobro U praksi, umesto 3 zasebne instalacije (Web server, PHP, MySQL) i njihovog meusobnog
integrisanje sa spoljnim aplikacijama i bibliotekama. podeavanja i usaglaavanja, zgodnije je koristiti (takoe open source) softverska reenja
koja u sebi objedinjuju sve tri komponente. Time se olakava instalacija, pokretanje i
PHP je bogato opremljen funkcijama za manipulisanje razliitim tipovima sadraja:
administracija celog sistema.
tekstualni fajlovi (.txt, .log), grafika (png, jpg, flash), programske komponente (.NET moduli,
XML) itd.
Jedno od ovakvih reenja je i XAMPP, koji objedinjuje u sebi:
Njegove velike mogunosti, razumljiva sintaksa i podrka za razne operativne sisteme i
Apache Web Server
Web servere uinile su ga idealnim jezikom i za brz razvoj Web aplikacija i za metodino
MySQL
konstruisanje sloenih sistema koji barataju velikim koliinama podataka.
PHP
PHP je jedan od najpopularnijih i najmonijih skriptnih jezika trenutno na tritu koji Perl (dodatni skript jezik)
pokree milione dinamikih Web aplikacija. Prema podacima iz 2007. PHP je u upotrebi na jo nekoliko korisnih modula/aplikacija
preko 20 miliona servera. Od stranih sajtova koji su realizovani u PHPu moemo izdvojiti
Youtube, Facebook, Yahoo, Flickr, Wikipedia, Digg itd, a od domaih B92.net, Infostud, XAMPP se moe besplatno preuzeti sa adrese (okvirna veliina ~30 mb):
Krstarica, Yu4You.com itd. www.apachefriends.org/en/xampp.html

Nakon jednostavne instalacije, potrebno je samo pokrenuti XAMPP, odnosno poveriti preko
XAMPP Control Panela da li su pokrenuti Apache web server i MySQL servis, kao
to je to prikazano na sledeoj slici:

strana 22
strana 21
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Vie dokumenata moe biti otvoreno u isto vreme, svaki je predstavljen po jednim tabom
(karticom) u glavnom prozoru PHP Designera.
Da bismo u PHP Designeru kreirali novu PHP stranicu, treba kliknuti na
File -> New -> PHP
Pri snimanju dokumenata:
File -> Save As -> (folder u kome je instaliran XAMPP)/htdocs/imefajla.php
Najjednostavnije, radi testiranja da li su web server i PHP instalirani i funkcioniu kako
treba, u fajl moemo upisati samo:
<?php
phpinfo();
?>
a zatim snimiti pod imenom "proba.php" u gore navedenom folderu. Na kraju, u
browser treba uitati adresu:
http://localhost/proba.php
Ako ste ovo dobro uradili, videete nekoliko stranica sa detaljnim informacijama o
Ukoliko je XAMPP instaliran npr. u: instaliranom PHP okruenju, od toga kako i gde je kompajliran PHP modul, koja je verzija
C:/xampp/ modula i gomilu konfiguracionih parametara.
...onda HTML i PHP dokumente treba smetati u folder: 2.6 PHP tagovi - <?php i ?>
C:/xampp/htdocs/
Vrlo bitna karakteristika PHP-a, kao i bilo kog drugog jezika koji se koristi za dinamiko
Dalje, ako smo PHP dokument snimili kao: web programiranje, jeste razdvajanje server-side koda od statikog HTML-a. Sav PHP kod
unutar neke stranice se mora nalaziti izmeu poetnog i zavrnog PHP tag-a.
C:/xampp/htdocs/proba.php
u browseru emo ga pokrenuti tako to u adress bar upisujemo: poetni PHP tag: <?php (ili samo <?)
zavrni PHP tag: ?>
http://localhost/proba.php Ovakvim oznaavanjem "dajemo znak" serveru da se izmeu ovih tagova nalazi PHP kod
i da je potrebno prvo njega izvriti pa tek nakon toga poslati klijentu HTML rezultat
izvravanja tog koda zajedno sa ostatkom statikog HTML koda. Ovo je osnova server-
2.5 PHP Editori client mrene komunikacije putem TCP/IP protokola.
PHP kod se moe pisati na proizvoljnom mestu unutar HTML dokumenta, i to tako da se
Slue nam za izradu PHP skripti (pisanje PHP koda) - analogno Microsoft Wordu za .doc
fajlove). Pored komercijalnog softvera, od besplatnih PHP editora se izdvajaju: u bilo kom trenutku moemo prebaciti iz HTML moda u PHP mod i obrnuto. PHP skript se
sastoji od niza iskaza (naredbi), a svaki od njih mora da se zavrava sa ; . Beline (razmaci,
EmEditor prelomi redova, uvlake idt.) se zanemaruju i slue samo da programeru olakaju itanje
PHP Eclipse koda. Kada se izvri PHP skript, ceo njegov kod (ukljuujui i poetnu i zavrnu oznaku),
PHP Designer zamenjuje se rezultatom izvravanja PHP koda u obliku HTML koda.
Notepad++
itd. 2.7 Naredba echo
Za iri spisak i uporednu analizu mogunosti, pogledati sajt: www.php-editors.com
Za potrebe kursa, PHP skripte emo pisati u programu PHP Designer, verzija 2005. Ovo Funkcija echo jednostavno uzima argument koji je naveden prilikom njenog pozivanja i
programsko okruenje koje daje podrku istovremeno za PHP, HTML, CSS ili MySQL. U prosleuje ga (direktno ispisuje) u HTML kod. Osim obinog teksta", argument moe sadrati
njemu moemo iskoristiti razliite wizard-e koji ujedno ubrzavaju kreiranje dokumenata i HTML tagove koji e prilikom interpretiranja imati uobiajeno znaenje). Argument se (ako je
smanjuju mogunost greke, dok od dodatnih mogunosti vredi izdvojiti : file browser, project u pitanju standardni HTML kod) navodi izmeu navodnika, dok se na
browser, to-do manager, live preview itd. kraju navodi taka-zarez, kao oznaka kraja jedne naredbe u PHPu. Primeri:

strana 24
strana 23
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

<html> <html> od atributa pojedinanog HTML taga. U takvim situacijama moemo kombinovati
<head> <head> jednostruke i dvostruke navodnike:
<title>Prva stranica sa PHP skriptom</title> <title>Druga stranica sa PHP skriptom</title>
</head> </head> echo "<body bgcolor='#333333' >tekst<br><a href='kontakt.html'>link</a></body>";
<body> <body>
<?php <?php 2.8 Komentari
echo "Prvi red teksta"; echo "Prvi red teksta<br>Drugi red teksta";
?> ?> Kada programiramo u bilo kom jeziku, dodavanje komentara ukljuuje pisanje istih pored
</body> </body> koda kako bi opisali ta i kako on radi. Kada se skripta izvrava, PHP pretprocesor ignorie
</html> </html> komentare - oni slue iskljuivo ljudima koji itaju kod stranice.
Kada otvorite stranicu u browseru izgledae kao da je u pitanju obian HTML fajl, a ako Programeri esto ne komentariu kod. Nekad je razlog to se projekat mora zaviti u
pogledate izvorni kod (view page source) kroz opcije browsera, sve to ete videti i jeste kratkom roku i nema vremena da se adekvatno komentarie. esto se programeri oslanjaju
HTML. To se dogaa jer je PHP pretprocesor generisao HTML kod onako kako mu je i zadato na svoje pamenje u nadi da e se za pola godine ili godinu dana seati kako
preko funkcije echo. kod radi. Jo jedan od izgovora je i taj da je kod tako dobro napisan da je sasvim jasno
U prethodna dva primera ugradili smo PHP skripte u HTML stranicu. Moemo da uradimo emu slui i kako radi. Velika je korist od dobrih komentara PHP koda koji pokree va sajt.
i obrnuto - da ubacimo HTML tagove meu PHP komande. Sledei primer predstavlja PHP Moete se iznenaditi koliko zagonentna sekcija koda moe biti samo nekoliko meseci posle
skriptu koja je napravljena da prikae jednostavnu web stranicu. pisanja. Nije neoubiajno da programer proita kod koji je nekada napisao i ostane zapanjen
injenicom da je on to napisao. Vano je zapamtiti da ete kod koji ste napisali verovatno
<?php odravati dugo vremena.
echo "<html>"; echo
"<head>"; Drugi vaan razlog za komentarisanje koda je da omoguimo ostalima, koji e nastaviti
echo "<title>Jos jedan PHP primer</title>"; rad na kodu u smislu odravanja ili unapreenja, da razumeju ta je uraeno. Jedna od
echo "</head>"; najgorih stvari u razvoju softvera je mukotropno tumaenje koda izazvano kompleksnou
echo "<body>"; neijeg nekomentarisanog rada.
echo "Dobrodosli na novu stranicu!"; Komentari se mogu upisivati u kod primenom uobiajenih stilova u drugim programskim
echo "</body>"; echo jezicima. Na raspolaganju su dva naina komentarisanja - jednolinijski i vielinijski komentar.
"</html>"; Deo koda koji je obuhvaen komentarom se ne procesira od strane servera, tj. ne proizvodi
?>
nikakav efekat, pa komentare zato moemo koristiti za internu upotrebu tokom razvoja web
aplikacije - za upisivanje usputnih zabeleki i objanjenja, privremeno izuzimanje ili
Ako ste dobili rezultat kao na slici, znai da ste uspeno napravili i izvrili vau prvu ugraenu ukljuivanje pojedinih naredbi i testiranje stranica tokom pisanja koda itd.
PHP skriptu. Ako ne vidite oekivani rezultat u vaem browseru, vratite se korak nazad i
proverite fajl. Neto to izgleda kao beznaajno, recimo jedno slovo, taka-zarez, zagrada ili Primeri:
bilo koji drugi znak moe da rezultira time da skripta ne radi. Kao to ete kasnije videti, //Ovo je komentar koji se sastoji od jednog reda
problemi su skoro uvek rezultat neke sitne greke u kucanju PHP koda. #Jos jedan komentar koji se sastoji iz jednog reda
/*A ovako izgleda komentar
Kao to se vidi u prethodnom primeru, funkciju echo moemo pozivati i nekoliko puta
koji se prostire
uzastopce unutar iste PHP skripte. Pritom je svejedno da li emo isti HTML kod ispisati
na vie redova*/
odjednom ili iz dva i vie delova, pozivanjem funkcije echo za svaki deo pojedinano.
Dakle: Uobiajena je situacija da napiemo neki PHP kod, pa zatim pokuavamo da napravimo
efikasniji ili pouzdaniji kod. U takvoj situaciji moemo deo skripte da obeleimo kao
echo "<html><head><title>Naslov</title><head><body>Neki tekst</body></html>";
komentar (nee se izvriti) i napiemo novi kod. Ako se ispostavi da je nov kod loiji od
ima isti efekat kao i : prvobitnog (to se ponekad dogaa), jednostavno uklonimo novi kod i skinemo granine
markere komentara sa starog koda ime se skripta vraa u prethodno stanje.
echo "<html>";
echo "<head><title>Naslov</title><head>"; 2.9 Promenljive (varijabile)
echo "<body>Neki tekst</body>";
echo "</html>"; Veliki deo pisanja skripti, pa samim tim i programiranja uopte, ukljuuje rukovanje i
manipulaciju podacima. Podaci se mogu pojaviti u razliitim oblicima, od pojedinanih
Ono to treba imati u vidu je konflikt izmeu tumaenja navodnika koji slue da oznae
karaktera, rei i reenica do numerikih vrednosti i logikih izraza. U objektno-
poetak i kraj argumenta funkcije echo i navodnika koji slue da oznae vrednost nekog
strana 25 strana 26
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

orijentisanom okruenju kakvo je i PHP, podaci mogu biti i u obliku objekata koji mogu da vrednost koju dodeljujemo, a na kraju se nalazi taka-zarez (koriste se da oznai kraj
sadre bilo koji broj i vrstu podataka razliitog tipa. naredbe).Sledei primer prikazuje dodeljivanje vrednosti "krug" promenljivoj $oblik
Kada radimo sa tipovima podataka u PHP-u, potreban nam je praktian nain da uvamo $oblik = "krug";
vrednosti kako bi mogli lako da im pristupimo i uputimo na njih kad god nam je potrebno.
Tu stupaju na scenu PHP promenljive. O promenljvima moemo razmiljati kao o lokacijama Sada smo deklarisali promenljivu pod imenom oblik i dodelili joj string vrednost (string
u memoriji raunara gde se smetaju podaci. Kada deklariemo promenljivu u PHP-u je tip podataka koje ini niz znakova, npr. re). Na slian nain deklariemo promenljivu
dodeljujemo joj ime koje kasnije koristimo u kodu. Preko imena koje dodeljujemo koja e drati celobrojnu vrednost:
deklarisanjem pristupamo vrednosti promenljive, menjamo vrednost, ak i tip. $brojOblika = 6;
Sve promenljive u PHP-u moraju imati prefiks $. Ovaj prefiks obavetava pretprocesor
da je u pitanju promenljiva a ne obian tekst. Ukoliko ga izostavite aplikacija ce javiti greku Gornji izraz pravi promenljivu pod imenom brojOblika i dodeljuje joj numeriku
(u najboljem sluaju), a prei e preko nje (u najgorem sluaju) i umesto sadraja vrednost 6. Kada jednom napravimo promenljivu, njena vrednost moe biti promenjena
promenljive e ispisati samo njeno ime. Prvi karakter imena mora da bude slovo ili donja u bilo koje vreme, na isti nain kao pri kreiranju:
crta ( _ ). Ostali karakteri mogu biti slova, brojevi ili donje crte. Ostale znakove nije mogue <? php
koristiti u imenima promenljivih.
$brojOblika = 6; // postavlja poetnu vrednost
Jo jedna vrlo bitna stvar kod promenljivihu PHP-u je da su imena varijabli case- $oblik = "krug";
sensitive. U ovom smislu, $mojeime i $MojeIme predstavljaju dve posebne promenljive koje $brojOblika = 7; // menja poetnu vrednost
ni na koji nain nisu u vezi. $oblik = "kvadrat";
Isto tako, u imenima varijabli ne smijete koristiti razmake niti bilo kakve znakove osim [ ?>
i ] koji se koriste u nizovima i kod nekih metoda rada sa stringovima, ali o tome malo kasnije,
2.9.2 Korienje vrednosti promenljivih
kao i znaka '_'. Svi ostali znakovi su zabranjeni u imenima promenljivih. Isto tako, ime
promenljive ne sme poeti brojem, ali ga moe sadrati na bilo kojoj drugoj poziciji u imenu. Poto smo nauili kako da kreiramo promenljive i dodeljujemo poetne vrednosti, sada
emo videti kako da pristupimo vrednosti koja je trenutno dodeljena promenljivoj. U
U PHP-u se ne morate brinuti o brisanju varijabli radi tednje memorijskog prostora jer praksi, korienje vrednosti promeljive se svodi na navoenje imena promeljive. Na
se sve varijable automatski briu iz memorije kada se trenutna skripta koja ih je stvorila primer, ako elimo da prikaemo vrednost koju smo dodelili promenljivoj brojOblika
zavri. Ukoliko stvarno elite obrisati neku varijablu iz bilo kojeg razloga to moete jednostavno je pozovemo korienjem echo komande:
uciniti pomou naredbe unset, npr unset($varijabla);
<?php echo "Broj oblika je $brojOblika."; ?>
Validna i nevalidna imena promenljivih:
$_myName // ispravno Rezultat je sledei izlaz: Broj oblika je 6.
$myName // ispravno Na isti nain moemo prikazati i vrednost oblik promenljive: <?php echo $oblik; ?>
$niz[1] // ispravno
$__myvar // ispravno Poto promenljive ne moraju imati nikakve default vrednosti ponekad je potrebno
$myVar21 // ispravno pomou funkcije IsSet proveriti da li imaju neku vrednost, npr:
$_1Big // neispravno - posle donje crte mora da ide slovo
$pitanje = "kako ste?";
$1Big // neispravno - ime mora da pone slovom ili donjom crtom
$_er-t // neispravno - sadri ne-alfanumeriki karakter (-) If (IsSet($pitanje))
$2varijabla // neispravno echo "Komsinica me uvek pita <i>$pitanje</i>";
$var*ijabla // neispravno Promenljiva koja se definie na jednom mestu u datoteci dostupna je celom kodu od
$var(1) // neispravno toga mesta na dole; promenljive koje su definisane izvan funkcija (i klasa) su globalne
varijable, a one definisane u funkcijama su lokalne za tu funkciju; funkcije po defaultu ne
2.9.1 Dodeljivanje vrednosti promenljivoj mogu koristiti promenljive definisane izvan funkcije osim ako se to eksplicitno ne definie.
Vrednost se dodeljuje promenljivoj korienjem operatora dodele, koga predstavlja U PHP-u postoje i predefinisane promenljive rezervisanih imena pomou kojih moemo
znak jednako (=). Da bi dodelili vrednost promenljivoj, ime promenljive se mora doi do odreenih informacija o tipu servera ili korisniku naih stranica, koristiti vrednosti
nalaziti na levoj strani izraza, zatim sledi operator dodele. Na desnoj strani izraza je promenljivih preneenih s jedne stranice na drugu itd. Treba imati u vidu da neke od njih
menjaju vrednost zavisno od servera na kome se nalazi web site i jo nekih drugih faktora.

strana 27 strana 28
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

S verzijom 4.1.0 su prestavljene nove promenljive koje sadre podatke o okruenju web 2.10.3 Tekstualni podaci (string)
servera te podatke koje je uneo sam korisnik; te varijable su automatski dostupne svuda
u kodu, tj. dostupne svima pa se zato i nazivaju autoglobals ili popularnije superglobals. Promenljive tipa string se koriste kako bi grupisale alfanumeriki niz znakova kao to su rei i
Naveemo kratku definiciju pojedinih njihovih tipova: reenice. Pored mehanizma za kreiranje i promenu celog stringa vrednosti promenljivih,
PHP doputa da se uzimaju i menjaju delovi stringa korienjem irokog spektra ugraenih
$GLOBALS - sadri reference na sve promenljive koje su trenutno dostupne u global funkcija.
podruju skripte String se moe dodeliti promenljivoj ili stavljanjem niza znakova izmeu jednostrukih ili
$_SERVER - promenljive postavljene od strane web servera
dvostrukih navodnika. Ako se u okviru niza ve koristi neka vrsta navodnika, jednostruki ili
$_GET - promenljive definisane putem HTTP GET metode
dvostruki, potrebno je koristiti suprotni kako bi se obuhvatio niz.
$_POST - promenljive definisane putem HTTP POST metode
$_COOKIE - promenljive dostupne skritpi putem HTTP cookies <?php
$_FILES - promenljive sa podacima o upload datotekama (HTTP POST) $myString = "Prva recenica";
$_ENV - promenljive sa podacima o okruenju u kojem se skripta izvodi $myString3 = "Ova recenica sadrzi 'jednostruke navodnike' ";
$_REQUEST - moemo kontrolisati dostupnost i raspored ENV, GET, POST, SERVER i $myString4 = 'Ova recenica sadrzi "dvostruke navodnike" ';
COOKIE varijabli ?>
$_SESSION - promenljive koje su trenutno registrovane u script session
Takoe, moe se izbei korienje navodnika u stringu, pristupajui im preko znaka (\).
Ovaj nain je pre svega preporuljiv za stringove koji koriste istovremeno jednostruke i
2.10 Tipovi podataka dvostruke navodnike, kako ne bi dolo do zbunjivanja pretprocesora.
Za razliku od mnogih drugih programskih jezika, u PHP-u ne morate definisati tip <?php
promenljive pre njenog korienja i promenljivu moete deklarisati bilo kada unutar skripte i $myString3 = ' Ova recenica sadrzi \' jednostruke navodnike'\'';
pridruivati joj razliite tipove podataka tokom izvravanja skripte (iako ovo nije uobiajena $myString4 = " Ova recenica sadrzi \" dvostruke \" i \'jednostruke navodnike \'";
niti previe pametna praksa). ?>
Tipovi podataka koje podrava PHP su: Postoje izvesne razlike u ispisu sadraja zavisno od tipa navodnika koje koristite.
Celi brojevi (integer) Korienjem duplih navodnika moete koristiti i specijalne znake. To su posebni znaci koji
Realni brojevi (floating-point numbers ) govore PHP-u da izvri odredene radnje pri ispisu sadraja promenljive, i navide se iza znaka
Tekstualni podaci (String) backslash ( \ ).
Logike promenljive Lista specijalnih znakova:
Nizovi Znak Znaenje
Objekti \n Novi red(LF ili 0x0A u ASCIIu)
\t Tab razmak (HT ili 0x09 u ASCIIu)
2.10.1 Celi brojevi \\ Backslash
Pomou ovog tipa podataka moemo u nekoj promenljivoj pamtiti pozitivne i negativne \$ Dolar znak
brojeve u rasponu od -2147483648 do 2147483647 tj. 32 bita podataka, npr: \" Dupli navodnik
$intvar1=1234; Ovi znaci nee imati uticaja na izgled same stranice u prozoru browsera, ve e njihov
$intvar2=-78456321; uticaj biti vidljiv tek pri pregledu sourcea dokumenta. Ovime moete sasvim sakriti injenicu
U sluaju da se vrednost dodeljena promenljivoj koja je tipa celog broja nalazi van da je stranica stvorena putem PHP-a a pomou njih je i lake pronai greku u generisanoj
dozvoljenog opsega, dobijena dodelom ili kao rezultat neke matematike operacije, tip stranici. U protivnom bi se sav sadraj ispisao u jednom redu source-a bez razmaka. Uviate
promenljive se automatski konvertuje u promenljivu tipa realnog broja. da bi bilo vrlo teko u tom neredu nai bilo ta, a kamoli greku u ispisu, ako je traite u
source viewu.
2.10.2 Realni brojevi Ukoliko elite da se neki tekst prebaci u novi red pri gledanju stranice u prozoru
Promenljive ovog tipa sadre brojeve koji zahtevaju ispis preko decimalnog zapisa, i one browsera standardno se koristi <br> ili slinim tagovi. Jo jedan bitna razlika izmedu duplih i
mogu imati mnogo vei raspon brojeva u odnosu na raspon integer promenljivih. (Kao to jednostrukih navodnika je ta da e se pri koritenju duplih navodnika sadraj promenljive
su 1.067, 0.25, 423454567098, 84664435.9576). ispisati a pri korienju jednostrukih navodnika ispisae se ime promenljive zajedno sa znakom
Primer: $realvar=4560.156; $.
Npr:

strana 29 strana 30
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

<? 2.11.1 IF...ELSE


$str_ime="Marko";
If.. else je najee koriena kontrolna struktura. Njoj dajemo logiki izraz ili uslov
echo ("Moje ime je $str_ime");
?> koji se proverava i zavisno od njegovog ishoda koji moe biti true ili false izvrava se blok
ispisuje Moje ime je Marko naredbi.
if ( <uslov> ) {
<?
// naredbe koje e biti izvrene ako je <uslov> taan.
$str_ime="marko";
}
echo ('Moje ime je $str_ime');
else {
?>
// (Opciono) naredbe koje e biti izvrene ako je <uslov> netaan
ispisuje Moje ime je $str_ime
}
U PHP-u je takoe mogue spajanje vie stringova u jedan ispis. To radimo pomou '.' .
Vitiaste zagrade { } oznaavaju blok naredbi. Njih moete izostaviti ukoliko grana ima samo
<? jednu naredbu.
$str_var1='Dete';
Evo i konkretnog primera korienja if-else strukture:
$str_var2='ide'; //nema razmaka pre ili posle rei
echo $str_var1 . ' ' . $str_var2 . ' u kolu'; if ( $ime == "Petar" ) {
?> echo( "Petre, poseban pozdrav za tebe!" );
ispisuje se Dete ide u kolu }
Uoite da su u gornjem primeru korieni jednostruki navodnici, ali promenljive se ne nalaze u else {
njima tako da e se njihov sadraj ispisati. Takoe su izostavljene zagrade, to je dozvoljeno. echo( "Dobrodosao, $ime!" );
}
2.10.4 Logike promenljive U prethodnom uslovu smo koristili == da bismo uporedili dve vrednosti i videli da li su
Logiki tip podataka ima dve mogue vrednosti : true i false. Deklaracija logike jednake. Vano je zapamtiti da se upotrebljava dvostruki znak jednakosti, zato to
promenljive: jednostruki slui za dodeljivanje vrednosti.
Uslovi mogu biti i komplikovaniji. Sada emo malo modifikovati prethodni primer, da
$logicka=true; bismo pokazali i malo sloeniju varijantu:
Ovaj tip podataka se najee javlja kao rezultat logikih izraza ili nekih PHP funkcija, i if ( "Petar" == $ime and "Petrovic" == $prezime )
kao takav se esto koristi u IF kontrolnim strukturama. echo( " Petre, poseban pozdrav za tebe!" );

2.11 Kontrolne strukture Uslov e biti taan ako i samo ako $ime ima vrednost Petar, a $prezime ima vrednost
Petrovic. Re and u prethodnom primeru ini ceo uslov tanim samo ako su obe vrednosti
Svi dosadanji primeri PHP koda su bili jednostavni, skriptovi u vidu jedne ili vie naredbi tane. Drugi takav operator je or koji ini da uslov bude taan ako je taan bar jedan od dva
koje kao rezultat proizvode uvek isti izlazni HTML kod na web strani. jednostavna uslova.
Nasuprot tome, PHP sadri i specijalne iskaze koji dozvoljavaju "skretanje" nakon neke
Umesto else kljune rei moe se koristiti i elseif kljuna re. Ona se izvrava ako je
naredbe koja je dominanta u naim primerima. Takve izraze zovemo "kontrolne strukture".
uslov u if-u netaan, tj. false. Ona takoe ispituje logiki izraz.
Pomou kontrolnih struktura odreujemo tok skripti, odluujemo i raunamo, tj. one su
zaduene za logiku aplikacija. <?
If ( <uslov1>) {
Selekcije (grananja) // naredbe koje se izvravaju ako je uslov1 == true
if ... else , switch }
Ciklusi (petlje) elseif (<uslov2> ) {
while , do ... while , for , foreach // naredbe koje se izvravaju ako je uslov1 == false i uslov==true
Skokovi }
break , continue elseif ( <uslov3> ) {
Posebne naredbe // naredbe koje se izvravaju ako je uslov1 == false i uslov2 == false i uslov3 == true
declare, return, require, require_once }
include, include_once else {
strana 31 strana 32
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

// naredbe koje se izvravaju ako su svi uslovi == false ?>


}
?> U switch naredbi expr (uslov) se izraunava samo jednom, a zatim se rezultat
Ukoliko pokuavate da programski reite situaciju sa mnogo moguih ishoda nije izraunavanja uporeuje sa vrednou izraza u svakom case-u (po redosledu navoenja).
Nasuprot tome, u ekvivalentnoj if ... elseif konstrukciji uslov se stalno izraunava ponovo, u
praktino koristiti ifelseif tip grananja. Tada je bolje koristiti switch strukturu.
okviru svakog elseif sve dok u nekom od njih ne bude ispunjen. Zbog ove injenice je
izvravanje switch naredbe neto bre od izvravanja ekvivalentne if ... elseif naredbe.
2.11.2 SWITCH
Switch uzima za argument neki izraz i onda gleda da li je on jednak jednom od zadatih 2.11.3 WHILE petlja
sluaja. Ukoliko nije jednak ni jednom od njih izvrava default akciju ili ne izvrava nita. While petlja izvrava svoj blok naredbi dokle god je izraz u uslovu istinit (true). Uslov se
Switch je funkcionalno ekvivalentna naredbi if ... elseif, ali nad istim izrazom tj. kada se vri
ispituje pre izvodenja bloka naredbi. Zbog toga je mogue da se blok ne izvri nijednom
poreenje istog izraza sa mnogo razliitih vrednosti i izvrava se razliit kod u zavisnosti od
ukoliko je uslov na poetku false.
vrednosti izraza.
while (expr){
switch (expr) { naredba1; ...
case expr1: naredbaN;
naredba1_1;...naredba1_N1;[break;] }
case expr2:
U svakoj iteraciji petlje radi se sledee: izrauna se vrednost izraza expr, pa ako je
naredba2_1;...naredba2_N1;[break;] ...
case exprM: vrednost jednaka:
naredbaM_1; ...naredbaM_NM;[break;] a. TRUE, izvrava se niz naredbi naredba1 ... naredbaN i ponovo prelazi na
default: izraunavanje izraza expr
naredbaDEF_1;...naredbaDEF_NDEF;[break;] b. FALSE, izlazi se iz petlje (prelazi se na prvu sledeu naredbu iza petlje)
}
Niz naredbi u while petlji se moe izvravati 0,1 ili vie puta.
Kako se izvrava switch?
Rad while petlje veoma slian if-else iskazu, ali bez else klauzule. Razlika je u tome to
1. Izraunava se vrednost izraza expr
umesto da nakon naredbi koje se nalaze u if ili else bloku nastavi sa izvravanjem naredbi
2. Dobijena vrednost se poredi sa vrednostima izraza expr1, expr2, ... (tim redosledom)
koje slede ispod zatvorene vitiaste zagrade ( } ), rad se nastavlja u okviru while petlje i
3. Kada se desi jednakost, PHP nastavlja da izvrava naredbe u okviru tog case-a i svih
uslov se proverava ponovo. Ako je iskaz taan set naredbi se izvrava drugi put, ako je opet
case-ova koji se nalaze ispod case-a u kome je ustanovljena jednakost a koji u sebi ne
taan onda i trei, etvrti... Prvi put kada iskaz ne bude taan, nastavlja se dalje od kraja
sadre break naredbu; pri nailasku na break tok izvravanja se nastavlja sa sledeom
bloka (odnosno od }).
naredbom koja sledi nakon switch
Ilustrovaemo ovo na jednom trivijalnom primeru (brojanje do deset):
Specijalni case je default case (opcioni) i on mora biti poslednji case. Ovaj case "uspeva"
(izvrava se njemu odgovarajui niz naredbi) samo ako nijedan drugi case nije "uspeo". $count = 1;
$int_var=5; while ($count <= 10) {
echo( "$count " ); $count++;
switch ($int_var){
}
case 0:
echo 'Broj je nula';
break; case 5: Prva linija kreira promenljivu $count i dodeljuje joj vrednost 1. U drugoj liniji poinje while
echo 'Broj je pet'; petlja i proverava se uslov da li je vrednost $count manja ili jednaka 10. Trea i etvrta linija
case 6: ine telo while petlje i bie izvravane, sve dok uslov bude bio taan. Trei je jednostavno
echo 'Broj je 6'; ispisivanje vrednosti sa $count blankom. etvrta je poveavanje vrednosti za 1 (inae je
break; $count++ skraenica za $count = $count +1 ).
default: Sada smo videli ta se deava sa delovima koda pri izvravanju. Prvo se proverava uslov,
echo 'Broj nije poznat'; vrednost $count je 1, sto je oigledno tano i ispisuje se vrednost $count(1). Sada $count
} dobija novu vrednost 2, ponovo se proverava i poto je i ona tana, onda se i ona

strana 33 strana 34
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

ispisuje i nastavlja se dalje 3, 4, 5, 6, 7, 8, 9, 10. Konano $count dobija vrednost 11 sto ne 2.11.6 include
ispunjava uslov i tu se zavrava proces. Na kraju kao rezultat dobijamo niz "1 2 3 4 5
6 7 8 9 10". Include naredba ukljuuje i izvrava specificirani fajl, na onom mestu u skriptu odakle je
Takoe moemo koristiti i ostale operatore za uporeivanje: <= (manje i jednako), >= pozvana.
(vee i jednako), < (manje), > (vee), != (nije jednako). Poslednji se takoe koristi i kada se <?php
uporeuju tekstualni nizovi. include 'header.php';
include './include/funkcije1.php';
2.11.4 DO-WHILE petlja include '../funkcije2.php';
$file1='include5.php';
Za razliku od while petlje, kod do while petlje uslovse ispituje tek nakon prvog izvravanja bloka
$file2='include6.php';
naredbi, tako da je uvek garantovano barem jedno izvravanje bloka naredbi iako je uslov
if ($condition) { include $file1; }
odmah na poetku moda false. Niz naredbi u while petlji se dakle moe izvravati 1 ili vie
else { include $file2; }
puta.
?>
Kao to se vidi u primeru, argument za include moe sadrati i relativnu putanju. Kada
$count = 11;
se fajl include-uje, oblast vaenja promenljivih koje su koje se nalaze u ukljuenom
do {
kodu je ista kao oblast vaenja neke promenljive koja bi bila definisana u toj liniji koda
echo( "$count " ); $count++;
gde se nalazi naredba include. Include nije prava funkcija, nego jezika konstrukcija,
} while ($count <= 10)
tako da se moe pojavljivati sa i bez zagrada. U sluaju nepronalaenja fajla kojeg
treba include-ovati, include prijavljuje warning (upozorenje) i nastavlja sa
2.11.5 FOR petlja izvravanjem.
For petlja koristi broja petlje koji se pre svakog izvravanja bloka naredbi petlje uveava ili Ova funkcija se najee koristi onda kada postoji potreba da se isti blok PHP naredbi
smanjuje. For petlju koristimo onda kada znamo taan broj potrebnog ponavljanja bloka (ista PHP skripta) pojavljuje u vie PHP stranica u identinom obliku, pa je pogodno izdvojiti
petlje. Broja petlje moe biti bilo koja ve postojea promenljiva ili moete stvoriti novu ih u poseban PHP fajl i samo ih include-ovati (modularni pristup). Prednosti ovakvog naina
promenljivu za potrebe petlje. Uobiajena imena takvih promenljivih su $i, $j, $k i njih ete rada dolaze do izraaja pogotovo onda kada je potrebno izmeniti ovaj kod, jer je u tom sluaju
sresti u gotovim svim aplikacijama u kom god jeziku da su napisane. potrebno izmeniti ga samo na jednom mestu umesto izmena u svim fajlovima u kojima je
for (expr1; expr2; expr3) { eksplicitno naveden.
naredba1; ...
2.11.7 include_once
naredbaN;
} Isto kao include, sa jedinom razlikom to, ako je fajl ve bio include-ovan, on nee biti
Kako se izvrava for? include-ovan ponovo. Ovo je od koristi npr. ako nismo sigurni da li je fajl koji elimo da
includujemo ve includovan unutar druge stranice koju smo ve includovali u tekuoj
1. Bezuslovno se izvrava expr1 koji se koristi za inicijalizaciju promenljivih (izvrava stranici.
se samo jednom, pre prvog ulaska u petlju).
2. U svakoj iteraciji petlje radi se sledee: izrauna se vrednost izraza expr2, pa ako 2.11.8 require
je ta vrednost jednaka: Ova funkcije je slina funkciji include, osim to u sluaju nepronalaenja fajla koji treba
a. TRUE, izvrava se niz naredbi naredba1 ... naredbaN, zatim se izvrava expr3, pa include-ovati require prijavljuje Fatal Error (izvravanje skripta se prekida) dok include
se ponovo prelazi na izraunavanje izraza expr2 (sledea iteracija) u ovom sluaju prijavljuje Warning (izvravanje skripta se nastavlja)
b. FALSE, izlazi se iz petlje (prelazi se na prvu sledeu naredbu iza petlje)
2.11.9 require_once
Niz naredbi u for petlji se izvrava 0,1 ili vie puta.
Isto kao require, sa jedinom razlikom to, ako je kod ve bio require-ovan, on nee biti
for ($i=1; $i<=10; $i++){ require-ovan ponovo.
echo '$i = ' . $i . '<br>';
}
Rezultat ovog PHP koda je ispisivanje brojeva od 1 do 10, svaki broj u novom redu.

strana 35

strana 36
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

"multipart/form-data" (kada se uz tekst dalje prosleuje i slika ili neki drugi fajl) i
3. HTML Forme (Forms) "application/x-www-form-urlencoded".
Zbog prirode PHP-a kao serverskog skriptnog jezika za dinamiku manipulaciju web Sama forma kao HTML element je nevidljiva u browseru. Nju moemo zamisliti kao
sadraja koja u mnogim situacijama zavisi od korisnikog unosa ili korisnikih akcija (klik na nevidljivi 'kontejner' kojim su obuhvaene kontrole (elementi) za prijem podataka.
linkove i sline akcije), forme predstavljaju veoma bitan segment web aplikacija. Upotrebom
formi ostvaruje se neka vrsta interakcije korisnika i same Web prezentacije (odnosno njenog 3.2 Input tag
vlasnika ili urednika sadraja). Korisnik se na ovaj nain moe pretplatiti na mailing listu,
obaviti online kupovinu, kreirati ili ulogovati se na svoj korisniki nalog, poslati pitanje ili Polje putem koga se mogu uneti informacije se u HTML dokument postavlja preko input tag-
komentar i sl. a. Skoro sve informacije koje su potrebne mogu se uneti upravo ovim tag-om. Input nema
zavrni tag.
Sa tehnike strane gledano, forma je HTML element pomou kojeg grupiemo vie
elemenata za unos podataka (tipa text box, select lista, opcije ). U te elemente korisnik moe Atributi input taga:
upisati (ili izabrati) informacije koje se kasnije koriste za bilo koju svrhu
(unos u bazu podataka, slanje e-maila sa unesenim informacijama ). Razlog grupisanja type
vie elemenata za unos podataka u jednu formu je vie-manje oigledan - kada se vri Ovo je najbitnija opcija u input tag-u. Njom se odreuje koja vrsta polja koje slui za
nekakav unos na web stranici, obino se radi o vie povezanih informacija koje ine celinu unos podataka je u pitanju. Postoje razni tipovi polja:
(primer: login forma sa username-om i password-om). Poto su elementi forme grupisani alju
o "text" - za unos jedne linije teksta, neke informacije, koristi se upravo ovaj tip input
se na obradu zajedno kada se forma submit-uje.
tag-a.
Uz poznavanje HTML dela formi, potrebno je znati i kako pomou PHP-a prihvatiti vrednosti o "password" - ponekad je neophodno da korisnik unosi neke tekstualne podatke koje
koje su unesene u formu i vriti njihovu dalju obradu i upotrebu. Forme se mogu nalaziti i u nije poeljno da neko moe videti (npr. Druga osoba koja gleda u ekran moe videti ifru.)
obinim HTML dokumentima, ali je bitno da dokument koji prihvata podatke forme bude PHP Pomou password tipa input-a, karakteri koji se kucaju bie prikazani na
dokument ( ili serverska cgi skripta, ASP kod, ili neto slino) u kome je mogue vriti neku ekranu kao "*" karakter, dok je se ostalo isto kao kod "text" tipa
vrstu obrade putem naredbi, funkcija, upisa u bazu itd. U ovom delu skripte emo samo
o "hidden" - ponekad se javlja potreba za skrivenim poljima za unos informacija. Ova
prouiti na koji nain moemo preuzeti informacije od posetilaca sajta, dok emo se kasnije
pozabaviti njihovom obradom pomou PHP-a. polja se najee koriste u saradnji sa skriptovima, gde sadraj polja koje je skriveno
popunjavamo iz skripte u zavisnosti od nekog dogaaja koje proizvodi korisnik.
3.1 Form tag o "checkbox" - kada elimo da ostavimo korisniku da bira opciju da li e neto tiklirati
Glavni tag za postavljanje neke forme je form tag. Unutar form tag-a se nalaze kontrole ili nee to radimo sa ovim tipom input tag-a.
za unos podataka od strane korisnika i one mogu biti razliitog oblika i naina o "image" - tip za prikazivanje slike pomou koje e korisnik klikom na nju proslediti
funkcionisanja. U jednom HTML dokumentu moe postojati vie form tag-ova, ali se ne smeju informacije nazad na server. Ovaj tip se esto upotrebljava umesto tipa za prosleivanje
ugnjedavati (jedna unutar druge). podataka ("submit"), jer je to slika i moe se napraviti kakvom je elimo.
Atributi koji se navode unutar otvarajueg form tag-a su:
action o "radio" - ako elimo da korisnik izabere jednu od ponuenih opcija, to moemo
uiniti sa ovim tipom input tag-a.
Ovom opcijom se podeava akcija koja se izvrava kada se forma popuni i prosledi. To je o "file" - u sluaju da elimo da dozvolimo korisniku da poalje fajl sa svog raunara,
obino adresa neke druge skripte ili do elektronske pote vlasnika prezentacije.
on je mora prvo locirati na svom raunaru u emu nam pomae upravo ovaj tip input
method tag-a.
Metod po kome ita stranica prosleuje korisnike informacije moe biti "get" ili "post". o "button" - ovaj tip input tag-a postavlja dugme u HTML dokument.
"Get" nain se koristi onda kada nije neophodna eksterna obrada podataka, dok se u
suprotnom (npr. radi ubacivanja u bazu podataka) koristi "post" metod. (Najee se koristi o "reset" - esto je neophodno omoguiti korisniku da poniti sve opcije koje je
ovaj drugi nain, ali o metodama prosleivanja parametara e biti rei neto postavio ili obrie tekst koji je napisao u poljima forme, a to se radi upravo ovim tipom.
kasnije.)
enctype o "submit" - ovaj tip input tag-a nam omoguuje da prosleujemo informacije koje je
korisnik uneo na server ili ve ono na ta ukazuje "action" atribut u form tag-u.
Ova opcija je u sutini nain na koji se podaci ifruju. To razlikuje nain prosleivanja
podataka. Za isto slanje teksta moe se koristiti "text/plain". Jo neki od naina su

strana 37 strana 38
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Od ostalih atributa koji se mogu postaviti unutar input tag-a a koje utiu na njegov
nain prikazivanja moemo izdvojiti sledee: 3.3 Primeri formi 1
align U sledeem primeru prikazan je kod HTML forme sa nekoliko input tag-ova razliitih
Align odreuje poravnanje polja. tipova.
maxlength <html>
<head>
Ova opcija definie maksimalan broj karaktera koji se mogu upisati u tekstualno polje <
("text" ili "password" tip). Ako se ova opcija ne definie, broj karaktera je neogranien. </head> t
size <body>
<form action="mailto:office@systempro.rs" enctype="text/plain" name="pr1" id="pr1">
Opcija size slui za podeavanje broja karaktera koji e biti vidljivi na ekranu u isto vreme. Unesite vase ime: <input type="text" name="ime"><br>
Ova opcija moe biti manja do veliine maxlength, a u tom sluaju tekst e se pomerati levo- Unesite vase prezime: <input type="text" name="prezime"><br>
desno. Unesite sifru: <input type="password" name="sifra"><br>
value Da li imate racunar <input type="radio" name="racunar" value="da"> DA <input
type="radio" name="racunar" value="ne"> NE<br>
Value atribut unutar input tag-a se koristi za postavljanje poetne vrednosti polja (kod <input type="checkbox" name="winxp" value="da">Zelim da pohadjam kurs MS Windows
"text", "password" i "hidden" tipa), za postavljanje vrednosti kod "checkbox" tipa ili XP <br>
postavljanje natpisa na dugmetu ("button", "submit" i "reset" tip). <input type="checkbox" name="office" value="da">Zelim da pohadjam kurs MS Office
<br>
checked <input type="submit" value="Posalji"> <input type="Reset" value="Ponisti">
Odreuje da li je podatak tikliran (selektovan) kod "radio" i "checkbox" tipova </form>
podataka. </body>
</html>
name
Ovo je jako bitna opcija kojom se zadaje ime polja koje se unosi. Ime mora biti
jedinstveno. Eksterni programi i skripte koriste upravo ovaj parametar za pristupanje vrednosti koja je
upisana ili na drugi nain oznaena unutar polja forme.
src
Za sluaj da koristimo tip "image", u ovom atributu se navodi putanja do slike (fajla).

tabindex
Ponekad je jako bitan redosled popunjavanja formi. Da bi to doveli u red koristi se
upravo ova opcija. Prvo polje koje e biti dostupno je ono koje ima najnii broj podeen u
3.4 Label tag
tabindex opciji. Redosled popunjavanja pratie redosled brojeva.
disabled Kada elimo da korisniku omoguimo da u formi klikom na tekst pored kontrole izabere
vrednost te kontrole (npr. radio tip input tag-a) koristimo label tag. Ukoliko primenimo
Za sluaj da elimo da korisnik ima uvid u neke podatke, ili opcije, a da ne moe da ovaj tag na primer sa slike, za selektovanje odgovora na pitanje "Da li imate raunar" menja
njen sadraj niti da pristupa tom polju. moglo bi se odgovoriti i klikom na sam tekst odgovora (npr. "DA"), a ne samo unutar
readonly kruia.

Ova opcija je skoro identina prethodnoj sa razlikom to korisnik moe da se pozicionira <html>
na ovu opciju i da pristupa njoj bez menjanja sadraja. <head>
<
</head>
<body>
<form action="obrada1.php " enctype="text/plain" name="pr1" id="pr1">
Unesite vase ime: <input type="text" name="ime"><br>
strana 39 strana 40
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Unesite vase prezime: <input type="text" name="prezime"><br> rows


Unesite sifru: <input type="password" name="sifra"><br> Da li imate racunar <input cols
type="radio" name="racunar" value="da" id="da"><label for="da"> DA </label><input Preko ove dve opcije podeavamo visinu i irinu polja za unos teksta.
type="radio" name="racunar" value="ne" id="ne"><label for="ne"> NE </label><br>
<input type="submit" value="Posalji"> <input type="Reset" value="Ponisti"> wrap
</form> </body> Ako ne elimo da nam se tekst prelama kada doe do vidljivog kraja polja. To znai da
</html>
bi se red unosio sve dok korisnik ne pritisne na taster "enter" ili "return". Ovo je podeeno
ako nita ne izaberemo ("off"). Opcije koje moemo ovde podesiti su "virtual" i "physical". Prva
3.5 Select tag opcija obezbeuje da se na ekranu korisnika redovi prelamaju, a da se prosleuje ne
prelomljeni tekst, dok kruga opcija prelama tekst i prilikom slanja teksta na server.
Padajua selekciona lista se pravi u HTML dokumentima sa select tag-om. Atributi za
dodatno definisanje tag-a su: tabindex
align
multiple disabled
Ova dodatna opcija slui da dozvolimo korisniku da selektuje vie od jedne stavke liste. readonly
Ako se ne navede korisnik e moi da izabere iskljuivo jednu stavku. Takoe su name
dostupni i sledei atributi koji su ranije ve objanjeni:
3.8 Primeri formi 2
name
size align
tabindex
disabled

3.6 Option tag


Izmeu poetnog i zavrnog select tag-a postavljaju se opcije koje korisnik moe selektovati upravo sa
option tag-om. Ovaj tag predstavlja jedan izbor i moe imati
odreenu vrednost. Opcije u okviru ovog tag-a su:
selected
Opcija u okviru option tag-a koja prilikom inicijalizovanja stranice odreuje da li je <html>
neka opcija ve selektovana ili ne podeava se sa ovom dodatnom opcijom. Neophodno je da <head>
tano jedna opcija ima ovu dodatnu opciju. U sluaju da nijedan option tag nema ovu opciju <title>Primer 2</title>
pojavie se prazno polje prilikom uitavanja ove stranice. </head>
<body>
value <form action="obrada2.php" enctype="text/plain" name="pr2" id="pr2"><table><tr><td
U sluaju da je korisnik izabrao neku opciju vrednost koja e se proslediti na server ili width="150">Izaberite telefon<br>
neki drugi program je upravo vrednost postavljena u value opciji. <select name="telefon" size="4">
<option value="1" SELECTED>Siemens S45</option>
name (objanjeno ranije) <option value="2">Siemens ME45</option>
<option value="3">Siemens C45</option>
3.7 Textarea tag <option value="4">Siemens M35</option>
<option value="5">Siemens C35</option>
Postoje sluajevi kada elimo da neko tekstualno polje ima vie redova za unos od jednog. </select></td>
Tada koristimo upravo ovaj tag. Tekst koji elimo da bude ispisan u ovo polje prilikom <td>Izaberite voce<br>
uitavanja stranice postaviemo izmeu poetnog i zavrnog textarea tag-a. <select name="voce" size="4" multiple>
Opcije za detaljniji opis tag-a su: <option value="1" SELECTED>Jabuka</option>
strana 42
strana 41
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

<option value="2">Kruska</option>
<option value="3">Lubenica</option> 4 Prosleivanje parametara u PHP-u
<option value="4">Breskva</option>
<option value="5">Banana</option> U prolom delu smo napomenuli da je mogue odabrati metodu kojom e se podaci
</select></td> forme proslediti dokumentu (skripti) za obradu primljenih informacija. U ovom delu emo se
<tr><td>Izaberite zemlju<br> detaljnije pozabaviti ovom problematikom kako bi forme koje pravimo bile potpuno
<select name="zemlja"> funkcionalne.
<option value="1" SELECTED>Irska</option> Dve osnovne metode prosleivanja podataka iz forme nekom dokumentu (skripti) su
<option value="2">Grcka</option> POST i GET. Izbor izmeu ove dve metode se vri navodenjem method argumenta unutar
<option value="3">Kipar</option> <form> taga. Izborom metode utiemo na koji nain e se sami podaci forme proslediti
<option value="4">Turska</option> stranici, to je nezavisno od jezika u kome e se ti podaci prihvatiti i obraditi. to se PHP-a
</select></td> tie, izborom metode prosleivanja istovremeno odreujemo nain na koji emo i prihvatiti te
<td>Upisite komentar:<br> podatke, ali o tome malo kasnije.
<textarea cols="15" rows="3" name="komentar"></textarea></td></tr>
<tr><td colspan="2"> Koje su tano razlike u metodama pri samom prosleivanju informacija? Prva razlika je
<input type="submit" value="Posalji"> <input type="Reset" value="Ponisti"></td> ona najdrastinija i odmah uoljiva. Kada se odabere metoda GET podaci forme se alju kroz
</tr></table></form></body></html> komandnu liniju (query string, tj. iza znaka ? u adressbaru browsera). Izborom metode
POST podaci nisu vidljivi u komandnoj liniji vec se alju sakriveno kroz header HTTP
U ovom primeru postoje etiri kontrole (elementa) u formi preko kojih se vri prijem podataka requesta. Detalje oko HTTP requesta i HTTP response-a neemo obraivati jer se radi o
od posetioca (korisnika). Telefon se moe izabrati izmeu ponuenih pet. Unutar spiska sa posebnoj temi, ali je bitno istai da se na podatke poslate POST-om podaci ne moe uticati
voem moe se kliknuti vie puta i selektovati vie stavki. To se postie na klasian "Windows" izmenom linka u adress baru browsera.
nain (upotrebom tastera "Shift" ili "Ctrl"). Izbor zemlje je ostvaren padajuim menijem i Takoe, postoji i ogranienje u pogledu koliine podataka koji se mogu poslati putem
moe se izabrati samo jedna stavka. U polje za unos teksta se moe uneti neki komentar sa GET metode. Ogranienje zavisi od podeavanja samog servera na kome se nalazi
vie redova teksta. Ako elimo da neto unapred pie u samom polju za unos teksta to emo dokumenta na kojem se procesira forma i varira od 256 byte-ova do ak 32 Kb. Zato, ukoliko
upisati izmeu poetnog i zavrnog textarea tag-a (<textarea>ovde nesto pise</textarea>). se radi o formama koje u sebi sadre polja za unos velikih tekstova ili slinih podataka GET i
nije najsrenija metoda za prosleivanje informacija.
Kako se odluiti koju metodu koristiti? Metoda koja se koristi za prosleivanje
informacija zavisi od konkretne problematike koju treba reiti. Svaka metoda ima svoje vrline i
mane.
GET metoda informacije "lepi" na sam URL, to ovu metodu ini idealnom u sluaju
kada elite da omoguite posetiocima site-a da sauvaju stranicu koju gledaju u svoj
Favorites/Bookmarks spisak, jer e sauvati URL zajedno sa svim informacijama koje su
stranici bile prosleene pri pozivu. Primer ovoga bi bio Google i njihov search engine koji sve
podatke iz formi lepi u query string ba iz tog razloga.
Sa druge strane GET je vrlo nesigurna metoda jer posetilac vrlo lako moe izmeniti
prosleene podatke jednostavnom izmenom URL-a u adress baru svog browsera, tako da nije
preporuljivo koristiti ovu metodu za prosleivanje recimo username-a i password-a u login
formama i slinih osetljivih informacija.
Striktna pravila u odabiru metode ne postoje i kao autori aplikacija odluujemo koju
emo metodu koristiti zavisno od situacije u kojoj se nalazimo, to je ve van aspekta ove
skripte. Jedino pravilo koje se mora potovati je da se pri izradi forme u kojoj se vri upload
fajlova (sa korisnikovog raunara na server) obavezno mora koristiti POST metoda, ali o
njima neemo sada govoriti.
Svi parametri prosleeni putem HTTP GET metode, kao deo URL-a, nalaze se u globalnoj
promenljivoj $_GET (starije verzije $HTTP_GET_VARS) koja se ponaa kao niz
promenljivih. Analogno tome, svi parametri prosleeni putem HTTP POST metode, kao
strana 43
strana 44
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

deo URL-a, nalaze se u globalnoj promenljivoj $_POST (starije verzije Pre nego to krenemo na drugi dio primera, primetite da su se podaci koji smo ispunili u
$HTTP_POST_VARS) koja se takoe ponaa kao niz promenljivih. $_GET i $_POST su forma.html dokumentu zalepili na link u prijem.php dokumentu koji ispisuje te podatke.
promenljive korisnikog unosa (superglobals) koje su dostupne iz bilo kog dela skripta, dok http://localhost/prijem_get.php?ime=Marko&submit=Posalji
se njihova vrednost ne moe promeniti unutar PHP skripte koja ih je prihvatila.
Sve iza znaka ? u gornjem linku se naziva QUERY STRING. Radi se o seriji parova imena i
Demonstriraemo rad sa obe metode na praktinom primeru. U oba sluaja i POST i
vrednosti meusobno odvojenim znakom &. Imena odgovaraju "name" atributima polja iz
GET, primer se sastoji iz po dva dokumenta, forma.html i prijem.php.
forme dok vrednosti odgovaraju onome to je korisnik u njih uneo. Ako sada pomiljate na
to da bi bilo mogue ovim nainom preneti podatke iz jedne stranice na drugu direktno putem
4.1 GET metoda
linkova, onda dobro mislite. Naime, PHP-u je svejedno da li se podaci u query stringu
forma_get.html popunjavaju putem neke forme, ili se radilo o <a> tagu u kojem je u href argumentu napisan
<html> URL zajedno sa query stringom.
<head>
Ako je u formi iz primera njeno polje pre submitovanja bilo upisano "Marko", sledei
<title>Primer 1a: Prosledjivanje informacije GET metodom</title>
</head> HTML kod ima ekvivalentan rezultat:
<body> <a href='prihvat.php?ime=Marko'>Moje ime je Marko</a>
<form name="primer1a" method="get" action="prijem_get.php">
Izostavili smo drugu promenljivu u query stringu poto nam ona za sada nije potrebna u
Unesi svoje ime: <input name="ime" type="text" ><br>
<input name="submit" type="submit" value="Posalji"> prijem.php dokumentu.
</form> </body>
</html> Na ovaj nain, parametre u PHP-u moemo prosleivati sa jedne stranice na drugu direktno
putem URLa, kao npr.
prijem_get.php <a href=http://mojsajt.com/index.php?kat=4&id=487&mode=read>link na moj sajt</a> U
<html> ovom sluaju, link vodi na stranicu index.php kojoj se pri pozivu prosleuju tri
<head>
parametra sa odgovarajuim vrednostima - parametri kat, id i mode uzimaju redom vrednosti
<title>Primer 1b: Prihvatanje podataka preko GET metode</title>
4, 487 i 'read'.
</head>
<body>
4.2 POST metoda
<?
echo "Pozdrav " . $_GET["ime"]; forma_post.html
?> <html>
</body> </html> <head>
Pokrenite forma_get.html i ispunite polje sa svojim imenom a zatim kliknite na dugme <title>Primer 1a: Prosledjivanje informacije POST metodom</title>
na kome pie Poalji. Nakon klika na dugme, tj. submitovanja forme se u prozoru otvara </head>
dokument prijem.php koji ispisuje uneseno ime nazad na ekran. <body>
<form name="primer1a" method="post" action="prijem_post.php">
Iz ovog jednostavnog primera je vidljivo da se podacima iz forme pristupa pomou Unesi svoje ime: <input name="ime" type="text" ><br>
odgovarajue superglobalne promenljive. Vrednost nekog elementa forme se nalazi unutar <input name="submit" type="submit" value="Posalji">
te superglobalne promenljive (niza) na indeksu (pod imenom) koji odgovara imenu tog </form> </body>
elementa forme. U kojoj se superglobalnoj varijabli nalaze podaci zavisi od izbora metode </html>
prosleivanja podataka. U ovom primeru je metoda bila GET, tako da je koritena
superglobalna promenljiva $_GET. prijem_post.php
Bitno je primetiti da je korienje name argumenta unutar input taga neophodno da <html>
bismo konkretan podatak koji je unesen mogli da referenciramo u $_GET nizu. Ukoliko ne <head>
imenujete polje, podaci koji se unesu u njega nisu vidljivi PHP skripti koja je namenjena za <title>Primer 1b: Prihvatanje podataka preko POST metode</title>
prihvat podataka iz te forme. </head>
<body>
<?
strana 45 echo "Pozdrav " . $_POST["ime"];
strana 46
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

?>
</body> </html> 5 Uvod u MySQL
Pokrenite forma_post.html i ispunite polje sa svojim imenom a zatim kliknite na dugme 5.1 ta je relaciona baza podataka
na kome pie Poalji. Isto kao i prilikom rada sa GET metodom, nakon klika na dugme, tj.
submitovanja forme u prozoru se otvara dokument prijem.php koji ispisuje uneseno Relaciona baza podataka sadri tabele koje su sastavljene od kolona i vrsta, a
ime nazad na ekran. Razlika je u tome to vie nema query stringa i nije mogue meusobno su povezane vrednostima odreenih kolona. ovek voli da koristi preice i
direktno uticati na podatke nakon to je forma popunjena i submitovana. Jo jedna asocijacije, a to podrava relaciona baza podataka. Da biste razumeli, objasnili ili
razlika je u tome to e se prilikom refresh-ovanja stranice primer_post.php pojaviti klasifikovali neto to je sloeno i teko, obino ga delite na male, logike celine i pokuavate
dodatni dijalog unutar browsera u kome treba odrediti da li se preuzimaju "stari" da usredsredite svu panju na pojedinane delove. Ako razumete pojedinane delove i
podaci koji su ve bili poslati. Ovo nije sluaj pri refresh-ovanju stranice prijem_get.php pa je zamislite meusobne veze, shvatanje celine bi trebalo da bude olakano. Relaciona baza
zbog ovoga GET metoda puno praktinija kada se rade forme za pretraivanje, jer podataka je, prosto reeno, kontejner za te male delove i njihove meusobne veze.
svako dodatno kliktanje pri surfanju kroz web sajt samo moe iznervirati posetioce to
nam nije cilj, zar ne? Razmotrimo jedan praktini primer relacione baze podataka. U realnom svetu razvoja
aplikacija jedan od uobiajenih poslova koji se izvravaju je izrada kataloga za online
Dodatno treba naglasiti i da se prilikom unosa "naih" latininih slova u formama iz prodavnicu. Recimo da je potrebno kreirati katalog za prodavnicu patika. Razmislite ta ini
naih primera ne vri njihovo korektno ispisivanje. Razlog za ovo je u charset-u, tzv. jedan katalog kvalitetnim? Mozda ete doi na ideju da sastavite listu slinu
kodnom rasporedu, dodatnom atributu cele stranice koji se mora navesti unutar <head> sledeoj:
tagova na samo poetku koda. Da bi se ,, , i korektno ispisivali, potrebno je da
ovaj atribut uzme vrednost "winows-1250", kao u sledeem primeru: ID proizvoda (identifikacioni broj)
Naziv Boja
<head> Veliina
<title>Primer 1a: Prosledjivanje informacije GET metodom</title> Cena Opis
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
Sve ove podatke moete uneti u jednu veliku tabelu.
</head>
<body>
<form name="primer1a" method="get" action="prijem_get.php">
Unesi svoje ime: <input name="ime" type="text" ><br>
<input name="submit" type="submit" value="Posalji">
</form> </body>
</html>
Ako ste se odluili za takav pristup, ubrzo ete se suoiti sa problemima. Pretpostavimo da su
u magacin stigle Nike Patike bele boje i Adidas Patike crvene boje. Evo kako e
izgledati naa tabela poto dodamo nove proizvode:

A zatim dobijamo Nke patike crne boje u veliinama 42, 43 i 44. Moramo ih dodati u
tabelu i ogledajte kako e tabela posle toga izgledati:

strana 47 strana 48
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Proimo sada kroz proces dodavanja podataka u tabele iz prethodnog primera.

Uoite koliko puta u tabeli imamo naziv Nike Patike - pet puta, crna boja Nike Patika se
pojavljuje etiri puta itd. Zamislite sada veliku prodavnicu koja ima stotine artikala, pa ako po
svakom artiklu imamo slian broj ponavljanja istih podataka, ubrzo emo imati tabelu sa
nekoliko hiljada slogova. ta e se desiti kada se odreene patike prodaju i treba ih izbrisati
iz tabele, ili ako treba promeniti cenu crnim Nike patikama? Ve pretpostavljate da nam
predstoji posao u kome moramo proi kroz svaki slog i proveriti da li treba neto menjati ili
ne. To je uasno naporan posao i gotovo je nemogua njegova automatizacija. Sada pretpostavimo da su u magacin stigle Nike Patike bele boje i Adidas Patike crvene
Ova pitanja su samo vrh ledenog brega. Bez relacionog dizajna, proveete vie vremena boje. Sve to treba da uradimo jeste da dodamo nove boje u tabelu boje. Kako e posle
trazei odgovore na pitanja "ta ako", nego na razvoj aplikacije i zaraivanje novca od svojih toga izgledati nae tabele:
proizvoda. Umesto velike none more u vidu jedinstvene liste podataka, moete
kreirati nekoliko malih, povezanih tabela:
Master - svaka vrsta proizvoda ima jedinstveni ID, naziv proizvoda, cenu i generalni
opis proizvoda
Boje - Kreirajte po jednu vrstu za svaku boju i pridruite joj ID proizvoda. Ako se neka
majica pojavljuje u pet boja, imae pet vrsta (slogova) u tabeli Colors.
Veliine - kreirajte po jednu vrstu (slog) za svaku velicinu dostupnu za odreeni
proizvod i pridruite joj ID proizvoda da biste znali o kom tano se artiklu radi.

Ove tabele su meusobno povezane upotrebom kljua - ID proizvoda. Sledea slika


ilustruje te veze:

Kao to vidite, samo smo u tabelu boje dodali dva sloga, a sve drugo je ostalo isto.
Uporedite to sada sa poslom koji smo imali kod prethodnog primera.
Nakon toga, dobijamo Nike patike crne boje u veliinama 42, 43 i 44. U ovom sluaju,
nove podatke treba uneti samo u tabelu Velicine koja nakon toga izgleda ovako:
strana 49 strana 50
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Ljudi koji se bave razvojem aplikacija za Web koriste MySQL jer je vrlo brz i nije ni
priblino sloen kao mnogo robusniji sistemi poput Oracle-a, MSSQL servera i
drugih. Osim toga, MySQL je jeftiniji od Oracle-a za nekoliko desetina hiljada dolara, jer
je MySQL open source proizvod - sto znaci da ga moete besplatno koristiti!

5.4 Objanjenje terminologije baze podataka


Osnovni gradivni elementi baze podataka su tabele, polja, slogovi, kljucevi i indeksi.
Tabela je najvei element u bazi podataka. Po redosledu kreiranja, ona je druga po
redu, odmah iza same baze podataka. Dakle, tabela je deo baze. Veina ljudi razmilja o
tabelama kao o velikim ravnim objektima u kojima su sortirani lanovi. Ova predstava moe
Samo smo dodali tri sloga u tabelu veliine i time zavrili posao. Lako se uoava da nam je biti posebno tana ako uvate svoje podatke u Microsoft Excelu, ili u drugim programima za
manipulacija podacima znatno olakana i vrlo se lako moe automatski obavljati. Takoe tabelarno prikazivanje. Meutim, tabela nije pojedinaan fajl koji postoji u vaem sistemu
uoite koliko je lak zadatak promena imena nekih patika. Samo treba otii u master tabelu i fajlova.
promeniti ime na jednom jedinom mestu. Zamislite koliko izmena bi trebalo uraditi u Kada radite sa bazom podataka, ne otvarate fajl i ne unosite podatak, zatvarajui ga dok vam
prethodnom primeru, da bi se promenilo ime nekim patikama. ne bude ponovo potreban. Umesto toga, koristite interfejs za bazu podataka i
Razbijanjem duge liste podataka na nekoliko manjih logikih struktura, postigli ste neto izdajete upite koji upravljaju vaim tabelama i informacijama koje su u njoj smetene. Kada
to se u teoriji zove normalizacija. Ovaj primer nije toliko sloen koliko e biti u stvarnom su tabele napravljene, moete ih obrisati (to je poznato kao dropping) i menjati
razvoju softvera, ali vremenom ete uoiti razne stepene normalizacije u zavisnosti od njihove strukture upotrebom upita. Poto je tabela kontejner podataka, kada je obriete
sloenosti. Ovaj primer mogue je zakomplikovati raznim pitanjima: ta ako imamo razliite obrisali ste i sve podatke koji se u njoj nalaze.
cene za Bele i Crne Nike Patike, ili ako imamo vie podvrsta Nike Patika? U tom sluaju Polja pruaju strukturu tabeli i obezbeuju mesto za smetanje podataka. Koristei
neophodna je dalja normalizacija postojeih tabela, tj. njihovo razbijanje na nove tabele.
analogiju tabelarnog prikaza, moe se rei da su polja neto poput kolona. U svakoj MySQL
Ovde cemo se zaustaviti, jer smo ipak na pocetnom kursu MySQL-a i za sada imamo tabeli moete imati najvie 3398 polja; ako ih zaista nekada budete imali i priblino toliko bie
dovoljno znanja. Kada ponete sa ozbiljnijim radom, sreete se sa konkretnim to jasan pokazatelj da ste zaboravili na normalizaciju.
situacijama u kojima ete postepeno detaljnije razraivati prikazani princip. Slog je unos u tabelu. Ponovo koristei analogiju tabelarnog prikaza, slogovi su vrste
(redovi), a u preseku sloga i kolone dobijamo eliju u koju unosimo podatak koji elimo da
5.2 ta je MySQL?
sauvamo u bazi. Slogovi mogu biti potpuni - ako su sva polja popunjena podacima, ili
MySQL je najpopularnija Open Source baza podataka, sa nekoliko miliona korisnika, od nepotpuni - neka polja su popunjena podacima a neka prazna.
pojedinacnih, koji opsluzuju svoje licne web strane, do velikih korporacija, koje opsluuju Sledea slika prikazuje tabelu sa oznaenim poljima i slogovima:
web stranice sa izuzetno velikim saobracajem. Jedan od primera je Yahoo! Finance koji
koristi MySQL za obradu stotina upita u sekundi, ili miliona upita u toku dana.
Znate ta je relaciona baza podataka, a da biste tano razumeli ta je MySQL, samo
treba dodati jo par rei: MySQL je sistem za upravljanje relacionim bazama podataka
(Relational DataBase Management System - RDBMS). Pored toga to uva sve baze, tabele i
njihove elemente i podatke, MySQL upravlja njima kao jednim entitetom. Korisnicima su
pridrueni nivoi pristupa i dozvole, a svim tim upravlja MySQL. Osim toga, MySQL belei
akcije ovih korisnika i upravlja odgovorima na upite.

5.3 ta su upiti?
Upiti su komande napisane u SQL-u (Structured Query Language), koje aljete svom
sistemu za upravljanje bazama podataka (u ovom slucaju to je MySQL), da biste kreirali
baze i tabele, dodali podatke u njih, izmenili pojedine slogove, obrisali ili preuzeli informacije
koje ete koristiti u aplikaciji. Detaljnije ete se upoznati sa SQL-om kasnije u ovom
poglavlju.

strana 51

strana 52
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Kljuevi mogu biti veoma moni elementi vaih MySQL tabela i slogova. Dok budete stvarali
dobro dizajnirane baze podataka za upotrebu u aplikacijama, koristiete kljueve da biste
INT je ceo broj normalne veliine koji takoe moe biti oznaen ili neoznaen. Ako
je oznaen, doputeni opseg je od -2.147.483.648 do 2.147.483.647. Ako je neoznaen,
povezivali svoje tabele. Neko polje moete definisati kao klju prilikom kreiranja tabele.
doputeni opseg je od 0 do 4.294.967.295.
MySQL podrava dva tipa kljueva: jedinstvene i primarne. Kada definiete polje kao
jedinstveno, saoptavate MySQL-u da, bez obzira ta pokuavali, nikada neete imati
BIGINT je veliki ceo broj koji moe biti oznaen ili neoznaen. Neemo navoditi
doputene opsege jer se radi o brojevima sa po 19 cifara.
mogunost da unesete duplikat u to polje. Na primer, ako kreirate katalog online prodavnice,
imaete nekoliko proizvoda za prodaju. Svaki jedinstveni proizvod iz kataloga ima svoj broj FLOAT(M, D) je broj u pokretnom zarezu koji ne moe biti neoznaen. Moete
proizvoda i taj broj mora biti jedinstven, dakle to e biti jedinstven kljuc. definisati duinu prikaza M i broj decimala D. Nije obavezno navoditi M i D.
Primarni klju je slian jedinstvenom - oba moraju sadrati jedinstvene vrednosti, ali DOUBLE(M, D) je broj u pokretnom zarezu dvostruke tanosti koji ne moe biti
primarni predstavlja glavnu vezu izmeu dve ili vie tabela. Moe postojati samo jedan neoznaen.
primarni klju po tabeli, ali moete imati nekoliko jedinstvenih kljueva. Od svih MySQL numerikih tipova najvie se koristi INT, ali treba strogo voditi rauna o
Indeksi baze podataka su funkcionalno slini indeksu na kraju knjige - pomau da bre tome koji INT se koristi zbog raspoloivog opsega.
pronaete eljeni pojam. Kada definiete polje u tabeli kao primarni klju, MySQL MySQL ima nekoliko dostupnih tipova podataka za uvanje datuma i tanog vremena.
automatski dodaje tu informaciju indeksu. Indekse moete i runo dodati u tabelu da biste
Fleksibilnost MySQL tipova datuma i vremena prebacuje odgovornost za ispravnost
indeksirali polja neim drugim, osim poljem primarnog kljua. Kada selektujete slogove koje
podataka na osobu koja razvija aplikacije. MySQL proverava samo dva elementa: da li je
je indeksirala vaa baza podataka upit e se bre izvravati nego da tabela nema indekse.
mesec izmeu 0 i 12 i da li je dan izmeu 0 i 31. Dakle, MySQL se nee buniti ako unesete
Meutim kada dodajete slog tabeli koja mora izvriti pritom indeksiranje, upit e se neto
31. februar kao dan vanog sastanka, ve o tome aplikacija mora voditi rauna.
sporije izvriti nego da indeksiranja nema. Zato treba pronai balans kada koristiti, a kada ne,
indekse. 5.5.2 MySQL tipovi datuma i vremena
Opte pravilo za kreiranje dodatnih indeksa je kreirati indeks koji podrava upite
zajednike selekcije. Na primer, ako vaa aplikacija poziva upit koji selektuje sve proizvode DATE datum je u YYYY-MM-DD formatu (YYYY-godina sa sve etiri cifre, MM-mesec sa dve
odreene boje i specifine veliine, dodaete indeks koji je kombinacija dva polja - boje i cifre, DD-dan sa dve cifre) izmeu 1000-01-01 i 9999-12-31. Na primer, 30. decembar
veliine. Ovakav pristup znaajno ubrzava izvravanje viekolonskih upita. 1973. godine e biti sauvan kao 1973-12-30.
DATETIME je kombinacija datuma i tanog vremena u formatu YYYY-MM-DD HH:MM:SS
5.5 Tipovi podataka u tabelama izmeu 1000-01-01 00:00:00 i 9999-12-31 23:59:59. Na primer, 15:30 asova 30. decembra
1973. godine e biti sauvano kao 1973-12-30 15:30:00.
Pravilno definisanje polja u tabelama je vano za optimizaciju baze podataka. Koristite samo
tip i veliinu polja koje zaista treba da upotrebite. Ovi tipovi polja se takoe odnose i na TIMESTAMP moe da oznai bilo koji trenutak poev od 1. Januara 1970. godine pa do
tipove podataka koje ete uvati u poljima. MySQL koristi mnogo razliitih tipova podataka, 2037. godine u razmacima od jedne sekunde. Podrazumevani format timestamp-a je
koji su podeljeni na tri kategorije: numeriki, datum/vreme i stringovi. Upoznaete se sa YYYYMMDDHHMMSS (duzina 14), a moete sami skraivati ovu duinu na 12 -
uobiajenim tipovima koji se koriste pri radu sa MySQL-om. Obratite posebnu panju na ovaj YYMMDDHHMMSS, 10 - YYMMDDHHMM, 8 - YYYYMMDD, 6 - YYMMDD, 4 - YYMM i 2 - YY. U
deo, jer je definisanje tipa podataka vanije od drugih delova u procesu kreiranja tabela. formatu duine 14, 15:30 asova 30. decembra 1973. godine e biti sauvano kao
19731230153000.
5.5.1 Numeriki tipovi podataka TIME smeta tano vreme u HH:MM:SS formatu.
TINYINT je veoma mali ceo broj koji moe biti oznacen ili neoznaen. Ako je oznaen, YEAR uva godinu u formatu od 2 ili 4 cifre. Ako je duina naznaena kao 2, YEAR
doputeni opseg je od -128 do +127. Ako je neoznaen (deklarie se sa UNSIGNED) moe biti od 70 do 69 to oznaava godine od 1970 do 2069. Ako je duina naznaena kao 4,
doputeni opseg je od 0 do 255. YEAR moe biti od 1901 do 2155.
SMALLINT je mali ceo broj koji moe biti oznaen ili neoznaen. Ako je oznaen, Najee ete koristiti DATETIME i DATE tipove za vreme i datum.
doputeni opseg je od -32768 do 32767. Ako je neoznaen, doputeni opseg je od 0 do 65535.
MEDIUMINT je ceo broj srednje veliine, koji moe biti oznaen ili neoznaen. Ako 5.5.3 Tipovi stringova
je oznaen, doputeni opseg je od -8.388.608 do 8.388.607. Ako je neoznaen, doputeni Iako su numeriki i tipovi za datum i vreme interesantni, veina podataka koje ete
opseg je od 0 do 16.777.215. smetati u bazu e biti u string formatu. U sledeoj listi objanjeni su uobiajeni tipovi
strana 53 string podataka u MySQLu:
CHAR je string fiksne duine izmeu 1 i 255 karaktera. Sa desne strane je dopunjen
prazninama da bi se obezbedila naznaena duina.
strana 54
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

VARCHAR je string promenljive duine izmeu 1 i 255 karaktera. Morate definisati prezimenom Petrovi. Ako elite da selektujete sva prezimena bez ponavljanja onih
duinu kada kreirate VARCHAR polje. koja se pojavljuju vie puta u tabeli, primeniete sledei upit:
BLOB ili TEXT polje je maksimalne duzine od 65535 karaktera. Jedina razlika izmeu SELECT DISTINCT last_name FROM master_name;
BLOB i TEXT tipova je to je sortiranje i poreenje sauvanih podataka u BLOB formatu case-
sensitive, a u TEXT formatu je case-insensitive. (Case-sensitive izraz oznaava da se Rezultat ovog upita bie lista prezimena sa samo jednim pojavljivanjem prezimena
razlikuju mala i velika slova, dakle M nije isto to i m, dok kod case-insensitive tipa nema Petrovi, to je uzrokovano primenom DISTINCT izraza.
razlikovanja malih i velikih slova pa je M isto to i m). Moe se slobodno rei da je TEXT Podrazumeva se da su rezultati SELECT upita poreani onako kako se pojavljuju u tabeli.
zapravo case-insensitive BLOB. U sluaju BLOB ili TEXT ne moete navesti duinu polja. Ako elite da ih sortirate po nekom specifinom redosledu, po datumima, ID-u, nazivu i slino,
TINYBLOB ili TINYTEXT je BLOB ili TEXT polje sa maksimalnom duinom od 255 naznaite svoje zahteve upotrebom ORDER BY klauzule. U narednoj naredbi
karaktera. Takoe se ne naznaava duina. rezultati su sortirani po prezimenu:

MEDIUMBLOB ili MEDIUMTEXT je BLOB ili TEXT sa maksimalnom duinom od SELECT name_id, first_name, Last_name FROM master_name ORDER BY last_name;
16.777.215 karaktera. Podrazumevano sortiranje ORDER BY rezultata je po rastuem redosledu (ASC); stringovi
LONGBLOB ili LONGTEXT je BLOB ili TEXT sa maksimalnom duinom od 232 karaktera. se sortiraju od A do Z, celi brojevi od 0, a datumi od najstarijih ka novijim. Ovakvo ponaanje
mozete promeniti u sortiranje po opadajuem redosledu upotrebom klauzule
ENUM prestavlja unapred definisan niz moguih vrednosti za dato polje. Verovatno
DESC:
ete koristiti VARCHAR i TEXT polja ee od drugih, pri emu je i ENUM tip vrlo koristan.
SELECT name_id, first_name, Last_name FROM master_name
5.6 Selektovanje (itanje) podataka - SELECT ORDER BY last_name DESC;
Jednom kada bar malo popunite svoje tabele podacima, vreme je da podatke proitate Niste ograniceni samo na sortiranje po jednom polju - mozete naznaciti koliko god
iz tabele. SQL komanda za prikupljanje sauvanih podataka je SELECT i hocete polja, razdvojenih zarezima. Prioritet sortiranja je po redosledu imena polja u listi.
Sintaksa SELECT komande moe biti krajnje jednostavna, ali i vrlo komplikovana. Ako koristite ORDER BY last_name, first_name, rezultati ce biti sortirani po polju
Najosnovnija sintaksa SELECT komande izgleda ovako: last_name, pa zatim po polju first_name:
SELECT izrazi_i_polja FROM ime_tabele SELECT name_id, first_name, Last_name FROM master_name
[WHERE neki_uslov] ORDER BY last_name, first_name;
[ORDER BY neko_polje [ASC|DESC]] LIMIT klauzulu moete koristiti da biste vratili samo odreeni broj slogova vaim SELECT
[LIMIT pocetak, koliko_slogova]
upitom. Postoje dva zahteva kada koristite ovu klauzulu: pocetak i broj_slogova.
Protumaimo navedenu sintaksu poev od prve linije: Pocetak je pocetna pozicija u rezultatima od koje e poeti prikaz rezultata, a broj
slogova jasno govori koliko elite selektovanih vrsta. Kao primer, navedimo kako se
SELECT izrazi_i_polja FROM ime_tabele selektuje prvih pet slogova master_name tabele, sortiranih po polju last_name:
Jedan od prirunih izraza je simbol * koji zamenjuje sve elemente. Dakle, da biste SELECT * FROM master_name ORDER BY last_name LIMIT 0, 5;
selektovali sve elemente (sve vrste i kolone) iz tabele master_name, vaa SQL naredba
e biti: MySQL ima mnoge ugraene funkcije koje doputaju da izvravate sve vrste operacija
nad celim brojevima, stringovima i datumima. Opise ovih funkcija, kao i sintaksu za
SELECT * FROM master_name; njihovu upotrebu moete upoznati u detaljnom manual-u koji dobijate uz instalaciju
Ako izvrite ovaj upit dobiete tabelu sa svim podacima koje imate u tabeli MySQL-a. esto ete imati potrebu za konsultovanjem MySQL manual-a kada se budete
master_name. Ako elite da selektujete samo odreene kolone, zamenite znak * nalazili u situacijama za ije resavanje e vam biti potrebne specifine funkcije
nazivima kolona, razdvojenim zarezima. Naredna naredba selektuje samo name_id, ugraene u MySQL.
first_name i last_name iz tabele master_name: Pomenuemo samo nekoliko funkcija koje mogu biti korisne u primeni sa SELECT
SELECT name_id, first_name, last_name FROM master_name; naedbom. Ako elite da znate koliko slogova ima vaa tabela, moete selektovati sve
slogove i potraiti odgovor koji kae, na primer "5 rows in set". Ali, ako imate
Koristan izraz koji se moe upotrebiti sa SELECT komandom je DISTINCT, koji e vratiti milion slogova, selekcija svih milion vrsta samo da biste videli koliko ih ima, nije najbri
samo razliite pojave u rezultujuem skupu. Poto prethodna reenica nije ba jasna, nain da pronaete odgovor. Umesto toga, moete primeniti COUNT() funkciju, koja
objasniemo primerom. Pretpostavimo da u tabeli master_name ima vie osoba sa broji sve vrednosti u odreenoj koloni koje nisu NULL. Kada to znate, ako koristite
COUNT na primarnom kljuu, moete vrlo brzo doi do broja slogova u tabeli. Evo kako
strana 55
upotrebiti COUNT() funkciju:
strana 56
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

SELECT COUNT(name_id) FROM master_name; SELECT * FROM master_name


WHERE first_name = 'Petar' AND
COUNT() moete koristiti zajedno sa DISTINCT izrazom, koji ste ranije savladali, da biste
last_name = 'Petrovic';
saznali broj jedinstvenih vrednosti u nekom polju:
Ako elite da pronaete slogove sa prezimenom 'Petrovic' ili 'Tesla' evo upita koji ete
SELECT COUNT(DISTINCT last_name) FROM master_name;
koristiti:
Izmeu ostalog, treba pomenuti jo dve osnovne funkcije: MIN() i MAX(), koje se koriste SELECT * FROM master_name
za selekciju minimalnih ili maksimalnih vrednosti u polju. Na primer, selektujete WHERE last_name = 'Petrovic'
minimalne i maksimalne vrednosti za name_id iz master_name tabele: OR last_name = 'Tesla';
SELECT MIN(name_id) FROM master_name; U korienju SELECT naredbe nismo ogranieni na selekciju podataka iz samo jedne
ili: tabele u jednom upitu, ve moemo istovremeno itati podatke iz vie tabela. Ovaj
proces se naziva spajanje tabela. Pretpostavimo da imate dve tabele: fruit i color.
SELECT MAX(name_id) FROM master_name; Upotrebom dve posebne SELECT naredbe moete selektovati sve vrste iz svake tabele:
Ako je polje definisano kao datum, onda e MIN() vratiti najraniji datum, a MAX() select * from fruit;
najnoviji datum u polju. ------------------------------
Ovo je bilo samo nekoliko primera ugraenih MySQL funkcija, a ima ih jako mnogo koje | id | fruit_name |
se kreu od neopaenih do onih bez kojih se ne moe. Vie o bilo kojoj od njih moete ------------------------------
saznati itajui MySQL manual. | 1 | apple |
| 2 | banana |
Sledee to treba znati jeste kako da upotrebom WHERE klauzule selektujemo posebne ------------------------------
slogove iz tabele. Iz osnovne sintakse SELECT naredbe vidi se da je WHERE klauzula
upotrebljena za naznaavanje odreenih uslova: select * from color;
-----------------------------
SELECT izrazi_i_polja FROM ime_tabele [WHERE neki_uslov] | id | color_name |
Recimo da elite da selektujete sve slogove sa prezimenom 'Petrovic': -----------------------------
| 1 | red |
SELECT * FROM master_name WHERE last_name = 'Petrovic'; | 2 | yellow |
-----------------------------
Ako koristite stringove ili datume u WHERE klauzuli, morate ih ograditi znacima navoda.
Kada elite da selektujete odjednom iz obe tabele, postoji nekoliko razlika u sintaksi
U ovom primeru smo koristili operator '=' unutar WHERE klauzule. Postoji mnogo tipova SELECT naredbe. Prvo, morate se uveriti da se sve tabele koje koristite u svom upitu
operatora koje moete koristiti, meu kojima su operatori poreenja i logiki operatori pojavljuju u FROM klauzuli. Upotrebom fruit i color primera, ako jednostavno elite da
najpopularniji. Sledi tabela sa vanijim operatorima i njihovim imenima: selektujete sve kolone i vrste iz obe tabele, primeniete sledeu naredbu:
Operator Znaenje select * from fruit, color;
= Jednako ----------------------------------------------------------
!= Razliito | id | fruit_name |id | color_name |
<= Manje ili jednako ----------------------------------------------------------
< Manje | 1| apple | 1 | red |
>= Vee ili jednako | 2| banana | 1 | red |
> Vee | 1| apple | 2 | yellow |
AN Logiko I | 2| banana | 2 | yellow |
D Logiko ILI ----------------------------------------------------------
O
R
Kada koristite operatore poreenja pri radu sa stringovima, poreenje ne razlikuje Meutim, ono to e uraditi ovaj upit jeste udruivanje dveju tabela tako to e svakom
veliinu slova. Upotrebom operatora poreenja i logikih operatora, moete dobiti vrlo elementu tabele fruit pridruiti svaki element tabele color. Ovakav upit je u svakom sluaju
selektivne upite koji e vam esto biti potrebni radi efikasnog reavanja problema sa kojima neupotrebljiv, pa ete zato skoro uvek prilikom selektovanja iz vie tabela koristiti WHERE
se budete susretali. Evo jednog SELECT upita koji pronalazi sve slogove u tabeli klauzulu kojom ete udruivati one podatke iz vie tabela koji vam daju rezultat koji ima
master_name kojima je ime Petar, a prezime Petrovic: smisla.

strana 57 strana 58
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Recimo da elite da selektujete sve podatke iz fruit i color tabela koji imaju isti ID: Preporuuje se preputanje posla oko inkrementiranja AUTO_INCREMENT polja samom
MySQLu, pa ete stoga najee koristiti poslednji oblik INSERT komande.
select fruit_name, color_name from fruit, color where fruit.id=color.id;
------------------------------------- 5.8 Izmena i brisanje podataka - UPDATE, DELETE
| fruit_name | color_name |
------------------------------------- Za izmenu tabela i njihovog sadraja postoji nekoliko naina pomou MySQL-a. Moete
| apple | red | zameniti cele slogove ili moete samo aurirati pojedina polja. Takoe, moete imati potrebu
| banana | yellow | za brisanjem pojedinih slogova iz tabela.
-------------------------------------
UPDATE je SQL komanda koja se koristi za izmenu sadraja jednog ili vie polja u
5.7 Upisivanje novih podataka u tabele - INSERT postojeem jednom slogu ili vie njih. Najosnovnija UPDATE sintaksa izgleda ovako:
SQL komanda za dodavanje novih slogova u tabelu se naziva INSERT. Sintaksa za UPDATE table_name
dodavanje slogova upotrebom te komande je prilino jednostavna: SET ime_polja='nova vrednost',Ime_polja2 = 'nova vrednost2'
[WHERE neki_uslov_je_ispunjen]
INSERT INTO ime_tabele (lista polja) VALUES (lista vrednosti);
Linije vodilje za auriranje sloga su dakle sline onima koje su upotrebljene prilikom
U okviru liste vrednosti morate ograditi stringove u okviru znaka navoda. SQL standard
insertovanja sloga - podatak koji unosite mora odgovarati tipu podataka polja, a stringove
je obian jednostruki navodnik, ali MySQL dozvoljava i upotrebu dvostrukih navodnika.
morate ograditi navodnicima.
Upamtite da treba voditi rauna da se ne koristi tip navodnika koji se nalaze unutar samog
stringa. Pretpostavimo da imate tabelu pod nazivom fruit, koja sadri ID, naziv voa i status
voa (zrelo ili trulo):
Pored naziva tabele, postoje dva osnovna dela INSERT naredbe: lista polja i lista
vrednosti. Obavezna je samo lista vrednosti, ali, ako izostavite listu polja, morate u listi select * from fruit;
vrednosti navesti vrednost za svaku kolonu po tanom redosledu. ---------------------------------- | id |
fruit_name | status |
Upotrebimo ranije kreiranu tabelu master_name kao primer. Imamo sledea polja:
----------------------------------
name_id, date_added, date_modified, first_name i last_name.
| 1| apple | zrelo|
Da biste uneli ceo slog, moete koristiti jednu od sledee dve naredbe: | 2| banana | trulo|
----------------------------------
1. naredba sa imenovanim svim poljima:
INSERT INTO master_name Da biste aurirali status voa u zrelo u svim slogovima tabele, upotrebite sledei upit:
(name_id, date_added, date_modified, first_name, last_name) update fruit set status='zrelo';
VALUES ('1', '2003-11-03', '2003-11-11', 'Petar', 'Petrovic');
Pogledajte rezultat upita- samo jedan slog je promenjen, jer je drugi slog ve imao
2. naredba koja koristi sve kolone, ali ih ne imenuje eksplicitno:
status='zrelo'.
INSERT INTO master_name
VALUES ('2', '2003-11-03', '2003-11-11', 'Petar', 'Petrovic'); Treba biti veoma paljiv pri upotrebi UPDATE komande i ne zaboraviti WHERE klauzulu,
osim ako zaista ne nameravate da promenite vrednost svih slogova u tabeli. Na primer,
Evo sada interesantne verzije INSERT komande. Poto je name_id AUTO_INCREMENT, ne recimo da je re banana pogreno napisana u tabeli i da elite upotrebom UPDATE
morate da ga navodite u listi vrednosti. Ali, u tom sluaju morate navesti listu sa imenima komande da ispravite greku. Sledei upit e imati veoma loe rezultate:
polja kojima dodeljujete vrednosti, jer e u suprotnom doi do greke. Sledei
upit e izazvati greku: update fruit set fruit_name = 'banane';

INSERT INTO master_name Kada pogledate rezultat ovog upita biete zaprepaeni, jer se vidi da su dva od dva
VALUES sloga promenjena, dakle svi slogovi su promenjeni. Sada tabela fruit izgleda ovako:
('2003-11-03', '2003-11-11', 'Petar', 'Petrovic'); mysql> select * from fruit;
Poto niste naveli ni jednu kolonu, MySQL oekuje da sve kolone budu u listi vrednosti, -------------------------------- | id |
uzrokujui greku u prethodnoj naredbi. Ako je cilj bio da dopustite MySQLu da obavi fruit_name| status |
posao unosa name_id polja umesto vas, mogli ste da koristite sledeu naredbu: --------------------------------
| 1| banane | zrelo | | 2|
INSERT INTO master_name (date_added, date_modified, first_name, last_name) banane | zrelo |
VALUES ('2003-11-03', '2003-11-11', 'Petar', 'Petrovic'); --------------------------------
strana 59 strana 60
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Svi slogovi voa su sada banane. Zbog pokuaja da se promeni naziv jednog polja, sva polja Pretpostavimo da zelite izbrisati sve slogove u tabeli fruit koji sadrze trulo voce. Evo
su promenjena, jer nije bio naveden uslov! Zamislite sada tabelu u kojoj imate upita koji ce jednim potezom to uraditi:
nekoliko miliona slogova sa stotinama vrsta razliitih proizvoda i zamislite jedan ovakav
delete from fruit where status='trulo';
nepromiljen upit koji menja sve slogove. Ukoliko nema back-up kopije podataka... uh.
Uslovno auriranje znai da koristite WHERE klauzule da biste upit usmerili ka tano Kao to vidite iz rezultata upita, jedan slog je izbrisan i sada tabela fruit izgleda ovako:
odreenim slogovima. Upotreba WHERE klauzule u UPDATE naredbi je slino nainu na koji select * from fruit;
se to radi u SELECT upitu. Sva poreenja i logiki operatori mogu biti upotrebljeni. ---------------------------------- | id |
Pretpostavimo da tabela fruit nije popunjena samo bananama, tj. neka sadrzi sledee fruit_name| status |
podatke: ----------------------------------
select * from fruit; | 1| apple | zrelo | | 2| pear |
---------------------------------- | id | zrelo |
fruit_name| status | ----------------------------------
---------------------------------- Ako elite da izbriete samo jedan slog iz tabele primenite klauzulu LIMIT na sledeci
| 1| apple | zrelo | | 2| pear | nain:
zrelo |
| 3| orannge | trulo | delete from fruit -> limit 1;
---------------------------------- Ako sada selektujete sve podatke iz fruit tabele videete da je prvi slog po redu nestao:
Moete videti da re 'orange' nije napisana ispravno. Naredba UPDATE kojom emo
ispraviti re 'orannge' i napisati 'orange' glasi: select * from fruit;
---------------------------------- | id |
update fruit
fruit_name | status |
set fruit_name='orange' where fruit_name='orannge'; ----------------------------------
U ovom sluaju, samo je jedna vrsta promenjena i ako selektujemo sve slogove tabele | 2| pear | zrelo |
fruit evo ta dobijamo: ----------------------------------
Moda nekad poelite da jednostavno obriete sve slogove iz tabele. Evo komande koja
select * from fruit; e to ostvariti:
---------------------------------- | id |
fruit_name | status | delete from fruit;
----------------------------------
| 1| apple | zrelo | | 2| pear |
zrelo |
| 3| orange | trulo |
----------------------------------
Postoji jo nekoliko nacina upotrebe UPDATE komande, ali za sada imate dovoljno
znanja za dalje prouavanje ove komande kada se budete susreli sa nekim realnim
problemom koji e od vas zahtevati neto drugaiji update upit.

Osnovna sintaksa komande DELETE je:


DELETE FROM ime_tabele
[WHERE neki_uslov_je_ispunjen][LIMIT broj_slogova]
Obratite panju da u naredbi brisanja nema navoenja kolone - kada koristite DELETE
uklanja se ceo slog, pa nema smisla navoditi imena polja. Morate biti vrlo oprezni
prilikom upotrebe DELETE naredbe jer tete koje moete uzrokovati njenom pogrenom
primenom mogu biti veoma velike!

strana 61 strana 62
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

$select_query = "SELECT person_id, first_name, last_name FROM cs_personal_info


6 Povezivanje PHP-a i MySQL-a ORDER BY person_id DESC LIMIT 10";

Prva funkcije koju upotrebljavamo da bismo se unutar PHP skripte povezali sa MySQL Promenljivoj $select_query dodelili smo string koji sadri na SQL upit. Zatim pozivamo
serverom glasi: ugraenu funkciju PHPa za prosleivanje ovog upita bazi podataka:

mysql_connect ("adresa_servera", "korisnicko_ime", "lozinka"); $select_result = mysql_query($select_query);

Funkcija mysql_connect() kao argumente prihvata adresu servera na koji se Kljuna funkcija je mysql_query() koja kao argument uzima string sa SQL upitom, a
konektujemo, korisniko ime i lozinku. Ako su ti podaci ispravni, uspostavili smo vezu sa nakon izvravanja vraa u program odreene informacije koje zavise od vrste upita koji smo
serverom. postavili.

Sledea funkcija nam sluzi da odaberemo bazu sa kojom emo raditi iz naeg PHP Ako smo postavili SELECT upit, funkcija mysql_query vraa pokaziva na resurs koji
skripta: sadri rezultat upita, pod uslovom da je upit uspeno izvren, a u suprotnom vraa FALSE.
Pokaziva na resurs smetamo u promenljivu da bi smo ga mogli kasnije u programu koristiti
mysql_select_db ("ime_baze"); na nain koji ete kasnije upoznati.
Funkcija mysql_select_db() kao argument prihvata ime baze sa kojm elimo da radimo. Ako postavimo UPDATE, DELETE, DROP ili neki drugi tip upita, funkcija mysql_query
Posle ova dva koraka, spremni smo da postavljamo upite bazi podataka. Da bismo se vraa TRUE u sluaju uspenog izvrenja ili FALSE u sluaju neuspeha. Potpuno identinu
povezali na MySQL server i odabrali bazu koju smo na poetku kreirali, treba da izvrimo proceduru koristite izvravate UPDATE ili DELETE upit - definiete promenljivu koja sadri
sledei kod: upit i iskoristite je kao argument u pozivu funkcije mysql_query().
<?php Kako PHP pristupa podacima koji su vraeni kao rezultat SELECT upita i kako ih moemo
mysql_connect('localhost', 'root', 'root') or die(mysql_error()); dalje koristiti u naim web aplikacijama? Pogledajte sledei deo koda:
mysql_select_db ('test') or die(mysql_error()); $select_query=" SELECT person_id,first_name, last_name FROM cs_personal_info
?> ORDER BY person_id DESC LIMIT 100";
Naravno, argumente koji su navedeni u zagradama treba zameniti onim koji odgovaraju $select_result = mysql_query($select_query);
vaem sistemu. while($select_row=mysql_fetch_array($select_result))
{
Nakon zavretka bloka naredbi unutar PHP skripte koje barataju podacima iz MySQL $person_id = $select_row[person_id];
baze, odnosno nakon itanja, upisa, izmene ili brisanja podataka iz odgovarajuih $user_first_name = $select_row[first_name];
tabela, ukoliko u nastavku koda ne postroji potreba za daljom komunikacijom sa MySQL $user_last_name = $select_row[last_name];
bazom otvotenu konekciju treba zatvoriti naredbom mysql_close(); echo $person_id." ".$user_first_name." ".$user_last_name."<br>";
}
<?php
mysql_connect('localhost', 'root', 'root') or die(mysql_error()); Na poetku definiemo upit koji selektuje person_id, first_name i last_name iz tabele
mysql_select_db ('test') or die(mysql_error()); cs_personal_info. Zatim taj upit postavljamo kao argument funkcije mysql_query() i ona vraa
/* pokaziva na rezultate koje je vratio na upit, i ujedno taj pokaziva smetamo u promenljivu
naredbe koje komuniciraju sa MySQL bazom $select_result. Da bi smo pristupili rezultatu upita, koristimo funkciju mysql_fetch_array()
*/ kojoj kao argument predajemo pokaziva na vraeni rezultat upita $select_result.
mysql_close(); ta radi funkcija mysql_fetch_array()? Ona pristupa vraenim rezultatima, uzima jedan
?> slog iz svih vraenih slogova i formira asocijativni niz iji su indeksi imena polja koja smo
naveli u SELECT upitu, a vrednosti su jednake vrednostima u tekuem preuzetom slogu. Taj
asocijativni niz se dodeljuje promenljivoj $select_row, koju smo naveli pri
6.1 itanje podataka iz MySQLa, manipulacija i UPDATE pozivu funkcije mysql_fetch_array():
Nakon uspostavljanja veze sa MySQL serverom moemo pristupiti definisanju i
izvravanju MySQL upita nutar PHP koda. Ovaj postupak je vrlo jednostavan i postie se while ($select_row = mysql_fetch_array($select_result))
upotrebom nekoliko funkcija. Da bismo preuzeli svaki vraeni slog, moramo formirati while petlju koja se izvrava
Najpre pokaimo kako da postavimo upit bazi podataka, bilo da je to SELECT, INSERT ili dokle god funkcija mysql_fetch_array() uzima naredni slog iz vraenih rezultata. Kada se i
UPDATE upit. To radimo u dva koraka. Prvi je definisanje upita: poslednji slog preuzme, prestaje izvravanje while petlje. U svakoj iteraciji kroz while
strana 64
strana 63
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

petlju imamo pristup tekuem preuzetom slogu. U naem primeru, koristimo taj pristup $poslednji_id = mysql_insert_id();
da bi smo promenljivama $person_id, $user_first_name i $user_last_name dodelili echo "<br><br>Poslednji uneti person_id:". $poslednji_id."<br><br>";
vrednosti iz tekueg dobijenog sloga:
Pri uitavanju podataka koje treba prikazati tabelarno na PHP stranici, uobiajena
$person_id = $select_row[person_id]; praksa je da se u tabeli prikazuju samo osnovne informacije, dok se ostatak informacija za
$user_first_name = $select_row[first_name]; konkretan slog u bazi moe pregledati na posebnoj stranici do koje posetilac stie ukoliko
$user_last_name = $select_row[last_name]; klikne unutar neke od elija u odgovarajuem redu. U ove svrhe, koristimo GET metodu
prihvatanja parametara (obraena ranije u ovoj skripti) po kojoj se vrednosti pojedinanih
Dalje smo te vrednosti koristili da bismo odtampali na ekranu id osobe, ime i prezime:
parametara prenose putem poziva stranice sa detaljima.
echo $person_id." ".$user_first_name." ".$user_last_name."<br>"; list.php
Na potpuno isti nain ete uvek uzimati rezultate upita, samo sto ete u razliitim echo "<table>";
situacijama na drugaije naine koristite slogove koje upit vrati. Dobro upamtite ovu $select_query = " SELECT person_id, first_name, last_name
kombinaciju upita i while petlje jer e vam jako esto biti potrebna. FROM cs_personal_info
ORDER BY person_id DESC LIMIT 100"; $result
Alternativni nain pristupanja poljima unutar jednog vraenog sloga je navoenje = mysql_query($select_query);
rednog broja kolone u upitu umesto navoenja tanog imena kolone, tj. za upit: $rbr=1;
$select_query=" SELECT person_id,first_name, last_name FROM cs_personal_info"; while($single_p=mysql_fetch_array($result))
{
moemo nakon mysql_query i mysql_fetch array pristupiti pristiglim podacima na sledei echo "<tr><td>".$rbr. "</td><td>";
nain: echo "<a href='details.php?id=".$single_p["first_name"]."'>".$single_p["first_name"]."
".$single_p["last_name"]."</a>";
$person_id = $select_row[0];
echo "</td></tr>";
$user_first_name = $select_row[1];
$rbr++;
$user_last_name = $select_row[2];
}
Meutim, ako se upit promeni pa kolone u SELECT delu zamene redosled ili jo neka echo "</table>";
kolona bude dodata izmeu postojeih, indeksi 0,1 i 2 e oznaavati sasvim druge podatke u details.php
odnosu na postojeu situaciju, pa o tome treba voditi rauna prilikom izmene upita iji su
$idP=$_GET["id"];
rezultati u nekoj od prateih naredbi ve proitani na ovaj nain.
$select_query = "SELECT * from cs_personal_info WHERE person_id=".$idP;
Ako elite da saznate koliko slogova je vratio SELECT upit, upotrebite funkciju $result = mysql_query($select_query);
mysql_num_rows() na sledei nain: $single_p=mysql_fetch_array($result);
echo "<table>";
$select_query = " SELECT person_id, first_name, last_name FROM cs_personal_info
echo "<tr>";
ORDER BY person_id DESC LIMIT 100";
echo "<td>".$single_p["first_name"]. "</td>"; echo
$select_result = mysql_query($select_query);
"<td>".single_p["last_name"]."</ td >";
echo "Num Rows: ".mysql_num_rows($select_result). "<br>";
// echo svih ostalih polja
Ako hoete da saznate na koliko slogova je uticao va INSERT, DELETE ili UPDATE upit, echo "</tr>";
koristite funkciju mysql_affected_rows(): echo "</table>";
$query = "UPDATE cs_personal_info SET first_name = 'Marko' WHERE first_name ='Mile' "; Pored navedenih funkcija, postoje mnoge druge PHP funkcije predviene za rad sa
$result = mysql_query($query); MySQLom a vie detalja o njima moete pronai u PHP Manual-u. O jo nekim funkcijama
echo "<br><br>Affected Rows:".mysql_affected_rows($result); PHP-a koje slue u druge svrhe pogledajte u sledeem poglavlju ove skripte.
A da bi ste saznali koji je poslednji auto increment id postavljen u INSERT upitu koji je
obuhvatao polje definisano kao AUTO INCREMENT, koristite funkciju mysql_insert_id()
neposredno posle INSERT upita:
$query = "INSERT INTO cs_personal_info( owner_id, date, first_name, last_name)
VALUES(,'1982-05-08','Marija', 'Petkovic');
$result = mysql_query($query);

strana 65 strana 66
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

<?php
7 PHP Funkcije $array1 = array ("zeleno", "crveno", "plavo","zuto");
$array2 = array ("zeleno", "crveno", "crno");
Kao to je ve reeno u poetnim poglavljima ove skripte, PHP je bogato opremljen $result = array_diff ($array1, $array2);
funkcijama za manipulisanje razliitim tipovima sadraja: tekstualni fajlovi (.txt, .log), grafika echo implode(" | ",$result); //
(png, jpg, flash), programske komponente (.NET moduli, XML) itd. Takoe je bogato Rezultat je: plavo | zuto
opremljen i funkcijama koje obrauju podatke sauvane u programskim ?>
promenljivama i vraaju rezultate koje moemo dalje koristiti u samoj web aplikaciji.
array_intersect() - izraunava razliku izmeu nizova
Funkcije u PHP-u se mogu grupisati u nekoliko kategorija:
Format: array_intersect($array1,$array2...)
Array funkcije Opis: Izraunava presek izmeu nizova. Kao rezultat vraa niz sa elementima iz $array1 koji
Funkcije za rad sa datumima i vremenom se ponavljaju u svim ostalim nizovima.
Direktorijske funkcije <?php
Fajl funkcije
$array1 = array ("zeleno", "crveno", "plavo","zuto");
FTP funkcije $array2 = array ("zeleno", "crveno", "crno");
MySQL funkcije $result = array_diff ($array1, $array2);
Regularni izrazi echo implode(" | ",$result);
Sessions // Rezultat je: zeleno | crveno
String funkcije ?>
Funkcije za rad sa promenljivama
array_keys() - pokazuje sve keys iz niza
Daemo prikaz po par funkcija iz svake od kategorija zajedno sa primerima korienja. Vie Format: rray_keys($array[trazeni value])
informacija moete pronai u PHP Manualu.
Opis: Pokazuje sve keys (numerike i stringove) od datog niza. Ako je zadata i traena
vrednost (value), onda e biti pokazani samo keys sa tim vrednostima.
7.1 Array funkcije
<?php
Grupe funkcija za rad sa nizovima - kreiranje nizova, uporeivanje, brisanje i dr.
$array = array (0 => 100, "boja" => "crvena");
array() - kreira numerike i asocijativne nizove print_r(array_keys ($array));
// Rezultat je: Array ( [0] => 0 [1] => boja )
Format: array $array (...)
$array = array ("plava", "crvena", "zelena", "plava", "plava");
Opis: Kreira numerike i asocijativne nizove. Elementi su razdvojeni zarezom. Da bi jednom print_r(array_keys ($array, "plava"));
elementu dodali odgovarajui indeks i napravili asocijativni niz, koristite operator =>. // Rezultat je: Array ( [0] => 0 [1] => 3 [2] => 4 )
Takoe je mogue praviti niz unutar niza, tako da je taj novi niz jedan element glavnog niza. $array = array ("color" => array("plava", "crvena", "zelena"), "size" => array("mala",
Na ovaj nain dobijamo viedimenzioni niz. "srednja", "velika"));
<?php print_r(array_keys ($array));
$adrese = array( // Rezultat je: Array ( [0] => color [1] => size )
"google"=>"http://www.google.com", ?>
"yahoo"=>"http://www.yahoo.com/");
$imena = array("Marko","Vesna","Jelena"); 7.2 Funkcije za rad sa datumima i vremenom
echo $adrese["google"]." - ".$imena[1];
// rezultat je: http://www.google.com - Vedran PHP podrava jako puno funkcija za rad sa datumima i vremenom. Vreme se moe
?> prikazivati u danima, satima, sekundama, moe biti globalno ili lokalno i dr. Evo nekih od
funkcija.
array_diff() - izraunava razlike izmeu nizova checkdate() - proverava da li je datum vaei
Format: array_diff($array1,$array2...) Format: checkdate(mesec,dan,godina)
Opis: Izraunava razlike izmeu nizova. Kao rezultat vraa niz sa elementima iz $array1 koji Opis: Proverava da li je datum vaei. Ako je, daje true kao odgovor a inae false.
se ne ponavljaju u drugim nizovima. Sledei uslovi moraju biti ispunjeni: -
godina mora biti izmeu 1 i 32767
strana 68
strana 67
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

- mesec mora biti izmeu 1 i 12 <?php


- dan mora biti vaei (npr. mesec ne moze imati 40 dana) echo date("Y-F-l - H:i:s");
Prestupne godine se takoe proveravaju. // Rezultat je: 2002-March-Thursday - 18:07:02
<?php ?>
if(checkdate(2,29,2000))
{ getdate() - pokazuje datum/vreme po asovniku servera (ne klijenta!)
echo "2000. je prestupna godina"; Format: getdate(timestamp)
} Opis: Vraa datum/vreme u obliku niza, i to u sekundama od 01.01.1970. godine. Ako ne
else koristite timestamp, bie pokazano trenutno vreme.
{ Sledei elementi se nalaze u nizu:
echo "Pogresan Datum."; "seconds" - sekunde
} "minutes" - minute
// Rezultat je: 2000. je prestupna godina "hours" - sati
?> "mday" - dan u mesecu (npr. "13")
"wday" - numeriki dan u nedelji (npr. "2" za utorak)
"mon" - numeriki mesec (npr. "10")
date() - formatira datum i pokazuje lokalno vreme "year" - godina (npr. "2002")
Format: date(datum_format[,"timestamp"]) "yday" - dan od poetka godine (npr. "225")
Opis: Pokazuje lokalno vreme. Ako ne napiete timestamp, pokazae trenutno vreme. "weekday" - puno ime dana u nedelji (npr. "Saturday")
Timestamp pokazuje vreme proteklo od 01.01.1970. godine do eljenog trenutka u vremenu, "month" - puno ime meseca (npr. "February")
izraeno u sekundama. Sledei formati se mogu koristiti: <?php
a - "am" ili "pm" ("prepodne" ili "poslepodne") $today = getdate();
A - "AM" ili "PM" $month = $today[month];
B - swatch internet vreme(1000 Beats u 24 h; Vreme u gradu Biel = 000 Beats) $mday = $today[mday];
d - dan meseca sa nulom (npr. "09") $year = $today[year];
j - dan meseca bez nule (npr. "9") t - broj echo "$month $mday, $year";
dana u mesecu (npr. "30") // Rezultat je: March 23, 2002
?>
z - dan od poetka godine (npr. "156") gmdate() - date(), ali u GMT zoni
w - numeriki dan nedelje (od "0" za nedelju do "6" za subotu)
D - skraeno ime za dan u nedelji (npr. "Thu") l - Format: gmdate()
puno ime dana u nedelji (npr. "Thursday") Opis: Isto kao date(), samo to se odnosi na GMT (Greenwich Mean Time). Na primeru ispod
F - puno ime meseca (npr. "December") se vidi razlika.
M - skraeno ime meseca (npr. "Dec")
<?php
m - numeriko ime meseca sa nulom (npr. "05")
n - numeriko ime meseca sa nulom (npr. "5") echo date ("M d Y H:i:s", mktime (0,0,0,1,1,1998));
h - sat u 12-satnom formatiranju (npr. "05") H - // Rezultat je: Jan 01 1998 00:00:00
sat u 24-satnom formatiranju (npr. "18") echo gmdate ("M d Y H:i:s", mktime (0,0,0,1,1,1998));
g - sat u 12-satnom formatiranju bez nule (npr. "5") G - // Rezultat je: Dec 31 1997 23:00:00
sat u 24-satnom formatiranju bez nule (npr. "7") ?>
i - minute (npr. "07")
U - protekle sekunde od 01.01.1970 (npr. "4890729") 7.3 Direktorijumske funkcije
s - sekunde (npr. "02")
Funkcije za rad sa direktorijumima (folderima) na serveru - otvaranje direktorijuma, ulazak
S - engleski redni broj (npr. "th", "nd") L -
u direktorijum, prelazak u drugi direktorijum itd. Evo nekih od funkcija.
prestupna godina. rezultat "0" ili "1"
Y - 4-cifrena godina (npr. "1999") chdir() - menja direktorijum
y - 2-cifrena godina (npr. "99") Format: chdir($dir)
Z - razlika u vremenu u odnosu na GMT (od "-43200" do "43200")
Opis: Mijenja trenutni PHP direktorij. Vraa true ako komanda uspe, inae false
strana 69 strana 70
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

dir() - ita direktorijum <?php


Format: dir($dir) readfile("neki_file.txt")
Opis: ita direktorijum koji je prethodno otvoren. // Rezultat je: citav file bez \n
<?php ?>
$d = dir("."); file_exists() - proverava da li fajl postoji
echo "Handle: ".$d->handle." | ";
Format: file_exists($file)
echo "Path: ".$d->path." | ";
while($entry=$d->read()) Opis: Proverava da li fajl postoji i vraa true ako postoji, odnosno false ako ne postoji.
{ <?php
echo $entry." | "; echo file_exists("data.txt"); // Rezultat je: 1
} ?>
$d->close();
// Rezultat su fileovi iz direktorijuma "C:/": fopen() - otvara file ili URL
//Handle: Resource id #1 | Path: C:/ | //AUTOEXEC.BAT | BOOT.DOS | Format: fopen($file,$modus)
?> Opis: Otvara fajl lokalno ili na nekom drugom serveru (http:// ili ftp://). Funkcija vraa tzv.
index fajla koji drugim komandama govori na koji se od otvorenih fajlova misli.
getcwd() - pokazuje trenutni aktivni direktorijum
$modus govori u kojem modusu treba da se otvori fajl. Na izboru imate:
Format: getcwd() 'r' - otvara fajl samo za itanje
Opis: Pokazuje trenutni aktivni direktorijum. 'r+' - otvara fajl za itanje i pisanje
<?php 'w' - otvara fajl samo za pisanje
echo getcwd(); 'w+' - otvara fajl za itanje i pisanje i brie dosadanji sadraj fajla, odnosno stvara
// Rezultat je: C:\apache\htdocs\ novi fajl, ako ne postoji
?> 'a' - otvara fajl samo za pisanje i stavlja kursor na kraj fajla i stvara novi fajl, ako ne
postoji
'a+' - otvara fajl za pisanje i itanje i stavlja kursor na kraj fajla i stvara novi fajl,
ako ne postoji
7.4 Fajl funkcije $modus moe sadrati i slovo "b", koje govori komandi da se radi o binarnom fajlu. Od
Pomou ovih funkcija radimo sa fajlovima na serveru. itamo ih, kreiramo, piemo u znaaja je samo na Windows serverima.
njih, menjamo im vlasnika (na Linux, Unix i drugim operativnim sistemima) itd.
<?php
copy() - kopira fajl $fp = fopen ("/home/rasmus/file.txt", "r");
Format: copy($file,$novi_file) $fp = fopen ("/home/rasmus/file.gif", "wb");
Opis: Kopira fajl. $novi_file moe biti samo novo ime fajla, ali moe biti i cela putanja, npr: $fp = fopen ("http://www.php.net/", "r");
slike/index.html ili ../slikestare/index.html.bak . U svakom sluaju direktorijum mora postojati, $fp = fopen ("ftp://user:password@example.com/", "w");
inae komanda nee biti uspeno izvrena. // na Windowsu pazite na backslashes
$fp = fopen ("c:\\data\\info.txt", "r");
<?php // Rezultat je: Indexi file-ova
$file = "index.html"; ?>
$novi_file = "index.html.bak";
if (!copy($file, $novi_file)) fwrite() - pie u file pointer
{ Format: fwrite($file_pointer)
echo "Kopiranje nije izvreno"; Opis: Pie u file pointer. Moete zadati koliko elite da upiete u $file_pointer pomou
} $duina. Ako nita ne zadate, bie upisan itav string.
?> <?php
readfile() - ita fajl i pokazuje njegov sadraj fwrite($file_pointer,"Ovaj tekst se upisuje u file");
// Rezultat je: u file pointer je upisan tekst
Format: readfile($file) ?>
Opis: ita fajl i pokazuje sadraj fajla.
strana 71 strana 72
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

7.5 FTP Funkcije <?php


Koriste se za rad sa udaljenim raunarom preko FTP protokola. Uspostavljanje FTP veze, $host = "localhost"; $user =
skidanje(download) i slanje (upload) datoteka na udaljenom raunaru i dr. "fsb_stud";
ftp_connect() - uspostavlja vezu sa FTP serverom $pass = "passwd";
Format: ftp_connect($host[,$port]) $x = mysql_connect($host, $user, $pass);
Opis: Uspostavlja/spaja se na FTP server. Obino koristi port 21, ako neki drugi $port nije // ili
posebno specificiran. Vraa 1 ako komanda uspe. $x = mysql_connect($host, $user, $pass) or die("Vezu nije mogue uspostaviti.");
?>
<?php
$ftp = ftp_connect("alpha1.fsb.hr",21); mysql_create_db() - kreira MySQL bazu
echo $ftp; Format: mysql_create_db($db[,$veza])
// Rezultat je: 1 Opis: Kreira bazu na MySQL serveru. Definisanje $veze (mysql_connect ili
?> mysql_pconnect) nije obavezno. Mogue je koristiti i mysql_createdb (starija funkcija).

ftp_fget() - skida file sa FTP servera i snima ga u otvoreni fajl <?php


$x = mysql_connect($host,$user,$pass);
Format: ftp_fget($ftp,$lokalni_file_pointer,$ftp_file,$modus) $y = mysql_create_db("user_fsb",$x]);
Opis: Downloaduje fajl sa FTP servera i snima ga u otvoreni file pointer. Morate odrediti // Rezultat je: baza sa imenom user_fsb je kreirana.
$modus prenosa file-a: FTP_ASCII ili FTP_BINARY. Vraa 1 ako komanda uspe. ?>
<?php mysql_drop_db() - brie MySQL bazu
$lokalni_file_pointer = fopen($lokal,"a+");
$ftp_file = "marko.html"; Format: mysql_drop_db($db[,$veza])
echo ftp_fget($ftp,$lokalni_file_pointer,$ftp_file,FTP_ASCII); Opis: Brie bazu na MySQL serveru. Ako $veza nije definisana, onda se koristi trenutno
// Rezultat je: 1 aktivna veza.
?> <?php
ftp_rename() - preimenuje fajl na serveru $x = mysql_drop_db("user_fsb ");
if ($x)
Format: ftp_rename($ftp,$staro_ime,$novo_ime) {
Opis: Menja ime file-a na FTP serveru. Ako funkcija uspe vraa true, inae false. echo "Baza user_fsb je obrisana";
<?php }
if (!@ftp_rename($ftp,"stari.html","novi.html")) // Rezultat je: Baza user_fsb je obrisana (ako je //komanda uspjela)
{ ?>
echo "File stari.html nije mogue preimenovati.";
} 7.7 Regularni Izrazi
else Slue za rad sa stringovima.
{
echo "Menjanje imena uspesno."; ereg_replace() - zamenjuje deo jednog stringa nekim drugim stringom
} Format: ereg_replace($stari,$novi,$string)
?>
Opis: Zamenjuje deo jednog stringa nekim drugim stringom
<?php
7.6 MySQL funkcije
$string = "www.google.com";
Za komunikaciju sa MySQL bazom podataka, itanje, upis, izmenu i brisanje podataka.
echo ereg_replace ("www", "mail", $string);
mysql_connect() - upostavlja vezu sa MySQL serverom // Rezultat je: mail.google.com
?>
Format: mysql_connect($host[:$port][$socket_path],$user[,$pass])
Opis: Uspostavlja vezu sa MySQL serverom. Obino je dovoljno navesti samo $host, $user i preg_quote() - stavlja backslash ispred regexp znakova
$pass (ako $user ima definisan password). Dosta retko je potrebno upisati $port odnosno Format: preg_quote($string[,$granica])
$socket_path. $host je najee definisan kao "localhost".
strana 73 strana 74
Hadi-erina 2, tel.011 / 244 77 81 Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23 Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs www.systempro.co.rs
e-mail: office@systempro.co.rs e-mail: office@systempro.co.rs

Opis: Stavlja backslash ispred znakova u regularnom izrazu, da specijalni znakovi kao to Opis: Zamenjuje odreene znake ($znakovi) u stringu kroz druge znake ($zamena).
su . \\ + * ? [ ^ ] $ ( ) { } = ! < > | : ne bi bili prepoznati kao deo regularnog izraza. Ako je Redosled i broj znakova u $znakovi i $zamena moraju biti isti - prvi znak iz $znakovi se
$granica definisana, i isped nje e biti stavljen backslash. odnosi na prvi znak iz $zamena, drugi na drugi itd.
<?php <?php
$tekst = "www.systempro.rs je jedna *dobra* stranica."; echo strtr("www.systempro.rs", "ypr", "isk"); // Rezultat je: www.sistemsko.ks
$rec = "*dobra*"; ?>
$tekst = preg_replace ("/".preg_quote($rec)."/","<i><b>".$rec."</b></i>",$tekst);
echo $tekst;
substr($str_zadati, $int_pocetna_pozicija, $int_broj_znakova) - za izvlaenje
/* Rezultat je: www.systempro.rs je jedna *dobra* stranica. ( re *dobra* napisana tano odreenog dela stringa. Ukoliko je potrebno izvui znakove sa kraja stringa
debelim i kurzivnim slovima) */ funkciji dajemo kao poetnu poziciji negativni broj.
?> $str1="systempro";
// ispisivanje prvih 4 znaka stringa
7.8 String funkcije $str_izvuceni=substr($str1,0,4);
echo "Prva 4 znaka stringa : '$str_izvuceni'<br>"; // ispisuje: "syst"
Slue za rad sa stringovima. $str_izvuceni=substr($str1,-4,4);
print() - prikazuje string echo "Zadnja 4 znaka stringa : '$str_izvuceni'<br>"; // ispisuje: "mpro"
Format: print($string) Opis:
Prikazuje string.
ltrim(), rtrim(), trim() - izbacivanje praznina i belih znakova iz stringa
Beli znaci (nevidljivi za ispis): null bajt ("\0"), tabulator ("\t"), vertikalni tabulator
<?php
("\x0B"), nov red ("\n"), poetak reda("\r") i razmak (" ").
print ("www.systempro.rs");
ltrim($str1) izbacuje praznine i bele znake sa leve strane (poetka) $str1, sve dok se ne
// Rezultat je: www.systempro.rs
naie na prvi ne-prazni znak.
?>
rtrim($str1) izbacuje praznine i bele znakove sa desne strane (kraja) $str1.
strlen() - otkriva duinu stringa trim($str1) izbacuje praznine i bele znakove sa obe strane $str1.
Format: strlen($string) strtolower(), strtoupper (), ucfirst(), ucwords() - prebacivanje iz malih u velika slova
Opis: Otkriva duinu stringa - broji koliko ima znakova u stringu ukljuujui i space strtolower($str1) - sva slova u $str1 postaju mala slova
(prazan prostor).
strtoupper($str1) - sva slova u $str1 postaju velika slova (caps lock)
<?php ucfirst($str1) - prvo slovo prve rei unutar $str1 postaje veliko
echo strlen("koliko ima znakova ovaj tekst?"); ucwords ($str1) - prvo slovo svake rei unutar $str1 postaje veliko
// Rezultat je: 30 (sa praznim mestima) $str1="systempro skola racunara i stranih jezika";
?> // ispisivanje prvih 4 znaka stringa
strcspn() - uporeuje dva stringa po njihovim znacima $str2= ucwords ($str1);
echo $str2; // ispisuje: " Systempro Skola Racunara I Stranih Jezika "
Format: strcspn($string1,$string2)
Opis: Uporeuje dva stringa po njihovim znacima i vraa broj znakova u $string1 koji se 7.9 Funkcije za rad sa promenljivama
nalaze s leva pre nego to je naen bilo koji znak iz $string2 u njemu. Komparacija je
case sensitive (malo 'm' i veliko 'M' nisu jedno te isto slovo) isset() - proverava da li promenljiva postoji
<?php Format: isset($varijabla)
echo strcspn("www.systempro.rs je super","ri"); Opis: Ako promenljiva postoji vraa 0, inae 1.
/* Rezultat je: 11 (jer se slovo "r" iz "ri" nalazi na dvanaestom mestu u prvom stringu */ Vano: Kada formulari alju promenljivu, ona ima uvek vrednost 1. ak i kada se u
?> promenljivoj ne nalazi nita, formular dodaje prazan string u promenljivu.
strtr() - zamenjuje odreene znakove kroz druge znakove <?php
Format: strtr($string,$znakovi,$zamena) $test1 = 3;
echo isset($test1); // Rezultat je: 1
?>

strana 75 strana 76
Hadi-erina 2, tel.011 / 244 77 81
Cvijieva 98, tel.011 / 275 42 23
www.systempro.co.rs
e-mail: office@systempro.co.rs

is_integer() - da li je trenutna vrednost promenljive ceo broj


Format: is_integer($promenljiva)
Opis: Ispituje da li je promenljiva prirodni broj (integer). Ako jeste vraa 1, inae 0.
<?php
$test1 = 12;
$test2 = 12.55;
echo is_integer($test1)." : ".is_integer($test2);
// Rezultat je: 1 : 0
?>
var_dump() - daje informacije o promenljivoj
Format: var_dump($varijabla)
Opis: Daje informacije o promenljivoj - njen tip i vrednost.
<?php
$test1 = "Pera";
$test2 = 5872;
var_dump($test1);
echo " - ";
var_dump($test2);
// Rezultat je: string(5) "Pera" - int(5872)
?>
empty () - utvruje da li se promenljiva moe smatrati praznom
Vraa TRUE ako se promenljiva moe smatrati praznom, ili FALSE u suprotnom.
Promenljiva se smatra praznom ako nije definisana ili ima nultu vrednost. Sledee vrednosti
se smatraju praznim: "" (prazan string), 0 (0 kao integer), "0" (0 kao string), NULL, FALSE itd.

strana 77

Anda mungkin juga menyukai