You are on page 1of 36

V I S O K A T E H N I K A K O LA

NI

SEMINARSKI RAD
PHP i MySQL
Predmet: Napredne internet i web tehnologije

Profesor: dr Zoran Velikovi

Student:
Katarina Dili RTs 3/14

Sadraj

1.

Uvod..............................................................................................................................................4

2.

Osnove PHP skriptnog jezika........................................................................................................5


2.1.

Osnove PHP sintakse..............................................................................................................5

2.2.

Promenljive I operacije sa njima............................................................................................5

2.2.1.

Promenljive.....................................................................................................................5

2.2.2.

Konstante.........................................................................................................................6

2.2.3.

Dodeljivanje vrednosti promenljivoj...............................................................................7

2.2.4.

Aritmetiki operatori.......................................................................................................7

2.3.

Operatori poreenja, logiki operatori i uslovne strukture.....................................................9

2.3.1.

Operatori poreenja.........................................................................................................9

2.3.2.

Logiki operatori...........................................................................................................10

2.3.3.

Jednostavne uslovne strukture.......................................................................................11

2.4.

Sloene uslovne strukture.....................................................................................................12

2.5.

Polja......................................................................................................................................13

2.5.1.

Polja sa numerikim kljuem........................................................................................13

2.5.2.

Polja sa znakovnim kljuem..........................................................................................14

2.5.3.

Dvodimenzionalna polja...............................................................................................14

2.6.

Petlje.....................................................................................................................................15

2.6.1.

WHILE petlja................................................................................................................15

2.6.2.

FOR petlja.....................................................................................................................15

2.6.3.

FOREACH petlja..........................................................................................................16

2.7.

Funkcije................................................................................................................................16

2.8.

Prenos podataka izmeu skripti............................................................................................17

2.8.1.

Metoda GET..................................................................................................................18

2.8.2.
3.

Metoda POST................................................................................................................18

Rad sa MySQL bazom podataka.................................................................................................18


3.1.

Kreiranje baze podataka.......................................................................................................18

1. Uvod

PHP je skriptni jezik koji se izvrava na serveru a glavna namena mu je kreiranje dinamikih
web stranica. MySQL je sistem za upravljanje relacijskim bazama podataka I zajedno sa
programskim jezikom PHP predstavljaju jedno od najpopularnijih reenja za izradu dinamikih web
stranica I web aplikacija koje se zasnivaju na bazama podataka.
Skriptni jezik PHP nastao je 1994. godine kao lini projekat jednog entuzijaziste, a kasnije su
se u njegov razvoj ukljuili mnogi programeri koji su doprineli njegovom razvoju. Originalna
skraenica za PHP je Personal Home Page Tools , a kasnije je to promenjeno I danas PHP znai:
Hypertext Preprocessor)na temelju PHP naredbi generie HTML, jezik kojim se opisuje hipertekst).
Dugo godina veliki konkurent PHP skriptnom jeziku bio je ASP, mikrosoftova serverska
tehnologija ije su mogunosti bile jednake. Meutim ASP je zastario, a PHP je nastavio da se
razvija I dobio podrku za objektno-orjentisano programiranje.
Postoji nekoliko framework-a (razvojnih platformi) za PHP (Symfony, Zend)iji je cilj da
olakaju programiranje odvajanjem prezentacije od logike, I uvoenjem objektata koji predstavljaju
HTML elemente I proiruju funkcionalnost web stranica, zatim objekata za rad sa bazama podataka
I dr.
Veliki konkurent PHP-u je ASP.NET, naslednik tehnologije ASP, koji koristi .NET
framework za koji je mogue razvijati u vie .NET jezika od kojih su najraireniji C# I
VisualBasic.NET. Njegova prednost je veliki broj kontrola I objekata, I to to se njegove datoteke ne
moraju prevoditi svaki put kod izvravanja ve samo prvi put.
Za upravljanje bazama podataka veoma esto se koristi MySQL open souce sistem. Razvoj
MySQL

sistema

zapoeo

je

1995.

YouTube,Wikipedia,Wordpress I drugi.

godine

neki

od

poznatih

korisnika

su

2. Osnove PHP skriptnog jezika

2.1.

Osnove PHP sintakse

PHP naredbe najee se nalaze umetnute unutar HTML koda zajedno sa HTML oznakama.
Da bi ih PHP prevodioc mogao prepoznati moraju se nai unutar posebnih oznaka. Najei I
preporueni nain pisanja PHP oznaka je prikazan na slici 1.

Slika 2.1. Preporueni nain pisanja PHP oznaka


Svaka PHP naredba mora da se zavri sa ; inae e se javiti sintaksna greka. Uz naredbe mogue je
pisati I pomoni tekst (komentare) koji ne utiu na izvoenje programa, a svrha im je da opiu
napisani kod. Komentari koji se nalaze u jednoj liniji poinju sa // ili znakom # , a komentari koji se
proteu kroz vie linija poinju znakovima /* a zavravaju se sa */.

2.2.

Promenljive I operacije sa njima

Svaki funkcionalni program mora da ita odreene podatke I da omogui obradu I uvanje
podataka. Za privremeno uvanje podataka tokom izvoenja programa koriste se promenljive.
Za obradu I izraunavanja nad podacima koriste se operatori koji su u stvari simboli za
razliite operacije.
2.2.1. Promenljive
Promenljive se u programskim jezicima koriste za privremeno uvanje vrednosti. Vrednosti
koje se uvaju u promenljivima mogu biti razliitog tipa podatka, to znai da mogu biti tekstualne,
brojane, logike I drugog tipa.

PHP podrava sledee osnovne tipove podataka:


-

logiki true I false


celobrojni 1,2,-5,125
decimalni 3.14
tekstualni Moje ime je Katarina

Sloeni tipovi podataka u PHP-u su:


-

polje podataka koji sadri vie povezanih vrednosti


objekat sloeni tip podatka koji predstavlja objekat iz realnog sveta

