NIWT - seminarski 2

Embed Size (px)

DESCRIPTION

NIWT

Citation preview

V I S O K A T E H N I K A K O L AN I

SEMINARSKI RAD

PHP i MySQL

Predmet: Napredne internet i web tehnologije

Profesor: dr Zoran Velikovi Student: Katarina Dili RTs 3/14Sadraj

1.Uvod42.Osnove PHP skriptnog jezika52.1.Osnove PHP sintakse52.2.Promenljive I operacije sa njima52.2.1.Promenljive52.2.2.Konstante62.2.3.Dodeljivanje vrednosti promenljivoj72.2.4.Aritmetiki operatori72.3.Operatori poreenja, logiki operatori i uslovne strukture92.3.1.Operatori poreenja92.3.2.Logiki operatori102.3.3.Jednostavne uslovne strukture112.4.Sloene uslovne strukture122.5.Polja132.5.1.Polja sa numerikim kljuem132.5.2.Polja sa znakovnim kljuem142.5.3.Dvodimenzionalna polja142.6.Petlje152.6.1.WHILE petlja152.6.2.FOR petlja152.6.3.FOREACH petlja162.7.Funkcije162.8.Prenos podataka izmeu skripti172.8.1.Metoda GET182.8.2.Metoda POST183.Rad sa MySQL bazom podataka183.1.Kreiranje baze podataka18

1. UvodPHP 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. godine a neki od poznatih korisnika su YouTube,Wikipedia,Wordpress I drugi.

2. Osnove PHP skriptnog jezika2.1. Osnove PHP sintaksePHP 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 oznakaSvaka 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 njimaSvaki 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. PromenljivePromenljive 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 KatarinaSloeni tipovi podataka u PHP-u su: polje podataka koji sadri vie povezanih vrednosti objekat sloeni tip podatka koji predstavlja objekat iz realnog svetaPostoje I dva specijalna tipa: resource vrednost koju vraa neka funkcija NULL tip koji poprima promenljiva kojoj nije pridruena vrednostPHP 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. KonstanteVrednost 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 PHPIme 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 promenljivojDa ni promenljiva $promenljiva poprimila vrednost potrebno je napisati:

Slika 2.3. Dodeljivanje vrednosti promenljivojNa 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 operatoriNad promenljivima numerikog tipa mogue je obavljati razne numerike operacije. Pregled aritmetikih operatora dostupnih u jeziku PHP dat je u Tabeli 2.1.Operator ZnaenjePrimer

-negativni predznak-$a

+sabiranje$a+$b

-oduzimanje$a-$b

*mnoenje$a*$b

/deljenje$a/$b

%operacija moduo ostatak pri deljenju$a%$b

Tabela 2.1. Aritmetiki operatori dostupni u jeziku PHPAritmetike operacije nee se izvravati kako su napisane ve prema prioritetu aritmetikih operacija. Prioritet osnovnih aritmetikih operacija dat je u Tabeli 2.2.PrioritetOperatorZnaenje

1-negativni predznak

2*, /, %mnoenje, deljenje I moduo

3+, -sabiranje I oduzimanje

Tabela 2.2. Prioritet aritmetikih operacijaU 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.OperatorZnaenjePrimer

++poveanje za 1$a++

--umanjenje za 1$a--

Tabela 2.3. Operatori uveanja I umanjenja za 1Pored 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.OperatorZnaenjePrimerEkvivalentna naredba

+=dodavanje vrednosti sa desne strane$a += vrednost$a=$a + vrednost

-=oduzimanje vrednosti sa desne strane$a -= vrednost$a=$a vrednost

*=mnoenje sa vrednou sa desne strane$a *= vrednost$a=$a * vrednost

/=deljenje sa vrednou sa desne strane$a /= vrednost$a=$a / vrednost

%=operacija moduo sa vrednou sa desne strane$a %= vrednost$a=$a % vrednost

Tabela 2.4. prikaz sloenih operatora dodeljivanjaU 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 nizovaU 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 promenljiveU koliko se uz promenljivu eli ispisati neki tekst to se moe uiniti pomou operatora spajanja. 2.3. Operatori poreenja, logiki operatori i uslovne strukture2.3.1. Operatori poreenjaOperatori 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. OperatorZnaenjePrimerRezultat

= =jednako$a = = $bTRUE ako je $a jednako $b

= = =identicno$a = = = $bTRUE ako je $a jednako $b i ako su istog tipa podatka

! =nije jednako$a ! = $bTRUE ako $a nije jednako $b

< >nije jednako$a < > $bTRUE ako $a nije jednako $b

! = = nije identicno$a ! = = $bTRUE ako $a nije jednako $b ili ako nisu istog tipa podatka

vece od$a > $bTRUE ako je $a veca od $b

< =manje ili jednako od$a < = $bTRUE ako je $a manja ili jednaka $b

