Professional Documents
Culture Documents
NI
SEMINARSKI RAD
PHP i MySQL
Predmet: Napredne internet i web tehnologije
Student:
Katarina Dili RTs 3/14
Sadraj
1.
Uvod..............................................................................................................................................4
2.
2.2.
2.2.1.
Promenljive.....................................................................................................................5
2.2.2.
Konstante.........................................................................................................................6
2.2.3.
2.2.4.
Aritmetiki operatori.......................................................................................................7
2.3.
2.3.1.
Operatori poreenja.........................................................................................................9
2.3.2.
Logiki operatori...........................................................................................................10
2.3.3.
2.4.
2.5.
Polja......................................................................................................................................13
2.5.1.
2.5.2.
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.
2.8.1.
Metoda GET..................................................................................................................18
2.8.2.
3.
Metoda POST................................................................................................................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.1.
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.
2.2.
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 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.
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
Znaenje
Primer
poveanje za 1
$a++
umanjenje za 1
$a-Tabela 2.3. Operatori uveanja I umanjenja za 1
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).
2.3.
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
<>
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
>
vece od
$a > $b
od $b
TRUE ako je $a veca
<=
$a < = $b
od $b
TRUE ako je $a manja
$a > = $b
ili jednaka $b
TRUE ako je $a veca
>=
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
2.4.
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.
2.5.
Polja
Vrednost
Ni
Beograd
Novi Sad
Tabela 2.7. Primer polja sa imenima gradova
Vrednost
18000
21000
11000
Tabela 2.8. polje sa znakovnim kljuevima
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.
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.
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.
2.8.
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.
3.1.
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
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.
SELECT
INSERT
UPDATE
DELETE
SELECT slui za dohvatanje podataka iz tabele. Upit koji bi dohvatio sve podatke iz tabele izgleda
ovako:
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.
opisuje galeriju)
slike tabela u kojoj se smetaju slike iz svih galerija
video_galerija -tabela sa podacima poput naziva embedovanog videa, youtube adrese sa
svih videa
komentari_video registrovanim korisnicima omogueno je komentarisanje videa.
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.
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.
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.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.
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.
4.3.
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.
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.
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