Postoje I dva specijalna tipa:


-

resource vrednost koju vraa neka funkcija


NULL tip koji poprima promenljiva kojoj nije pridruena vrednost

PHP je slabo tipiziran jezik. Za razliku od veine drugih programskih jezika, promenljivu u PHP-u
pre upotrebe nije potrebno deklarisati, odnosno nije potrebno navesti njen tip. Za upotrebu
promenljive dovoljno je navesti njeno ime I pridruiti joj neku vrednost. Promenljiva e sama
poprimiti odgovarajui tip zavisno od njene vrednosti. Takoe je mogue tokom upotrebe
promenljive promeniti njen tip, tako to emo toj promenljivoj pridruiti vrednost drugog tipa.
Preporuka je naravno ne menjati esto tip promenljive u toku programa zato to na taj nain esto
dolazi do greki prilikom pisanja programa.
Ispred svake promenljive u PHP jeziku nalazi se znak $. Imena promenljivih mogu sadrati slova,
brojke I donju crtu _ , a prvi znak posle $ moe biti slovo ili donja crta. U imenima promenljivih
razlikuju se mala I velika slova pa tako $promenljiva I $Promenljiva nisu ista promenljiva.
2.2.2. Konstante
Vrednost sauvana u promenljivoj moe da se menja u toku izvoenja programa. Konstante
takoe slue za uvanje odreenih vrednosti ali se njihova vrednost nakon deklaracije ne moe
menjati. Vrednost se konstantama dodeljuje pomou funkcije define koja sadri dva parametra: ime
konstante I njenu vrednost.

Slika 2.2. Definisanje konstante u programskom jeziku PHP


Ime konstante obino se pie velikim slovima, a pre znaka konstante se ne stavlja $ znak. Jednom
kada se konstanta definie vie se u programu ne moe menjati niti brisati.
2.2.3. Dodeljivanje vrednosti promenljivoj
Da ni promenljiva $promenljiva poprimila vrednost potrebno je napisati:

Slika 2.3. Dodeljivanje vrednosti promenljivoj


Na slici 1.3. prikazana je naredba dodeljivanja a znak = je operator dodeljivanja. Sa leve strane
operatora dodeljivanja nalazi se uvek promenljiva a sa desne strane se nalazi neka konstantna
vrednost, rezultat nekog izraza ili poziv funkcije.
2.2.4. Aritmetiki operatori
Nad promenljivima numerikog tipa mogue je obavljati razne numerike operacije. Pregled
aritmetikih operatora dostupnih u jeziku PHP dat je u Tabeli 2.1.
Operator
+
*
/
%

Znaenje
negativni predznak
sabiranje
oduzimanje
mnoenje
deljenje
operacija moduo ostatak pri

Primer
-$a
$a+$b
$a-$b
$a*$b
$a/$b
$a%$b

deljenju
Tabela 2.1. Aritmetiki operatori dostupni u jeziku PHP
Aritmetike operacije nee se izvravati kako su napisane ve prema prioritetu aritmetikih
operacija. Prioritet osnovnih aritmetikih operacija dat je u Tabeli 2.2.
Prioritet
1
2
3

Operator
Znaenje
negativni predznak
*, /, %
mnoenje, deljenje I moduo
+, sabiranje I oduzimanje
Tabela 2.2. Prioritet aritmetikih operacija

U koliko je potrebno da se redosled aritmetikih operacija promeni koriste se zagrade.


U PHP programskom jeziku postoje I operatori uveanja I umanjenja za jedan. Ti operatori
prikazani su u Tabeli 2.3.
Operator
++
--

Znaenje
Primer
poveanje za 1
$a++
umanjenje za 1
$a-Tabela 2.3. Operatori uveanja I umanjenja za 1

Pored jednostavnih operatora dodeljivanja postoje I sloeni operatori dodeljivanja. Sloeni


operatori dodeljivanja postoje za sve osnovne aritmetike operacije I njihov pregled dat je u Tabeli
2.4.
Operator

Znaenje

Primer

Ekvivalentna

+=

dodavanje vrednosti

$a += vrednost

naredba
$a=$a + vrednost

-=

sa desne strane
oduzimanje vrednosti

$a -= vrednost

$a=$a vrednost

*=

sa desne strane
mnoenje sa

$a *= vrednost

$a=$a * vrednost

/=

strane
deljenje sa vrednou

$a /= vrednost

$a=$a / vrednost

%=

sa desne strane
operacija moduo sa

$a %= vrednost

$a=$a % vrednost

vrednou sa desne

vrednou sa desne
strane
Tabela 2.4. prikaz sloenih operatora dodeljivanja
U PHP-u vie znakovnih nizova mogue je spojiti u jedan korienjem operatora spajanja.
Kao operator spajanja koristi se znak . (taka).

Slika 2.4. Spajanje znakovnih nizova


U koliko izmeu rei Dobar i dan elimo da umetnemo razmak to se moe uiniti na sledei nain.

Slika 2.5. Spajanje znakovnih nizova sa


I za operator spajanja moe da se koristi skraeni nain dodeljivanja .= .

Slika 2.6. Skraeni nain dodeljivanja za operator .


Ispisivanje promenljive u PHP-u u najjednostavnijem obliku izgleda ovako:

Slika 2.7. Ispisivanje vrednosti promenljive


U koliko se uz promenljivu eli ispisati neki tekst to se moe uiniti pomou operatora spajanja.

2.3.

Operatori poreenja, logiki operatori i uslovne strukture


2.3.1. Operatori poreenja

Operatori poreenja slue, kao to im samo ime kae, za uporeivanje vrednosti. Rezultat
koji vraa operacija poreenja je logika vrednost TRUE ili FALSE, zavisno od rezultata poreenja.
Operator
==
===

Znaenje
jednako
identicno

Primer
$a = = $b

Rezultat
TRUE ako je $a

$a = = = $b