>=vece ili jednako od$a > = $bTRUE ako je $a veca ili jednaka $b

Tabela 2.5. Operatori poreenjaPHP 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 operatoriUz 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.OperatorZnaenjePrioritetPrimerRezultat

!negacija1!$aTRUE ako je $a FALSE

&&logicko i2$a && $aTRUE ako su obe vrednosti TRUE

andlogicko i3$a and $bTRUE ako su obe vrednosti TRUE

||logicko ili4$a || $bTRUE ako je bar jedna od vrednosti TRUE

orlogicko ili5$a or $bTRUE ako je bar jedna od vrednosti TRUE

xorekskluzivni ili6$a xor $bTRUE ako je samo jedna vrednost TRUE

Tabela 2.6. Logiki operatoriKao 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 struktureKako 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 strukturaNakon 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 strukturaDodavanjem kljune rei else mogu se odrediti naredbe koje e se izvriti ako uslov nije ispunjen.

Slika 2.8. IF-ELSE uslovna struktura2.4. Sloene uslovne struktureU sloenijim situacijama potrebno je ispitati vie uslova pre nego to se donese odluka. If-elseif strukturaJednostavna uslovna struktura moe se proiriti dodavanjem novog uslova, uz korienje kljune rei elseif.

Slika 2.9. IF-ELSEIF uslovna strukturaU 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 strukturaIF-ELSEIF struktura moe se napisati na jednostavniji nain korienjem SWITCH strukture.

Slika 2.10. SWITCH strukturaZavisno 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. PoljaZa 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 kljuemNumeriki 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. IndexVrednost

0Ni

1Beograd

2Novi Sad

Tabela 2.7. Primer polja sa imenima gradovaZa stvaranje polja koristi se kljuna re array:

Slika 2.11. Korienje kljune rei array za stvaranje poljaZa 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 kljuemOsim 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.

KljuVrednost

Ni18000

Novi Sad21000

Beograd11000

Tabela 2.8. polje sa znakovnim kljuevima2.5.3. Dvodimenzionalna poljaDok 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. PetljePetlje 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 petljaNajjednostavnija petlja je petlja while.

Slika 2.11. While petljaPosle 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 petljaFor petlja ima poseban nain pisanja.

Slika 2.12. FOR petljaU 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 petljeSvaki 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 petljaPetlja 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 foreachOva 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. FunkcijeNaredbe 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-uZa 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 skriptiPodaci 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 GETKod 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 metodom2.8.2. Metoda POSTKod 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 podatakaSa 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 podatakaZa svaki projekat potrebna je odvojena baza podataka. Nova baza podataka kreira se pomou naredbe:CREATE DATABASE imebaze;3.2. Kreiranje tabelaBaza 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 podatkaSledei korak u stvaranju tabele je definisanje tipova podataka. U tabeli 3.1. dat je pregled tipova podataka koji se koriste u MySQL-u.Tip podatkaOpis

INTcelobrojna veliina

TINYINTveoma mala celobrojna veliina (-128 do 127)

SMALLINTmala celobrojna veliina

MEDIUMINTcelobrojna veliina srednje vrednosti

BIGINTveliki ceo broj

FLOATdecimalni broj sa pokretnim zarezom

DOUBLEdecimalni broj sa pokretnim zarezom (dvostruka vrednost)

DECIMALdecimalni broj

DATEdatum (format YYYY-MM-DD)

DATETIMEdatum i vreme(format YYYY-MM-DD HH:MM:SS)

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

TIMEvreme (format HH:MM:SS)

YEARgodina (fromat YYYY ili YY)

CHARniz znakova fiksne duine (maksimum 255)

VARCHARniz znakova promenljive duine (maksimum 255)

TEXTtekstualni podaci

TINYTEXTtekstualni podaci male veliine

MEDIUMTEXTtekstualni podaci srednje veliine

LONGTEXTtekstualni podaci velike veliine

BINARYniz bajtova fiksne duine

VARBINARYniz bajtova promenljive duine

BLOBbinarni podaci

TINYBLOBbinarni podaci male veliine

MEDIUMBLOBbinarni podaci velike veliine

LONGBLOBveliki binarni podaci

ENUMenumeracija

SETskup

Tabela 3.1. Tipovi podataka koji se koriste u MySQL-uNajee 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 podatakaU jeziku SQL postoje etiri vrste upita: SELECT INSERT UPDATE DELETESELECT 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 podatakaZa 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_ispitBaza 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 ljubimceNain 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 slikeSve 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 sajtaNa 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 administratoriOznaka 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 podatakaKonekcija 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 postSada 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-uNaravno 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 vestimaNa 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 vestiU 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 vestiOva 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 oglasaPrilikom 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 galerijeNajvea 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 gosteOva 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 registracijuForma 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 formeKada 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 vestiGalerija 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

ZakljuakPHP 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