jednako $b
TRUE ako je $a
jednako $b i ako su

!=

nije jednako

$a ! = $b

istog tipa podatka


TRUE ako $a nije

<>

nije jednako

$a < > $b

jednako $b
TRUE ako $a nije

!==

nije identicno

$a ! = = $b

jednako $b
TRUE ako $a nije
jednako $b ili ako nisu
istog tipa podatka

<

manje od

$a < $b

TRUE ako je $a manje

>

vece od

$a > $b

od $b
TRUE ako je $a veca

<=

manje ili jednako od

$a < = $b

od $b
TRUE ako je $a manja

$a > = $b

ili jednaka $b
TRUE ako je $a veca

>=

vece ili jednako od

ili jednaka $b
Tabela 2.5. Operatori poreenja
PHP dozvoljava poreenje vrednosti razliitih tipova podataka. Ako se uporeuje recimo
brojana vrednost sa tekstualnom, tekstualna vrednost pretvorie se u ekvivalentnu brojanu
vrednost i izvrie se uporeivanje. Ako je prevoenje nemogue, rezultat poreenja bie FALSE.
2.3.2. Logiki operatori
Uz aritmetike operacije i operacije poreenja, u programskim jezivima postoje i logike
operacije. Operandi, kao i rezultati u logikim operacijama su logike vrednosti (TRUE i FALSE).
za pisanje logikih izraza koriste se logiki operatori iji je pregled dat u sledeoj tabeli.
Operator
!

Znaenje
negacija

Prioritet
1

Primer
!$a

Rezultat
TRUE ako je $a

&&

logicko i

$a && $a

FALSE
TRUE ako su obe

and

logicko i

$a and $b

vrednosti TRUE
TRUE ako su obe

||

logicko ili

$a || $b

vrednosti TRUE
TRUE ako je bar
jedna od

or

logicko ili

$a or $b

vrednosti TRUE
TRUE ako je bar
jedna od

xor

ekskluzivni ili

$a xor $b

vrednosti TRUE
TRUE ako je
samo jedna
vrednost TRUE

Tabela 2.6. Logiki operatori


Kao i kod aritmetikih izraza, i kod logikih se za slaganje sloenih logikih izraza mogu koristiti
zagrade za promenu redosleda izvravanja naredbi.

2.3.3. Jednostavne uslovne strukture


Kako u svim programskim jezicima, tako I u PHP-u, postoje uslovne strukture koje se
koriste za donoenje odluka o daljem toku izvoenja programa. Zavisno od toga da li je neki logiki
uslov ispunjen, obavie se ili se nee obaviti neka uslovna radnja.
If struktura

Slika 2.8. Jednostavna uslovna struktura


Nakon kljune rei IF u zagradama sae navodi uslov(moe biti logika vrednost, promenljiva
ili logiki izraz). Unutar vitiastih zagrada navode se naredbe koje e biti izvrene ako je uslov
ispunjen. U sluaju da se unutar vitiastih zagrada nalazi samo jedna naredba, zagrade mogu biti
izostavljene.
If-else struktura
Dodavanjem kljune rei else mogu se odrediti naredbe koje e se izvriti ako uslov nije
ispunjen.

Slika 2.8. IF-ELSE uslovna struktura

2.4.

Sloene uslovne strukture

U sloenijim situacijama potrebno je ispitati vie uslova pre nego to se donese odluka.
If-elseif struktura
Jednostavna uslovna struktura moe se proiriti dodavanjem novog uslova, uz korienje
kljune rei elseif.

Slika 2.9. IF-ELSEIF uslovna struktura


U sluaju da je prvi uslov ispunjen izvrava se prva naredba. Ako prvi uslov nije ispunjen
proveravae se drugi uslov. Ako je drugi uslov ispunjen izvrie se naredba 2. U koliko ni prvi ni
drugi uslov nisu ispunjeni izvrie se naredba 3. Dakle izvrie se ona naredba koja se nalazi uz prvi
istiniti uslov. Ako ni jedan uslov nije istinit izvrie se naredba iz else bloka. U IF-ELSEIF strukturi
else blok se moe izostaviti.
Switch struktura
IF-ELSEIF struktura moe se napisati na jednostavniji nain korienjem SWITCH
strukture.

Slika 2.10. SWITCH struktura


Zavisno od vrednosti izraza navedenog unutar zagrada posle kljune rei switch, izvrie se
naredbe koje se nalaze unutar odgovarajueg case bloka(onog u kom je navedena tana vrednost
izraza). Nakon to se pronae taan case blok izvravaju se naredbe dok se ne naie na naredbu
break. U koliko odgovarajua vrednost nije pronaena, izvravaju se naredbe navedene posle
kljune rei default.
U sluaju sloenih uslova mogue je ugnjezditi jednu uslovnu strukturu unutar druge.

2.5.

Polja

Za grupisanje vie vrednosti u programskim jezicima koristi se koncept polja. Polje je


promenljiva koja sadri niz vrednosti, a svakoj vrednosti pridruen je klju. Pojedinom lanu polja
pristupa se pomou kljua koji moe da bude broj ili niz znakova. vrednosti polja mogu biti bilo koji
tipovi podatka koje PHP jezik podrava. Polja mogu biti jednodimenzionalna i viedimenzionalna.
2.5.1. Polja sa numerikim kljuem
Numeriki klju je obino redni broj lana u polju, i naziva se index. Uobiajno je da
brojanje lanova poinje od nule tako da je indeks prvog lana polja nula.
Index
0
1
2

Vrednost
Ni
Beograd
Novi Sad
Tabela 2.7. Primer polja sa imenima gradova

Za stvaranje polja koristi se kljuna re array:

Slika 2.11. Korienje kljune rei array za stvaranje polja


Za pristup lanu polja koristi se njegov indeks napisan u uglastim zagradama, a osim prilikom
stvaranja polja lanovima polja mogue je pojedinano dodeljivati vrednosti. Polje ne mora biti
stvoreno pomou kljune rea array. U tom sluaju, bie stvoreno tako to se jednom lanu polja
pridruuje vrednost. Ve stvoreno polje nema fisksnu veliinu, odnosno mogue mu je kasnije
dodati proizvoljan broj lanova. pristup vrednosti lanu polja koje nije definisano izazvae greku.
2.5.2. Polja sa znakovnim kljuem
Osim numerike vrednosti, klju moe da ima i tekstualnu vrednost. Ideja je da takav klju
bude naziv koji je smisleno povezan sa vrednou lana polja. Polja sa znakovnim kljuem se zbog
toga zovu asocijativna polja.
Za polje koje treba sadrati potanske brojeve gradova, klju polja moe biti naziv grada.
Klju
Ni
Novi Sad
Beograd

Vrednost
18000
21000
11000
Tabela 2.8. polje sa znakovnim kljuevima

2.5.3. Dvodimenzionalna polja


Dok se jednodimenzionalno polje moe predstaviti kao niz vrednosti, dvodimenzionalno
polje moe se predstaviti kao tabela. Svaki lan dvodimenzionalnog polja definisan je sa dva kljua
po jedan za svaku dimenziju. Dvodimenzionalno polje stvara se tako to se definie poje koje za
lanove ima jednodimenzionalna polja. Za pristup lanu dvodimenzionalnog polja potrebno je
navesti oba indeksa. Prvi indeks oznaava red a drugi kolonu.
Mogue je definisati polje sa neogranienim brojem dimenzija, i ako polja sa vie od tri
dimenzije nemaju praktinu primenu.

2.6.

Petlje

Petlje su izrazi u kolima se ostvaruje ponavljanje odreene naredbe ili bloka naredbi. Na taj
nain nije potrebno vie puta napisati naredbe koje se trbaju izvriti vie puta, ve ih je dovoljno
napisati unutar petlje.
2.6.1. WHILE petlja
Najjednostavnija petlja je petlja while.

Slika 2.11. While petlja


Posle kljune rei while u zagradama se pie uslov ponavljanja. Nakon njega dolazi telo
petlje unutar vitiastih zagrada piu se naredbe koje e se ponavljati sve dok vai uslov petlje. Kao
i kod uslovnih struktura, u sluaju da samo jedna naredba treba da se izvrava zagrade nisu
neophodne. Istinitost uslova proverava se svaki put pre nego to se izvre naredbe iz tela petlje.
Kada uslov postane neistinit, izvrenje programa nastavlja se od prve naredbe koja sledi nakon
petlje. Ako uslov petlje ni na poetku nije bio ispunjen, naredbe u telj petlje nee biti ni jednom
izvrene. istinitost izraza moe se promeniti kao rezultat izvravanja naredbi u telu petlje ili zbog
nekog spoljnog uzroka. Mogue je i postojanje beskonane petlje , a to je sluaj kada izvravanje
petlje nikada nee da se prekine zato to uslov nikada nee postati neistinit.
2.6.2. FOR petlja
For petlja ima poseban nain pisanja.

Slika 2.12. FOR petlja


U zagradi nakon kljune rei nalaze se tri izraza odvojena znakom ; .

Poetni izraz se izvrava pre prvog kruga petlje


Uslov je oslov izvravanj petlje i proverava se pre svakog kruga petlje
ponavljajueIzraz izvrava se posle svakog kruga petlje

Svaki od ova tri izraza moe se izostaviti. Ako se izostavi uslov, javlja se bezuslovna petlja koja e
se zauvek izvravati. Petlaj for najee se koristi kada je broj ponavljanja petlje zadan.
2.6.3. FOREACH petlja
Petlja se esto koristi za ispis lanova polja. kod polja sa brojanim kljuem, lanovi polja
mogu se ispisati sa petljom for, whili ili do ... while. Za ispis lanova polja moe se koristiti i petlja
foreach ija je svrha upravo to.

Slika 2.13. Petlja foreach


Ova petlja e izvriti naredbe iz tela petlje po jednom za svakog lana polja $polje, a vrednost
trenutnog lana polja nalazi se u promenljivoj $vrednost.

2.7.

Funkcije

Naredbe koje se koriste vie puta mogu se napisati unutar funkcije. Svaki put kada je potrbno
izvriti te naredbe, poziva se funkcija. Izdvajanjem delova koda u funkcije dovodi do toga da je taj
kod potrebno napisati samo jednom, nema potrebe pisati ga vie puta. time se postie uteda
vremena, manja je mogunost greke i jednostavnije je kasnije menjanje koda.
Funkcije mogu primati odreene podatke kojima e se koristiti u svom radu. Funkcije takoe
izraunatu vrednost mogu vratiti kao rezultat.

Funkcije se piu tako da se navede kljuna re function nakon koje dolazi ime funkcije i par
okruglih zagrada. Posle njih u vitiastim zagradama piu se naredbe funkcije koje e se obaviti.

Slika 2.14. Funkcije u PHP-u


Za imenovanje funkcija vae ista pravila kao za imenovanje promenljivih. Ime funkcije ne sme da se
poklapa sa ugraenom funkcijom ili ve postojeom funkcijom.
Prilikom poziva funkciji se mogu predati odreeni podaci koje e ona upotrebiti. Ti podaci
nazivaju se argumenti ili parametri funkcije i moraju se navesti prilikom definisanja funkcije.
Prilikom navoenja argumenata navodi se samo njihovo ime, a ne tip podatka.
Pri pozivu funkcije moraju se navesti svi dokumenti sem onih predefinisanih. Predefinisani
argumenti su oni ija se vrednost zadaje prilikom definisanja funkcije. Predefinisani dokumenti se
dakle mogu ali i ne moraju navesti prilikom poziva. Ako se ne navede, koristi se njegova
predefinisana vrednost.
Najei nain za prenos argumenata funkciji je prenos po vrednosti kod koga se vrednost
dokumenta kopira u novu promenljivu. razlog je to to funkcija dobija kopiju vrednosti a ne
originalnu vrednost, pa izmena promenljive u funkciji nema uticaja na vrednost originalne
promenljive. Stvaranjem reference na promenljivu postie se to da obe promenljive sadre istu
vrednost, odnosno izmena jedne promenljive izazvae izmenu druge.
Najee korieni nain vraanja rezultata funkcije je kljunom reju return. Kljuna re
return oznaava izlazak iz funkcije. Ako se iza nje nalazi jo neka naredba, ona nee biti izvrena.
Funkciju je mogue pozvati i iz druge funkcije. Funkcija takoe moe pozvati samu sebe, i
to su rekurzivne funkcije.
Potreba za korienjem jedne funkcije moe se javiti na vie mesta, i to u odvojenim
skriptama. Da se ne bi pisala ista funkcija za svaku skriptu, bolje je reenje da se ta funkcija napie u
odvojenom fajlu, a zatim taj fajl ukljuiti u kod skripte. Da bi se funkcija pozvala u nekoj drugoj
skripti, potrebno je upotrebom naredbe include u kod trenutne skripte ukljuiti datoteku u kojoj se
funkcija nalazi. Datoteka se moe ukljuiti i naredbom require.

2.8.

Prenos podataka izmeu skripti

Podaci uneeni u obrazac alju se na server pritiskom dugmeta za slanje podataka. PHP
skripta kojoj se podaci alju navedena je kao vrednost atributa action , dok je nain ili metoda slanja
odreena atributom method.
Postoje dve metode slanja podataka koje su deo HTTP protokola GET i POST.
2.8.1. Metoda GET
Kod metode GET podaci se alju putem URL adrese. Nedostatak je to su tada podaci
vidljivi, u navigacisjkoj traci pretraivaa, a i duina URL adrese je ograniena pa samim tim vea
koliina podataka ne moe da se poalje.
Obrazac kod kojeg se koristi GET metoda imae vrednost atributa method postavljenu na
get.
Prenos podataka GET metodom najee se koristi odvojeno od obrasca, kada je nekoj
skripti potrebno poslati malu koliinu podataka. Veinom se susree u linkovima.

Slika 2.14. Slanje podataka GET metodom


2.8.2. Metoda POST
Kod metode POST podaci se alju unutar tela HTTP zahteva i ne postoji ogranienje na
koliinu podataka koja se moe poslati.

3. Rad sa MySQL bazom podataka

Sa MySQL bazom podataka moe se raditi direktnim upisivanjem komandi na komandnoj


liniji ili korienjem nekog klijentskog programa. jedan od najee korienih klijentskih programa
za ovu svrhu je phpMyAdmin koji dolazi uz instalaciju sistema MySQL.

3.1.

Kreiranje baze podataka

Za svaki projekat potrebna je odvojena baza podataka. Nova baza podataka kreira se pomou
naredbe:
CREATE DATABASE imebaze;

3.2.

Kreiranje tabela

Baza podataka sastoji se od meusobno povezanih tabela. Za svaku vrstu entiteta koji e se
uvati u bazi podataka, stvara se odgovarajua tabela koja sadri te entitete. Tabele su definisane
poljima koje sadre i koja opisuju te entitete.
Nova tabela stvara se pomou naredbe CREATE TABLE iza koe slede polja tabele i njihovi
tipovi podatka.
CREATE TABLE imeTabele (
nazivPolja1 TIP_PODATKA;
nazivPolja2 TIP_PODATKA;
);

3.3.

Tipovi podatka

Sledei korak u stvaranju tabele je definisanje tipova podataka. U tabeli 3.1. dat je pregled
tipova podataka koji se koriste u MySQL-u.
Tip podatka
INT
TINYINT
SMALLINT
MEDIUMINT
BIGINT
FLOAT
DOUBLE

Opis
celobrojna veliina
veoma mala celobrojna veliina (-128 do 127)
mala celobrojna veliina
celobrojna veliina srednje vrednosti
veliki ceo broj
decimalni broj sa pokretnim zarezom
decimalni broj sa pokretnim zarezom

DECIMAL
DATE
DATETIME

(dvostruka vrednost)
decimalni broj
datum (format YYYY-MM-DD)
datum i vreme

TIMESTAMP

(format YYYY-MM-DD HH:MM:SS)


vremenska oznaka

(format YYYY-MM-DD HH:MM:SS)


vreme (format HH:MM:SS)
godina (fromat YYYY ili YY)
niz znakova fiksne duine (maksimum 255)
niz znakova promenljive duine

TIME
YEAR
CHAR
VARCHAR

(maksimum 255)
TEXT
tekstualni podaci
TINYTEXT
tekstualni podaci male veliine
MEDIUMTEXT
tekstualni podaci srednje veliine
LONGTEXT
tekstualni podaci velike veliine
BINARY
niz bajtova fiksne duine
VARBINARY
niz bajtova promenljive duine
BLOB
binarni podaci
TINYBLOB
binarni podaci male veliine
MEDIUMBLOB
binarni podaci velike veliine
LONGBLOB
veliki binarni podaci
ENUM
enumeracija
SET
skup
Tabela 3.1. Tipovi podataka koji se koriste u MySQL-u
Najee korieni tip podatka je INT za cele brojeve, DOUBLE ili DECIMAL za decimalne
brojeve, DATETIME za vreme, VARCHAR ili TEXT za znakovne nizove i BLOB za binarne
podatke.
Prilikom definisanja tabele za polja se uz tip podatka navodi i veliina polja. Ako se ne
navede koristi se predefinisana veliina za taj tip.
Svako polje ako se ne navede suprotno moe poprimiti vrednost NULL, to je posebna
konstanta koja oznaava da polje ne sadri podatak. Za polja ije vrednosti trebaju biti obavezno
postavljene, potrebno je prilikom definicije navesti NOT NULL.
Takoe je mogue zadati predefinisane vrednosti polja korienjem kljune rei default.
Primarni klju se definie navoenjem kljune rei PRIMARY KEY na kraju definicije polja.

3.4.

Izvoenje upita nad bazom podataka

U jeziku SQL postoje etiri vrste upita:


-

SELECT
INSERT
UPDATE
DELETE

SELECT slui za dohvatanje podataka iz tabele. Upit koji bi dohvatio sve podatke iz tabele izgleda
ovako:

SELECT * FROM tabela;


Zvezdica u SELECT upitu oznaava da se iz tabele dohvataju svi podaci. Svaki upit moe se
ograniiti i uslovom, i tada e biti dohvaeni samo podaci koji zadovoljavaju navedeni uslov. Uslovi
se mogu kombinovati pomou operatora AND i OR.
Auriranje i brisanje tabela vri se pomou naredbe UPDATE i DELETE. Ove dve naredbe
najee sadre uslov koji odreuje na koje e redove tabele naredba biti izvrena. Ako se ne navede
uslov, naredbe e se odnositi na sve redove tabele.

4. PHP i MySQL projekat Sajt za ljubitelje ivotinja

Sajt za ljubitelje ivotinja napravljen za ovu svrhu sastoji se od tri dela. Guest deo kome
moe da pristupi svako i da pregleda nova deavanja na stranicama sajta. Svako sa validnom email
adresom moe da se registruje a zatim i prijavi kako bi pristupio korisnikom delu. Za tazliku od
guest dela u kome gosti mogu samo da vide nova deavanja na sajtu, u korisnikom delu, mogue je
komentarisanje video zapisa i ostavljanje oglasa na stranici izgubljeni/naeni. I poslednji, trei deo,
jeste administratorski. Na administratorski deo ne mogu korisnici sami da se registruju ve se
administratori unose direktno u samu bazu. U admin panelu, administratori mogu bez poznavanja
PHP jezika da sami dodaju nove vesti, da ih auriraju i briu, a isto vai i za galerije i video a
dodatak stranici izgubljeni naeni je da administratori mogu i da briu oglase to registrovanim
korisnicima kao ni gostima nije dozvoljeno.

4.1.

Kreiranje baze podataka

Za kreiranje baze podataka u MySQL-u koristi se relativno jednostavna komanda. Nain


kreiranja baze katarina_ispit koja je koriena u ovom projektu prikazan je na slici 4.1.

Slika 4.1. Kreiranje baze podataka katarina_ispit

Baza podataka katarina_ispit, sadri 10 tabela i to:


-

administratori u kojoj se smetaju podaci o administratorima sajta


tblmembers u kojoj se nalaze podaci o registovanim lanovima
galerija u kojoj se smetaju osnovni podaci o galeriji (id galerije, id administratora koji
je kreirao galeriju, naziva galerije, datum kreiranja, uvodna slika galerije i tekst koji

opisuje galeriju)
slike tabela u kojoj se smetaju slike iz svih galerija
video_galerija -tabela sa podacima poput naziva embedovanog videa, youtube adrese sa

koje se video preuzima, postera ....


video_likes za svaki video omogueno je lajkovanje. U ovoj tabeli nalaze se lajkovi

svih videa
komentari_video registrovanim korisnicima omogueno je komentarisanje videa.

Komentari se smetaju u ovu tabelu baze


news news baza slui za smetanje novih vesti iz sveta ivotinja
likes ovo je baza lajkova vesti
oglasi ovde se smetaju oglasi za pronaene I izgubljene ljubimce

Nain kreiranja tabela prikazan je u narednim slikama.

Slika 4.2. Postupak kreiranja tabele administratori

Slika 4.3. Postupak kreiranja tabele tblmembers

Slika 4.4. Postupak kreiranja tabele slike

Sve ostale tabele kreiraju se na potpuno isti nain. Unos podataka u tabele, auriranje I brisanje
podataka za sve tabele osim za tabelu administratori vri se pomou SQL upita u samom PHP kodu
pa e to tada I biti prikazano.

4.2.

Kreiranje administratorskog dela sajta

Na samom poetku pre nego uopte pristupimo kreiranju administratorskog dela sajta
moramo da insertujemo podatke u tabelu administratori, odnosno moramo da kreiramo barem
jednog administratora. Dodavanje podataka u tabelu baze radi se pomou naredbe INSERT kao to
je prikazano na slici.

Slika 4.5. Unoenje podataka u tabelu administratori


Oznaka SHA1 je zatita lozinke. Iako nije najbolji nain zatite, ipak je bolje nego lozinku u bazi
uvati kao obian tekst.
Sada kada smo kreirali tabelu administratori I unelu podatke o jednom administratoru sledi
povezivanje naeg PHP koda sa MySQL bazom. U ovom sluaju konekcija sa bazom sauvana je u
posebnom folderu CONFIG u datoteci setup.php pa je datoteka setup.php uvoena gde god je
konekcija sa bazom bila potrebna, to je bolje reenje nego svuda gde je potrebno praviti novu
konekciju sa bazom podataka.

Slika 4.6. Datoteka setup.php u kojoj se vri konekcija sa bazom podataka


Konekcija sa bazom vri se pomou naredbe mysqly_connect nakon koje sledi host, zatim
korisniko ime I lozinka pomou kojih se povezujemo sa bazom podatka I na kraju I ime same baze.
Sledi prijava administratora na sistem. Administrator se prijavljuje na administratorski deo
sajta preko stranice login.php. Sama stranica login.php prilino je jednostavna. Sastoji se od headera
u kome se nalazi padajui meni sa trenutnim natpisom da administrator trenutno nije logovan,
forme za prijavu I foter-a.
Header je u na svim stranicama u admin delu potpuno isti, zbog toga je kreiran u posebnoj
datoteci, I pomou naredbe incude uveen na svim stranicama, da ne bi za svaku stranicu posebno
kucali kod. Na samom poetku headera zapoinjemo sesiju. Sesija je inae nain za uvanje
potrebnih informacija kako bi mogli da ih koristimo na vie stranica. Naravno na samom poetku

header-a moramo da inculd-ujemo I setup.php datoteku kako bi ostvarili vezu sa bazom podataka.
Jedino zanimljivo u ovom delu je nain na koj header prikazuje informaciju da administrator nije
prijavljen ili ako se administrator prijavi, prikazuje njegovo ime I prezime. upravo nam je za ovo
potrebna sesija. Prilikom logovanja administratora, administrator treba da popuni formu u kojoj
treba da popuni svoj email I lozinku. Metodom post ove podatke prosleujemo ovoj istoj stranici na
kojoj se nalazi php kod koji proverava da li postoji takva lozinka I takvo korisniko ime u tabeli
administratori. Proveru radimo pomou upita, tako to selektujemo sve administratore koji
ispunjavaju ovaj uslov. U koliko je broj takvih administratora koji ovaj uslov ispunjavaju jednak
jedan znai da su uneti email I lozinka tani, u $_SESSION[admin] uneemo mail administratora i
prebaciti logovanog administratora na stranicu index.php. U koliko je broj korisnika koji ispunjavaju
ovaj uslov nula, ostaemo na ovoj stranici i vrednosti $_SESSION[admin] neemo dati nikakvu
vrednost.

Slika 4.7. Provera podataka za prijavu administratora prosleenih iz forme metodom post
Sada kada je administrator prijavljen u header-u e umesto obavetenja da nije prijavljen stajati
njegovo ime i prezime. Ovo je upravo mogue uraditi uz pomo sesije. Kada admin nije prijavljen
sesija nije setovana pa e u header-u stajati Niste prijavljeni dok kada je administrator prijavljen
sesija je setovana vrednou njegovog mail-a pa e u gornjem desnom uglu stajati njegovo ime i
prezime. nain na koj je ovo obavljeno prikazan je na naredno slici.

Slika 4.8. Podeavanje padajueg menija u header-u


Naravno kada je administrator logovan u padajuem meniju javie se i opcija odjavi se, kojom se
administrator odjavljuje sa sajta, a koja program usmerava na datoteku logout u kojoj se sesija brie
i korisnik se usmerava na poetnu index stranicu.
U administratorskom panelu postoje etiri opcije. Jedna je za ureivanje vesti na stranici, jedna je za
ureivanje oglasa, jedna za ureivanje galerije i jedna za ureivanje video galerije. Svaka od ovih
opcija je posebno raslanjena u nastavku rada.
Starnica za upravljanje vestima sastoji se od dva dela, forme za auriranje i dodavanje vesti
sa desne strane, i pregleda vesti sa leve.

Slika 4.9. Stranica za upravljanje vestima


Na samom poetku ove stranice kao i svake stranice u administratorskom delu postavlja se prvo
pitanje da li je setovano $_SESSION[admin] i u koliko nije vraa korisnika odmah na login
stranicu bez da uopte pokua da uita stranicu koju je trebao da otvori. Ovo je zateta od toga da
korisnici ne pokuaju da pristupe administratorskim stranicama preko URL adrese.
Sa desne strane nalazi se forma za kreiranje I auriranje vesti. Da bi kreirali vest moraju sva polja
forme da budu popunjena. U koliko nisu korisnik e biti obaveten da ne moe da kreira vest zato
to odreeno polje nije popunjeno, kao to je to sluaj na narednoj slici.

Slika 4.10.

Kod koji prilikom submita ove forme proverava da li su sva polja popunjena nalazi se na narednoj
slici 4.11.

Slika 4.11. Kod za proveru da li su sva polja popounjena prilikom kreiranja vesti
U ovom kodu moemo videti da se prilikom auriranja vesti ne proverava da li su polja prazna ili
nisu. To je zato to smo u drugom delu (gde je pregled vesti), za svaku vest kreirali dugme, ijim
pritiskom oznaavamo da elimo da auriramo tu vest. Kada pritisnemo to dugme, get metodom se
formi alje id vrednost vesti, I sva polja se popunjavaju vrednou te vesti osim slike, zbog ega smo
za sliku morali da izvrimo proveru da li je prilikom auriranja izabrana ili nije. Ako nije u
UPDATE upitu uopte ne vrimo auriranje slike zato to bismo je u tom sluaju samo obrisali.
Inae program zna da li vri update ili kreiranje vesti prema skrivenom polju u formi sa imenom
id, koje se setuje samo u sluaju da je get metodom pre toga poslata prednost skripti, odnosno ako
smo pre toga zatraili auriranje neke vesti pritiskom na dugme za auriranje.
Pored kreiranja I auriranja, potrebno je administratoru omoguiti I opciju brisanja vesti. Brisanje
vesti vri se pritiskom na dugme sa izgledom kante koje se nalazi na svakoj vesti. Svako delete
dugme ima jedinstvenu vrednost odgovarajuu za tu vest, I pomou toga program zna koju vest
tano treba da obrie. Kada administrator pritisne dugme za brisanje pokrenue se javascript
funkcija prikazana na slici 4.12.

Slika 4.12. Funkcija za brisanje vesti


Ova funkcija poziva datoteku pages.php I prosleuje joj get metodom vrednost za id koja je jednaka
jedinstvenom id atributu dugmeta za brisanje odreene vesti. Pages.php skripta za brisanje vesti iz
baze podataka prikazana je na slici 4.13.

Slika 4.13. PHP kod za brisanje vesti

Kreiranje i brisanje oglasa radi se po istom principu kao i kreiranje i brisanje vesti. Za
kreiranje oglasa morate da budete ili administrator ili registrovani korisnik. Prilikom popunjavanja
oglasa korisnik je u obaveyi da popuni sadraj oglasa. U koliko ne popun polje u kome se upisuje
sadraj doi e do greke.

Slika 4.14. Greka koja se javlja prilikom nepopunjavanjasadraja oglasa


Prilikom popunjavanja oglasa korisnik bira opciju da li trai putem oglasa svog ljubimca ili je
pronaao neijeg, i da li eli da ostavi svoj kontakt telefon. Email kojim se registrovao na sajtu kao i
ime i prezime bie po difoltu prikazani. Naravno korisnik ima i opciju da uploaduje u bazu sliku
svog izgubljenog ili pronaenog ljubimca koja e se prikazati u oglasu. Administrator sajta ima
opciju za brisanje oglasa iji je kod skoro isti kao kod koji smo videli ve za brisanje vesti.
Stranica za auriranje galerije omoguava administratoru da kreira novu galeriju koja e se
automatski pojaviti u padajuem meniju navigacije. Novu galeriju administrator stvara izborom na
dugme nova galerija. Sva polja u formi su obavezna pa e program davati upozorenje administratoru
ako pokua da submituje formu a da pri tome nije popunio sva polja.
Stranica za kreiranje brisanje i auriranje galerije ima slian izgled kao stranica za auriranje
vesti i kreirana je i funkcionie na slian nain.

Slika 4.15. Stranica za auriranje galerije


Najvea razlika je to to je naravno potrebno da se u galeriju slika ubace i slike, pa kada
administrator kreira galeriju treba da ide na opciju za auriranje i tada e se na dnu stranice pojaviti
dugme auriraj fotografije. Pritiskom na ovo dugme naie se na stranici za auriranje fotografija
iz odreene galerije kao i za dodavanje i brisanje iz galerije. Inae se fotografije uvaju u folderu
uploads, dok se u bazi uvaju samo nazivi fotografija.
I auriranje galerije je po istom principu kao prethodna tri dela administratorskog panela.

4.3.

Kreiranje korisnikog dela i dela za goste

Ova dva dela sajta spojena su u radu zato to se ne razlikuju mnogo. Glavna razlika im je da
registrovani korisnici mogu da uestvuju u komentarisanju video klipova a neregistrovani ne mogu i
da samo registrovani korisnici mogu da postavljaju oglase za pronaene i izgubljene ljubimce.
Za poetak prvo treba pregledati formu za registraciju.

Slika 4.16. Forma za registraciju


Forma za registraciju ima izgled kao na slici 4.16. Sva polja u formi su obavezna i to je
odreno kako na korisnikoj strani java skript kodo tako i na serverskoj strani php kodom. Ova dva
koda nalaze se u skriptama registration_script.js I registration_bll.php. Ako je java skript omoguen
u podeavanjima pretraivaa I nema nikakvih problema sa njim aktivirae se JavaScript
validizacija forme. Ako postoje problemi provera e se izvriti na serverskoj strani. Na slici 4.17.
vidi se reakcija programa na pokuaj korisnika da poalje sva prazna polja.

Slika 4.17. Provera forme

Kada se korisnik registruje ili prijavi njegovo ime e se odmah pojaviti u desnom uglu
header-a umesto obavetenja da niko nije prijavljen.
Poetna stranica za obe stranice je ista. U gornjem delu nalazi se FlexSlider koji pri svakom
pozivanju starnice bira random slike iz foldera uploads u kome se semtaju sve slike galerije. U
nastavku se nalaze najzanimljivije vesti iz sveta ivotinja. Kriterijum po kom se biraju
najzanimljivije vesti jeste broj lajkova posetioca i korisnika sajta. Tri vesti sa najvie lajka nai e se
na poetnoj strani. Tu su i dva linka ka video galeriji i stranici za pronaene i izgubljene ivotinje.

Slika 4.18. Poetna stranica


Stranica izgubljeni/naeni za registrovane korisnike potpuno je ista kao za administratore ali bez
mogunou brisanja oglasa, dok neregistrovani korisnici ne mogu ni da kreiraju oglase. Stranica
Svet ivotinja je zapravo stranica za vesti. Ova stranica je uraena sa jednim zanimljivim detaljem
a to je lajkovanje vesti. Za to je kreirana posebna tabela lajkova. U Celokupan kod za lajkovanje
napisan je u tri dela. Prvi deo je onaj koji se nalazi u samim vestima, drugi je java skript i trei je
datoteka koju JavaScript funkcija metodom get poziva.

Slika 4.19. Izgled stranice za dodavanje vesti


Galerija i video napravljeni su po istim principima kao prethodni deo sajta a kompletan kod
vidi se u prilogu.
Kontakt forma slui da posetioci mogu da kontaktiraju administratore na mail koji se unosi u
sam kod. Kontakt forma je u ovom sluaju zatiena od pogrenog oblika email adrese kao i od
slanja forme sa praznim poljima.

Slika 4.20. Kontakt forma

Zakljuak

PHP programski jezik je jedan od najboljih izbora ako trebate izradu web aplikacije ili nekog
web-orijentisanog sistema. Ui se vrlo brzo, jednostavan je za primenu, jedini nedostatak je taj to
ne postoje neki ozbiljniji alati za izradu php stranica. Inae, sve se svodi na notepad, a konkurencija
(Microsoft ASP.NET, JSP, ...) ima mnogo bolju razvojnu okolinu. Naravno, jo jedna od velikih
prednosti PHP-a pred konkurencijom je ta to je besplatan, a u kombinaciji s takoer besplatnim
mySql paketom moe posluiti za izradu vrlo monih web aplikacija.

Literatura

[1] Robin Nixon, Learning PHP, MySQL & JavaScript, 4th Edition With jQuery, CSS &
HTML5
[2] Paul J. Deitel, Harvey M. Deitel, AJAX, Rich Internet Applications, and Web Development
For Programmers
[3] Chris Loosley,Senior Director, SLM Technologies, Keynote Systems Rich Internet
Applications: Design, Measurement, and Management Challenges, 2006

You might also like