Professional Documents
Culture Documents
PHP Prirucnik
PHP Prirucnik
Prirunik uz seminar
Vlatka Paunovi
Sinia Tomi
Hrvatska udruga za otvorene sustave i Internet
Listopad, 2006
Imenovanje-Dijeli pod istim uvjetima 2.5 Hrvatska
Slobodno smijete:
Programski jezik
PHP
6
PHP: Prirunik uz seminar
7
PHP: Prirunik uz seminar
8
PHP: Prirunik uz seminar
Troslojna arhitektura
Troslojnu arhitekturu ine, kao to joj i ime govori, tri osnovna sloja. Prvi sloj je
klijentski koji ukljuuje preglednik i samu mreu Internet. Srednji sloj je posluitelj weba
na kojem se izvravaju skriptni jezici ili izvrne datoteke, dok je posljednji, trei sloj, onaj u
kojem se nalazi sustav za upravljanje bazom podataka i sama baza podataka.
Temelj srednjeg sloja je posluitelj weba. Danas se najee koristi posluitelj weba
Apache, ali je vrlo est i Internet Information Server koji je komercijalni posluitelj. Osim
ova dva, koja ine najvei dio svih posluitelja, na raspolaganju stoji i vrlo velik broj
drugih koji su u pravilu specijalizirani za neko podruje na primjer: jednostavnost
upotrebe, brzina, mala upotreba memorijskih resursa i slino. Iako i ostali mogu biti dobar
odabir ako se zna to je tono potrebno odabir prva dva navedena je u pravilu dobar
budui su dovoljno fleksibilni i omoguavaju jednostavna proirenja.
Osim posluitelja weba, u srednjem sloju danas se najee koriste skriptni jezici
zbog svoje fleksibilnosti i prenosivosti na razliite platforme. Jedan od popularnijih
skriptnih jezika je PHP. Brojni su razlozi velike prihvaenosti tog programskog jezika, a
samo neki od najeih su:
Upotreba otvorenog kda PHP programski jezik ima u potpunosti otvoren kd
Vrlo visoka razina integracije s HTML-om i potrebama Weba danas
Mogunost upotrebe i u najsloenijim sustavima
Vrlo dobra prenosivost moe se bez ikakvih preinaka koristiti i pod Linux,
Windows, Solaris i ostalim platformama
Brzo izvravanje uz sve danas raspoloive optimizacije programi pisani u
programskom jeziku PHP mogu se vrlo brzo izvravati
Dobra podrka zajednice na razvoju i upotrebi programskog jezika PHP radi vrlo
velik broj pojedinaca ime se osigurava njegova budunost i aurnost
Sloj baze podataka se koristi za pohranu i dohvat podataka. Takoer, ovaj sloj
omoguava istovremeni pristup podacima s nekoliko odvojenih posluitelja, osigurava
9
PHP: Prirunik uz seminar
Odabir arhitekture
10
PHP: Prirunik uz seminar
Svoj razvoj PHP poinje u rukama programera Rasmusa Lerdorfa koji je i danas
glavna osoba zaduena za njegov razvoj. PHP je u poetku tek bila pomo Rasmusu
Lerdorfu za izradu vlastite web stranice tako to je s nekoliko CGI programa pisanih u
programskom jeziku C zamijenio programe pisane u programskom jeziku Perl koje je do
tada koristio. Inaica 1 i 2 nisu bile previe popularne, ali 3. inaica, ija konana inaica je
izala 1998. godine privukla je velik broj poklonika ovog novog programskog jezika. 2000.
godine, izlazi i 4. inaica, da bi 2004. izala aktualna 5. inaica koja ukljuuje brojne novosti
kao to su ukljuena podrka za Unicode znakove, objektno orijentirani pristup, podrka
za XML, poboljana podrka za pristupanje MySQL bazi podataka, ukljuenu podrku za
upotrebu Web servisa kao i noviju inaicu optimizatora kda Zend ime su postignute
znatno bolje performanse samog kda.
Jedan od razloga vrlo dobre prihvaenosti programskog jezika PHP je i vrlo slina
sintaksa programskom jeziku C. Velik broj osnovnih funkcija ima istu sintaksu.
Poetnicima je takoer vrlo dobar je nije ograniavajui kao neki drugi programski jezici
budui da nema deklaracija tipova varijabli, a mogue je i istu varijablu koristiti za
pohranu razliitih vrsti vrijednosti. Iako ove karakteristike programski kd ini manje
osjetljivim na pogreke jednostavnije ih je i napraviti budui da prevodilac (eng. Compiler)
na njih nee upozoriti.
Danas se PHP koristi na neto manje od dvadeset milijuna razliitih web stranica
prema istraivanju tvrtke Netcraft.
Projekt GNU
11
PHP: Prirunik uz seminar
najpopularnijih je ona koja koristi Linux jezgru. Ona se vrlo esto naziva samo Linux iako
je puni naziv GNU/Linux.
Sam projekt GNU svoje prihode ostvaruje putem sponzora. Njihov najvei
sponzor je organizacija FSF (Free Software Foundation) koja novac prikuplja u najveoj
mjeri od pojedinaca koji podravaju ideju slobodnog softvera. Vie od 60% novaca koji je
prikupljen ostvaren je upravo donacijama pojedinaca.
12
PHP: Prirunik uz seminar
13
PHP: Prirunik uz seminar
<body bgcolor="#ffffff">
<?php echo "Moj prvi PHP program"; ?>
</body>
</html>
14
PHP: Prirunik uz seminar
Ako se pogleda HTML kd koji je preglednik dobio tada se moe vidjeti da je dio
u kojem je bio napisan PHP kd zamijenjen rezultatom njegovog izvoenja:
PHP program koji samo ispisuje neki tekst na ekran nije pretjerano koristan,
budui da se isti uinak mogao postii jednostavnim upisivanjem kda. Ipak, ve i s ovim
jednostavnim primjerom moe se pokazati sljedee:
PHP kd se nalazi unutar oznake <?php i ?>. Uz ovu oznaku mogue je koristiti i
skraeni oblik <? i ?> ali je za koritenje ove oznake potrebno podesiti i
posluitelj weba i PHP interpreter.
Razmaci koji se nalaze unutar samog PHP kda se automatski briu. To je razlog
zato se oznaka </body> nalazi u istom retku kao i ispis programa, a ne u novom
retku.
15
PHP: Prirunik uz seminar
<body bgcolor="#ffffff">
<?php echo $stranica; ?>
</body>
</html>
16
PHP: Prirunik uz seminar
Koritenje komentara
Unutar samog kda mogu se koristiti i komentari. Postoje tri oznake komentara.
Prve dvije su linijski komentari, a to su oznake // i #. Iako je oznaka # dozvoljena kao
komentar ona se rijetko koristi u PHP programima. Sve nakon tih oznaka se automatski
smatra komentarom i kao takvo se preskae u izvoenju programa.
17
PHP: Prirunik uz seminar
Ispisivanje podataka
18
PHP: Prirunik uz seminar
I ovdje se moe vidjeti da su se svi podaci ispisali i da je php programski dio kda
zamijenjen podacima koji su se ispisali.
19
PHP: Prirunik uz seminar
<?php
$tekst = novi;
?>
U prvom sluaju PHP ispravno odreuje ime varijable kao $povrsina i ispravno
zamjenjuje s vrijednosti 120. U drugom primjeru PHP pogreno odreuje ime varijable
$povrsinam2 i budui da ne moe odrediti njenu vrijednost ispisuje podrazumijevanu, a to
je prazan niz znakova. Osim kod ovakvih primjera vitiaste zagrade se mogu koristiti i za
ispisivanje sloenih varijabli kao to su polja ili objekti.
Vrste podataka
Varijable
Sve varijable u programskom jeziku PHP razlikuju velika i mala slova. Zbog toga
su sve ovo primjeri razliitih varijabli: $tekst, $TEKST, $Tekst, $tekST. Prilikom upotrebe
varijabli u programskom jeziku PHP nije potrebno deklarirati varijablu prije njenog
koritenja kao to je to sluaj u drugim programskim jezicima. Zbog toga je pisanje
programa neto jednostavniji, ali i lake dolazi do veih problema jer u sluaju da se
pogreno napie ime varijable ili se pogreno upiu velika i mala slova PHP e nastaviti
izvravati program, a kao vrijednost pogreno napisane varijable uzimat e se njena
20
PHP: Prirunik uz seminar
podrazumijevana vrijednost. Takve pogreke je teko uoiti, ali ih PHP moe ispisivati
podeavanjem vrijednosti postavke E_WARNING u konfiguracijskoj datoteci
Tipovi varijabli
U programskom jeziku PHP nije potrebno deklarirati varijable i na taj nain zadati
vrstu podataka koja se moe u njih smjestiti. Osim toga, mogue je i mijenjati vrstu
podatka koji se smjeta u neku varijablu. PHP omoguava unutar istog bloka upisivanje
numerike vrijednosti u neku varijablu, da bi se odmah zatim u nju upisao niz znakova.
Konstante
// Ispisuje 3.14
echo PI;
?>
21
PHP: Prirunik uz seminar
Izrazi i operatori
Zbog toga, na primjer, nije potrebno prilikom dijeljenja dva cijela broja jedan od
njih upotrebom cast operatora pretvoriti u broj s decimalnim zarezom kako bi rezultat
bio broj s decimalnim zarezom, ve e to PHP sam napraviti prilikom izvravanja
programa.
?>
22
PHP: Prirunik uz seminar
If uvjeti se mogu kombinirati s else blokom koji e se izvriti ako if uvjet nije
ispunjen.
<?php
if ($uvjet) {
// Blok koji se izvrava ako je $uvjet ispunjen
} else {
// Blok koji se izvrava ako $uvjet NIJE ispunjen
}
?>
Blok else if mogue je pisati i spojeno s elseif kao jednu naredbu. Na primjer:
<?php
if ($uvjet){
// Blok koji se izvrava ako je $uvjet ispunjen
}elseif($uvjet2){
// Blok koji se izvrava ako $uvjet nije ispunjen, a $uvjet2 je
}
?>
U nekim sluajevima bolje je koristiti switch naredbu. Ona djeluje jednako kao u
programskom jeziku C. Na primjer:
23
PHP: Prirunik uz seminar
<?php
switch($odabir){
case da:
// Blok koji se izvrava ako je $odabir == da
break;
case ne:
// Blok koji se izvrava ako je $odabir == ne
break;
case mozda:
// Blok koji se izvrava ako je $odabir == mozda
break;
default:
// Blok koji se izvrava ako odabir nije niti jedno od navedenog.
break;
}
Upotreba naredbe break je vrlo vana. Ona sprjeava izvoenje naredbi koje
slijede u switch bloku i nastavlja izvoenje nakon switch bloka. Ako bi se u ovom primjeru
ispustila naredba break na svim mjestima tada bi se u sluaju kada varijabla $odabir ima
vrijednost da izvrile sve naredbe u cijelom switch bloku, dakle i naredbe pod akcijom
da, ne, mozda i default naredbe. Ako bi imao vrijednost mozda tada bi se izvrile
i naredbe u default dijelu.
$tekst = 'da';
// Ispisuje: da
if($tekst == 'da'){
echo $tekst;
}
// Ispisuje: ne
if($tekst = 'ne'){
echo $tekst;
}
?>
24
PHP: Prirunik uz seminar
<?php
if($tekst == 'da' || $tekst =='ne'){
// Izvrava se ako je tekst 'da' ili 'ne'
}
While, do... while i for petlje imaju jednake sintakse kao i u programskom jeziku
C. Na primjer:
<?php
while($ispunjen_uvjet){
// While blok
}
do{
// Do ... while blok
}while($ispunjen_uvjet);
Prilikom koritenja petlji mogu se koristiti naredbe break i continue koje imaju
jednaku ulogu kao i u programskom jeziku C.
Funkcije
U programskom jeziku PHP mogu se pisati i koristiti funkcije. U novim inaicama,
kao to je inaica PHP5 mogu se koristiti i objektno orijentirane mogunosti. Prilikom
pisanja funkcija nije potrebno definirati vrstu povratne varijable za razliku od
programskog jezika C. Takoer, ne definiraju se niti vrste ulaznih niti izlaznih varijabli u
samu funkciju.
Ova funkcija sadraj niza znakova pohranjenog u varijabli $tekst ispisuje na ekran
kao HTML sadraj u obliku <h1>tekst</h1>. Funkcija ima ime naslov i jedan parametar
25
PHP: Prirunik uz seminar
Pozivanje funkcije
U svim sluajevima pozvat e se ista funkcija naslov. Zbog ove injenice nije
mogue niti dvije funkcije nazvati jednako, i razlikovati ih koritenjem malih i velikih
slova u nazivu funkciju. U sluaju da se dvije funkcije pokuaju nazvati jednaku kao u
sljedeem primjeru PHP interpreter e ispisati poruku o greci:
<?php
function naslov($tekst){
// Tijelo funkcije
echo <h1> . $tekst . </h1>;
}
function Naslov($tekst){
// Tijelo funkcije
echo <h1> . $tekst . </h1>;
}
naslov("tekst");
NASLOV("test");
?>
Vidljivost varijabli
26
PHP: Prirunik uz seminar
dvije funkcije mogu imati jednaki naziv neke varijable, ali promjena vrijednosti jedne
varijable nee utjecati na promjenu vrijednosti druge varijable.
Statike varijable biljee svoju vrijednost unutar samo jedne funkcije, ali prilikom
svakog idueg poziva funkcije sadre vrijednost iz prethodnog poziva te iste funkcije. Ove
varijable definiraju se pomou naredbe: static. Na primjer:
<?php
function naslovBrojac($tekst){
static $brojac = 0;
echo <h1> Naslov . $brojac . . $tekst . </h1>;
$brojac++;
}
naslovBrojac(tekst);
naslovBrojac(tekst);
?>
27
PHP: Prirunik uz seminar
<?php
$prefiks = Moj naslov;
function naslovGlavni($tekst){
global $prefiks;
echo <h1> . $prefiks . . $tekst . </h1>;
}
naslovGlavni(tekst);
naslovGlavni(tekst);
?>
Parametri funkcije
$tekst = Novi;
$brojac = 1;
naslovBrojac($tekst, $brojac);
naslovBrojac($tekst, $brojac);
naslovBrojac($tekst, $brojac);
echo $tekst;
echo $brojac;
?>
28
PHP: Prirunik uz seminar
naslovPrefiks(Prvo poglavlje);
naslovPrefiks(Tehnika dokumentacija, Dodatak: );
?>
Polja
Polja su vrlo vana vrsta podataka u programskom jeziku PHP. Osnovni razlog je
to se veina podataka smjeta u polja. Prilikom dohvata podataka iz baze podataka
rezultat se smjeta takoer u polje. Upravo iz tog razloga PHP ima vrlo razraene funkcije
za rad s poljima.
Inicijalizacija polja
29
PHP: Prirunik uz seminar
<?php
$novoPolje[3] = 20000;
?>
Ako je podatak potrebno samo dodati u polje, a nije vano na koje mjesto tada je
potrebno upisati samo uglate zagrade bez vrijednost polja u koje se upisuje. Na primjer:
<?php
$novoPolje[] = 30000;
?>
PHP e sam odrediti koja je zadnja upisana vrijednost u polje i dodat e novi
podatak na kraj polja.
U sluaju da se ispis eli prikazati na web stranici dobro je ispis uklopiti u HTML
oznake <pre> i </pre> kako bi se ispisale onako kako su zamiljene. Primjer programa:
<?php
var_dump($gradovi);
print_r($gradovi);
?>
30
PHP: Prirunik uz seminar
Imenovana polja
Imenovana polja mogu biti i samo vrijednosti pa je tako mogue definirati polje i
na ovaj nain:
31
PHP: Prirunik uz seminar
<?php
$gradoviPbr = array(10000 => Zagreb,
51000 => Rijeka,
21000 => Split
);
?>
Podaci u polju
Polja mogu biti i viedimenzionalna. Odnosno, neki od elemenata polja mogu biti
takoer polja. Na primjer:
<?php
$podaciOGradu = array('Zagreb',
10000,
array('rnomerec', 'Trenjevka', 'Centar')
);
?>
Zbog svih ovih karakteristika vrlo esto u jeziku PHP nije mogue podacima
pristupati koristei klasinu for petlju. Umjesto nje dobro je koristiti foreach petlju. Ona
prolazi kroz sve elemente polja pri emu u svakom prolazu varijabla foreach petlje
poprima vrijednost sljedeeg elementa u polju. Na primjer:
32
PHP: Prirunik uz seminar
<?php
foreach($podaciOGradu as $podatak){
echo 'Podatak: ';
var_dump($podatak);
}
?>
33
PHP: Prirunik uz seminar
<?php
$polje = array('Zagreb', 'Split', 'Rijeka');
echo count($polje);
// Ispisuje: 3
?>
$polje = explode(' ', $tekst) vrijednost varijable $tekst pretvara u polje pri emu
kao znak za odvajanje koristi ' ' (razmak)
<?php
print_r(explode(' ','Ovo je primjer'));
// Ispisuje: Array (
// [0] => Ovo [1] => je [2] => primjer }
?>
$tekst = implode(' ', $polje) suprotno od funkcije explode() spaja elemente polja u
jedan niz znakova koristei zadani znak za odvajanje pojedinih elemenata.
<?php
$gradovi = array('Zagreb', 'Split', 'Rijeka');
echo implode(' ',$gradovi);
// Ispisuje: Zagreb Split Rijeka
?>
Datumi i vrijeme
Za dohvat broja sekundi koje su protekle od 1.1.1970. do trenutnog vremena na
raspolaganju je funkcija time(). Osim za dohvata aktualnog vremena mogue je i odrediti
broj sekundi proteklih od 1.1.1970. za proizvoljan datum. Za to je na raspolaganju funkcija
34
PHP: Prirunik uz seminar
Prvi dio podatka predstavlja dio u mikrosekundama, dok drugi predstavlja broj
sekundi proteklih od 1.1.1970. godine.
35
PHP: Prirunik uz seminar
Oznaka
Opis Primjer vrijednosti
formata
D Tekstualni prikaz dana, tri slova Mon do Sun
j Dan u mjesecu bez vodeih nula 1 do 31
l (malo 'L') Puni naziv dana u tjednu Sunday do Saturday
1 (za ponedjeljak) do 7 (za
N ISO-8601 numeriki prikaz dana u tjednu (od PHP 5.1.0)
nedjelju)
st, nd, rd ili th. Radi
S Engleski nastavak za dan u mjesecu, dva znaka
ispravno s j
0 (za nedjelju) do 6 (za
w Numeriki prikaz dana u tjednu
subotu)
z Dan u godini (poevi od 0) 0 do 365
Week --- ---
ISO-8601 broj tjedna u godini, tjedni poinju u ponedjeljak (od PHP Primjer: 42 (42 drugi tjedan
W
4.1.0) u godini)
Month --- ---
F Puni tekstualni prikaz mjeseca kao to je January ili March January do December
m Numeriki prikaz mjeseca s vodeim nulama 01 do 12
M Kratki tekstualni prikaz mjeseca, tri slova Jan do Dec
n Numeriki prikaz mjeseca, bez vodeih nula 1 do 12
t Broj dana u mjesecu 28 do 31
Year --- ---
1 ako je prijestupna, 0
L Da li je prijestupna godina
inae.
ISO-8601 oblik godine. Ima isti oblik kao i Y, osim to ako ISO broj
o tjedna (W) pripada prethodnoj ili sljedeoj godini koristi se ta Primjer: 1999 ili 2003
godina. (od PHP 5.1.0)
Y Puni numeriki prikaz godine, 4 znamenke Primjer: 1999 ili 2003
y Dvoznamenkasti prikaz godine Primjer: 99 ili 03
Time --- ---
a Malim slovima Ante meridiem i Post meridiem am ili pm
A Velikim slovima Ante meridiem i Post meridiem AM ili PM
B Swatch Internet vrijeme 000 do 999
g 12-satni oblik zapisa vremena bez vodeih nula 1 do 12
G 24-satni oblik zapisa vremena bez vodeih nula 0 do 23
h 12-satni oblik zapisa vremena s vodeim nulama 01 do 12
H 24-satni oblik zapisa vremena s vodeim nulama 00 do 23
i Minute s vodeim nulama 00 do 59
s Sekunde s vodeim nulama 00 do 59
Timezone --- ---
Primjeri: UTC, GMT,
e Identifikator vremenske zone (od PHP 5.1.0)
Atlantic/Azores
36
PHP: Prirunik uz seminar
Oznaka
Opis Primjer vrijednosti
formata
1 ako je ljetno raunanje, 0
I (veliko i) Da li je ili nije datum u ljetnom raunanju vremena
inae.
O Raznika do Greenwich vremena (GMT) u satima Primjer: +0200
Razlika do Greenwich vremena (GMT) s dvotokom izmeu sati i
P Primjer: +02:00
minuta (od PHP 5.1.3)
T Vremenska zona lokalnog raunala Primjer: EST, MDT ...
Pomak vremenske zone u sekundama. Pomak za vremenske zove
Z zapadno od UTC je uvijek negativan, a za one istono je uvijek -43200 do 50400
pozitivan
Full
--- ---
Date/Time
c ISO 8601 datum (od PHP 5) 2004-02-12T15:19:21+00:00
Primjer: Thu, 21 Dec 2000
r RFC 2822 oblikovan datum
16:01:07 +0200
U Sekunde od Unix epohe (1. Sijeanja 1970 00:00:00 GMT) Vidi funkciju time()
37
PHP: Prirunik uz seminar
38
PHP: Prirunik uz seminar
39
PHP: Prirunik uz seminar
Nakon pokretanja, potrebno je unijeti lozinku (eng. password), koja inicijalno nije
postavljena, pa je samo potrebno pritisnuti tipku Enter. Na sustav za upravljanje bazom
podataka mogue se spojiti samo s raunala na kojem je on instaliran. Time je baza sigurna
od stranih upada. Savjetuje se ipak postaviti lozinku.
40
PHP: Prirunik uz seminar
Iako postoji velik broj razliitih sustava za upravljanje bazom podatka, danas je
jedna od najpopularnijih za pristup iz programskog jezika PHP MySQL.
Relacijska baza podataka je formalni model koji koristi bazu podataka, tablice i
atribute da spremi podatke i upravlja odnosima izmeu tablica.
41
PHP: Prirunik uz seminar
Bazu podataka potrebno je kreirati samo prvi puta unosom naredbom CREATE
DATABASE. Time e se stvoriti nova prazna baza podataka bez tablica i podataka. Ovaj
primjer e kreirati bazu pod nazivom skolsko_natjecanje:
mysql> CREATE DATABASE skolsko_natjecanje;
Tablicu podataka potrebno je kreirati samo prvi puta, i ona e postojati u bazi
podataka dok se ne obrie ili dok se ne obrie cijela baza podataka. Tablica je mogue
napraviti s naredbom CREATE TABLE.
CREATE TABLE tableName(
imePolja tipPodataka [PARAMETRI],
,
[KLJUEVI]
);
Ako se na primjer eli napraviti tablica u kojoj e biti popis svih korisnika s
atributima: ime, prezime, adresa, id_grada, datum_roenja, JMBG, potrebno je upisati:
42
PHP: Prirunik uz seminar
Tipovi podataka
serial cijeli broj tip podatka, koji se najee koristi za dodjeljivanje ID-eva.
Mogue je samostalno upisati ID, ili ako se za vrijednost unese 0, sustav e
automatski sam odrediti novi ID.
text niz znakova za koji se ne zna kolika e biti maksimalna duina teksta.
Na primjer: Opisni tekst, sadraj vijesti, i slino
43
PHP: Prirunik uz seminar
Parametri
Najei parametar je NOT NULL, koji oznaava da polje u stupcu mora imati
vrijednost.
Kljuevi
Klju je atribut ili skup atributa ije su vrijednosti u tablici jedinstvene. U tablici
moe biti vie kljueva, ali se jedan od kljueva uvijek proglaava primarnim. Kreiranjem
primarnih kljueva baza podataka stvara indekse koji omoguavaju vrlo brzo
pretraivanje i dohvat podataka.
Ova naredba e u tablici kreirati novi redak ija e vrijednost za atribut id biti 1
(id je tipa SERIAL, a sustav zapoinje uveavati brojeve od broja 1, za idui podatak
id e biti 2), za atribut ime e biti 'Ivo', za atribut prezime e biti 'Ivi', itd.
Ako nije potrebno ispuniti pojedini podatak za atribut, tada je mogue unijeti
44
PHP: Prirunik uz seminar
vrijednost NULL, pri emu treba pripaziti da taj atribut nema parametar NOT NULL.
Primjer umetanja NULL vrijednosti:
INSERT INTO korisnik(id, ime, prezime,
adresa, id_grad, dat_rodjenja, jmbg)
VALUES (0, 'Ivo', 'Ivi',
NULL,NULL, '1981-05-18',NULL);
Za brisanje specifinog retka ili redaka iz tablice potrebno je dodati WHERE dio
upita. Tako, na primjer, za brisanje korisnika kojem vrijednost atributa id iznosi 1 je
potrebno upisati:
DELETE FROM korisnik
WHERE id=1;
Ako je potrebno obrisati sve korisnike koji se zovu 'Ivo', tada je potrebno upisati:
DELETE FROM korisnik
WHERE ime='Ivo';
Ako je potrebno obrisati sve korisnike ije je ime 'Ivo' i prezime poinje na slovo
'S', a roeni su nakon 1990 godine, naredba e izgledati kao u sljedeem primjeru:
DELETE FROM korisnik
WHERE ime='Ivo' AND
prezime LIKE 'S%' AND
dat_rodjenja > '1990';
45
PHP: Prirunik uz seminar
znak '\' - koji ukida specijalno znaenje znakova %,\ i _,a ispred kojeg je
upisan.
Za brisanje svih korisnika koji se zovu 'Ivo' ili 'Marko' potrebno je upisati:
DELETE FROM korisnik
WHERE ime='Ivo' OR ime='Marko';
Izmjena jednog ili vie podataka u tablici, obavlja se upitom UPDATE. Ovaj upit
se najee koristi zajedno u kombinaciji s WHERE dijelom, koji se upotrebljava na jednak
nain kao i u naredbama DELETE i SELECT.
Ako se, na primjer, eli izmijeniti naziv ulice 'Ljubljanska ulica' u 'Zagrebaka
ulica' potrebno je upisati:
UPDATE korisnik
SET adresa='Zagrebaka ulica'
WHERE adresa='Ljubljanska ulica';
Ako je potrebno izmijeniti vie atributa, tada je to mogue uiniti kao u sljedeem
primjeru:
UPDATE korisnik
SET adresa='Zagrebaka ulica',
id_grad=4
WHERE adresa='Ljubljanska ulica';
Rezultat izvoena upita UPDATE je broj redaka koji su promijenjeni. Ako MySQL
primijeti da je vrijednost ve postavljena na vrijednost na koju bi ju trebalo aurirati,
podatak nee biti promijenjen i nee se uraunati u broj redaka koji su izmijenjeni.
46
PHP: Prirunik uz seminar
SELECT *
FROM korisnik;
U bazama podataka, najee postoji vie desetaka ili stotina tablica, koje su u
meusobnim odnosima. Ako uz tablicu korisnik postoji i tablica gradovi s atributima id,
postanski_broj i ime_grada, tada je mogue upisati sljedei upit:
SELECT *
FROM korisnik, gradovi
WHERE korisnik.id_grad=gradovi.id;
Ovim upitom prikazuju se svi podaci iz obje tablice, pri emu se vrijednostima iz
tablice korisnik, pridruuju vrijednosti o imenu i potanskom broju grada.
47
PHP: Prirunik uz seminar
Napredne mogunosti
programskog jezika PHP
48
PHP: Prirunik uz seminar
HTML obrasci
HTML omoguava izradu web obrazaca. Web obrasci mogu sadravati unaprijed
definirane vrsta polja kao to su: kratki unos, odabir jedne od vie mogunosti, odabir vie
od vie mogunosti, unos kratkog teksta, unos datoteke i slino. Za svako od ovih vrsta
polja postoji odgovarajua HTML oznaka putem koje se definira vrsta polja.
Veina podataka se unosi putem <input> HTML oznake. Osnovna polja ove
oznake su:
49
PHP: Prirunik uz seminar
Action URL stranice na koju se alju podaci (Na primjer: URL programa u
jeziku PHP)
50
PHP: Prirunik uz seminar
<html>
<head>
<title>Prijava novog korisnika</title>
</head>
<body>
Otvaranje novog korisnikog rauna:<br/>
<form action='obrada.php' method='POST'>
Korisnik: <input type='text' name='user'><br/>
Lozinka: <input type='password' name='pass'><br/>
Ime: <input type='text' name='first'><br/>
Prezime: <input type='text' name='last'><br/>
Email: <input type='text' name='email'><br/>
<input type='submit' value='Poalji'><br/>
</form>
</body>
</html>
user korisnik
51
PHP: Prirunik uz seminar
Mogue je i istovremeno prenositi dio podataka putem POST, a dio putem GET
parametara. Kako bi se to postiglo GET parametre je u HTML datoteci potrebno runo
navesti u action parametru HTML oznake <form>.
PHP sam obrauje sve podatke prije nego to ih smjesti u varijable $_POST i
$_GET. Podaci nakon obrade vie ne sadre kodirane znakove u obliku u kojem se
prenose, ve su oni ve dekodirani i izravno spremni za upotrebu.
52
PHP: Prirunik uz seminar
Osim varijabli $_POST i $_GET postoje i druge varijable kojima se moe pristupiti
razliitim informacijama vezanim uz postavke posluitelja ili operacijskog sustava kao to
su: $_ENV i $_SERVER. Nakon dohvata vrijednosti varijabli njima se moe rukovati
jednako kao i bilo kojim drugim varijablama u jeziku PHP.
53
PHP: Prirunik uz seminar
Ova injenica je vrlo vana zbog same strukture svih Web aplikacija i samog
protokola dohvata Web stranica. Proces dohvata nekoliko Web stranica s jednog
posluitelja nije povezan. Tako, ako korisnik eli posjetiti neku stranicu njegov preglednik
e uspostaviti vezu s posluiteljem, poslati zahtjev za stranicom i nakon to primi odgovor
prekinut e vezu. Nakon to je veza prekinuta posluitelj gubi svaku vezu s korisnikom, a
ona poinje i odmah zavrava svakim uspjenim uitavanjem stranice. Bez mogunosti
pohrane Cookie varijable u preglednik posluitelj nikako ne bi mogao ponovo prepoznati
istog korisnika, neovisno o tome da li je od prole posjete prolo nekoliko sekundi ili
nekoliko godina.
Iako je cijeli ovaj proces dosta sloen koritenjem jezika PHP mogue ga je vrlo
jednostavno koristiti. Dovoljno je samo sve podatke o korisniku koje se ele pamtiti
prilikom svake posjete korisnika pohraniti u globalnu varijablu $_SESSION. Ova varijabla
je imenovano polje kao to su to i varijable $_POST i $_GET. Razlika u odnosu na njih je u
injenici da ona ne sadri podatke koje je korisnik upisao, ve podatke o samom korisniku
54
PHP: Prirunik uz seminar
koje aplikacija moe slati sama sebi. Sadraj varijable $_SESSION vezan je uz tono
odreenog korisnika i ima svoj rok trajanja. Rok trajanja ovisi o postavkama samog PHP
interpretera, a obino iznosi nekoliko sati.
55
PHP: Prirunik uz seminar
Nakon unosa podataka podaci se alju datoteci login.php koja ima sljedei sadraj:
<?php
// Provjera podataka
session_start();
if($_POST['user'] == 'ihorvat' && $_POST['pass'] == '1234'){
$_SESSION['login'] = $_POST['user'];
} else {
unset($_SESSION['login']);
}
56
PHP: Prirunik uz seminar
<?php
session_start();
if(isset($_SESSION['login'])){
echo Dobrodoli prijavljeni korisnie!<br/>;
echo Danas je: . date(l). <br/>;
echo Odaberite: <br/>;
echo <a href='sati.php'>Sati</a>;
echo <a href='minute.php'>Minute</a>;
echo <a href='godine.php'>Godina</a>;
} else {
echo Upisali ste pogreno korisniko ime ili lozinku!<br>;
echo Pokuajte ponovo;
}
?>
57
PHP: Prirunik uz seminar
MySQL
PostgreSQL
FrontBase
ODBC
Sybase-CT
Oracle (oci8)
SQLite
U starijim inaicama jezika PHP nije mogue izravno spajanje na sve ove baze
podataka, dok e u buduim popis biti vjerojatno i proiren.
Svaka od ovih baza podataka ima svoje vlastite funkcije koje olakavaju spajanje i
upotrebu baze. Postoje i gotove PHP biblioteke koje same pozivaju odgovarajue funkcije,
i za pristup svim bazama podataka koriste potpuno jednake metode. Takav pristup je
dobar ako se eli podravati vei broj baza podataka, ali je njegov nedostatak sporiji
pristup bazi.
58
PHP: Prirunik uz seminar
if (!$db) {
die('Greka prilikom spajanja: ' . mysql_error());
}
mysql_close($db);
?>
Funkcija die() prekida izvoenje ostatka programa i ispisuje poruku koja je njen
parametar. Funkcija mysql_error() dohvaa poruku o pogreci koja je nastala.
59
PHP: Prirunik uz seminar
<?php
$rezultat = mysql_query('SELECT * FROM korisnik', $db);
if(!rezultat){
die('Greka prilikom izvoenja upita '. mysql_error());
}
?>
Vrlo esto se prilikom rada s bazom podataka trae informacije koje korisnik
upisuje putem Web stranica. Na primjer pretraivanje prezimena osoba kojima je ime
uneseni podatak. est sigurnosni propust u tom sluaju je izravno slanje upita korisnika
bazi podataka. Na primjer:
<?php
$rezultat =
mysql_query(SELECT * FROM korisnik WHERE ime = '$_GET[ime]', $db);
if(!rezultat){
die('Greka prilikom izvoenja upita '. mysql_error());
}
?>
60
PHP: Prirunik uz seminar
nastaje u sluaju da korisnik umjesto podataka Pero upie ovaj tekst Pero'; DELETE
FROM korisnik; Tada e se izvriti ovaj upit:
SELECT * FROM korisnik WHERE ime = 'Pero'; DELETE FROM korisnik;';
Odnosno prvo e se izvriti upit SELECT kao to je i bila elja, ali odmah potom e
se izvriti upit DELETE from korisnik to nije bila elja. Ovo je vrlo est propust kod
PHP aplikacija koje izvode upit na bazi. Kako bi se sprijeio korisnik u slanju ovog
opasnog upita, dovoljno je podatak $_GET['ime'] poslati ugraenoj funkciji
mysql_real_escape_string() koja e iz upita obrisati potencijalno opasne znakove kao to
su apostrofi i uiniti ga sigurnim za izvoenje. Takoer, u sluaju da se koristi mogunost
jezika PHP da sam upie oznaku \ prije apostrofa mogue je koristiti funkciju
stripslashes() koja e ih obrisati budui da e ih funkcija mysql_real_escape_string()
dodati.
$rezultat =
mysql_query(SELECT * FROM korisnik WHERE ime = '$ime', $db);
if(!rezultat){
die('Greka prilikom izvoenja upita '. mysql_error());
}
?>
if(!rezultat){
die('Greka prilikom izvoenja upita '. mysql_error());
}
?>
Funkcija mysql_query osim SELECT upita moe izvravati i sve ostale upite kao
to su DELETE, CREATE TABLE, INSERT i ostale. U sluaju tih upita nije potrebno
pozivati funkciju mysql_fetch_array() budui da ovi upiti ne vraaju takav oblik rezultata.
61
PHP: Prirunik uz seminar
Javascript
62
PHP: Prirunik uz seminar
Uvod u Javascript
JavaScript je skriptni jezik koji se koristi na webu za:
Sama sintaksa ovog jezika je vrlo slina jeziku C, a njegov kd se nalazi unutar
HTML kda stranice. Zbog slinosti imena sa programskim jezikom JAVA, veina misli
da su to jednaki jezici, ali su JavaScript i JAVA razliiti i po konceptu i po dizajnu.
JavaScript se izvrava na klijentskom raunalu, i vrlo je jednostavan programski jezik, dok
je JAVA vrlo moan i kompleksan jezik nalik na C/C++/C# koji se izvrava na samom
posluitelju.
63
PHP: Prirunik uz seminar
64
PHP: Prirunik uz seminar
Varijable
Tip varijable u jeziku JavaScript nije potrebno definirati. Imena varijabli razlikuju
velika i mala slova, pa tako JavaScript ove varijable smatra razliitima: Brojac, brojac,
BROJAC, BROjac, Varijable moraju zapoeti slovom ili oznakom podcrte '_'.
65
PHP: Prirunik uz seminar
ili
<script language="JavaScript" type="text/javascript">
brojac = 10
</script>
Kod jezika JavaScript nije neophodno upisivati oznaku toka-zarez (;) na kraju
svake naredbe ako je to zadnja naredba u retku. Ako se eli navesti vie naredbi u retku
potrebno ih je odvojiti s oznakom toka-zarez (;).
Koritenje komentara
Unutar samog kda mogu se koristiti i komentari. Postoje dvije oznake komentara.
Prva je oznaka za linijski komentar // . Sve nakon ove oznake se smatra komentarom i kao
takvo se preskae u izvoenju programa.
66
PHP: Prirunik uz seminar
Komuniciranje sa korisnikom
Prozor s upozorenjem se najee koristi kada se eli vidljivo prenijeti neka vana
informacija do korisnika. Vrlo esto se koristi u obrascima, kako bi se korisnika koji eli
poslati ispunjeni obrazac, upozorilo da nije ispunio sva polja, te da ne moe nastaviti dok
ne ispuni sva obavezna polja. Ovaj prozor ispisuje poruku koja se alje unutar funkcije, a
gumb OK se koristi za potvrdu da je poruka primljena. Primjer:
<script language="JavaScript" type="text/javascript">
alert("Obrazac nije moguce poslati, jer niste ispunili sva potrebna
polja.");
</script>
Potvrdni prozor se najee koristi kada se eli da korisnik potvrdi ili odbaci neku
akciju ili informaciju. Najee se koristi u obrascima kako bi se provjerilo da li je korisnik
siguran da eli obrisati ili dodati neki podatak. Ovaj prozor ispisuje poruku, koja je zadana
unutar funkcije, te mogunosti OK i Cancel, kojima korisnik moe vratiti potvrdni ili
nijeni odgovor. Primjer:
<script language="JavaScript" type="text/javascript">
confirm("Da li ste sigurni da imate vise od 72 godine?");
</script>
Trea vrsta prozora je prozor za unos vrijednosti. Ova vrsta naredbe se ne koristi
ba esto, ali ju je mogue iskoristiti, ako je potrebno na brzinu napraviti jednostavni
obrazac s jednim poljem za unos vrijednosti. Funkcija za poziv naredbe prihvaa dva
67
PHP: Prirunik uz seminar
Funkcije
68
PHP: Prirunik uz seminar
Smarty
69
PHP: Prirunik uz seminar
Upotreba predloaka
PHP je od poetka zamiljen kao programski jezik za upotrebu u Web
aplikacijama. Rezultat izvoenja programa pisanog u jeziku PHP upisuje se izravno u
HTML stranicu. Vrlo esto je rezultat izvoenja je potrebno vizualno prilagoditi ostatku
stranice.
Upotrebom izravnog ispisivanja poruka upotrebom naredbe echo ili print to moe
postati vrlo teko. Budui da se dio podataka koji se ispisuje moe zbog sloenosti samog
jezika PHP nalaziti u sklopu razliitih funkcija ili ak drugih datoteka koje se mogu
ukljuiti lako moe biti nejasno to se tono ispisuje, u kojim sluajevima i na koji nain.
Dodatni problem nastaje kada je potrebno dizajn stranice prepustiti osobi koja ne razumije
programski jezik PHP, ali dobro zna HTML, na primjer profesionalnom dizajneru.
Smarty: http://smarty.php.net/
PHPlib: http://phplib.sourceforge.net/
Yats: http://yats.sourceforge.net/
FastTemplate: http://www.thewebmasters.net/php/FastTemplate.pHTML
SimpleTemplate: http://simplet.sourceforge.net/
70
PHP: Prirunik uz seminar
Yapter: http://yapter.sourceforge.net/
Veina od ovih sustava ima svoje prednosti i nedostatke. Danas se vrlo esto
koristi sustav predloaka Smarty. Njihova najvea prednost je brzina, dok je prednost
predloaka Smarty u velikoj mogunosti prilagodbe i izvravanju najsloenijih zadataka.
Najvei konkurent sustavu predloaka Smarty je sustav predloaka Savant. Savant se
definira upotrebom PHP naredbi, pa dizajneri ne trebaju uiti novi programski jezik,
neovisno o tome koliko je jednostavan, ali mu je to ujedno i nedostatak budui da dizajneri
time imaju mogunost koritenja svih PHP naredbi ime se moe dio funkcionalnosti
premjestiti u predloke to nije dobro.
Osnovne mogunosti
71
PHP: Prirunik uz seminar
Instalacija
smarty.class.php
smarty_Compiler.class.php
config_File.class.php
debug.tpl
internals/
plug-ins/
Prve su etiri datoteke, a posljednje dvije su mape. Ove datoteke nije potrebno
ureivati i sve su potrebne za ispravno izvravanje programa. Osim ovih mapa potrebne
su i ove: templates/ te templates_c/ i cache/. U mapi templates trebaju se nalaziti datoteke
predloaka koje e se koristiti iz PHP programa, dok e se u mape templates_c/ i cache/
automatski pohranjivati kompilirane datoteke predloaka za bre izvravanje. Zbog toga
je potrebno posluitelju weba omoguiti pisanje u mape templates_c/ i cache/.
Posluitelj weba mora imati pravo itanja svih datoteke i mapa za ispravan rad.
72
PHP: Prirunik uz seminar
<?php
require('Smarty.class.php');
$smarty = new Smarty;
73
PHP: Prirunik uz seminar
Sami programi u jeziku PHP nemaju nikakvih PHP oznaka i kad bi im se izravno
pristupilo putem posluitelja weba bez ukljuenih predloaka Smarty oni ne bi nita
ispisali iako bi se izvrili. Cijela njihova uloga je odrediti varijable pomou metode assign()
i zatim putem metode display() pozvati prikaz stranice. Osim ovog dodatka programi
pisani u jeziku PHP ne trebaju imati nikakva saznanja o sustavu predloaka koji se koristi.
Koritenje komentara
74
PHP: Prirunik uz seminar
Konfiguracijska datoteka
# globalne varijable
nazivStranice = "Naslovna stranica"
bojaTeksta = #000000
75
PHP: Prirunik uz seminar
Varijable
Osim ovih postoje i varijable koje sam predloak Smarty definira, a putem kojih se
mogu dohvatiti neke sistemske vrijednosti. Pristup sistemskim vrijednostima mogu je
putem ugraene varijable $smarty koja je raspoloiva u samom sustavu predloaka.
Primjer dohvata ovih varijabli:
76
PHP: Prirunik uz seminar
Funkcije
77
PHP: Prirunik uz seminar
{* 18 ne broji razmake *}
{$tekst|count_characters:true}
78
PHP: Prirunik uz seminar
{* Npr: 16:03:23 *}
{$now|date_format:%H:%M:%S}
Ako varijabla sadri neku vrijednost ispisuje tu vrijednost inae ispisuje niz
znakova koji je zadan kao parametar:
{* Ovo je primjer teksta *}
{$tekst|default:Nije zadano}
{* Nije zadano *}
{$prazna_varijabla|default:Nije zadano}
{* Ovo+je+primjer+'teksta' *}
{$tekst|escape:'url'}
79
PHP: Prirunik uz seminar
Ispisuje odgovarajui broj razmaka ili drugih znakova kojima se uvlai tekst:
{* Ovo je tekst *}
{$tekst|indent}
{* Ovo je tekst *}
{$tekst|indent:10}
{* >>>Ovo je tekst *}
{$tekst|indent:3:'>'}
{* 16 *}
{$primjer|string_format:'%d'}
80
PHP: Prirunik uz seminar
{* Ovo_je_tekst *}
{$primjer|strip:'_'}
{* Ovo je... *}
{$tekst|truncate:11}
{* Ovo je *}
{$tekst|truncate:11:''}
{* Ovo je___ *}
{$tekst|truncate:11:'___'}
{* Ovo je prim *}
{$tekst|truncate:11:'':true}
{* Ovo je p... *}
{$tekst|truncate:11:'...':true}
{* Ovo ..eksta *}
{$tekst|truncate:11:'':true:true}
81
PHP: Prirunik uz seminar
{* Ovo je
primjer
teksta *}
{$tekst|wordwrap:6}
{* Ovo je#primjer#teksta* }
{$tekst|wordwrap:6:#}
Veina ovih izmjena varijabli ima i dodatne parametre pomou kojih je mogue
dodatno definirati njihove postavke.
Ugraene funkcije
Sustav predloaka Smarty raspolae s nekoliko ugraenih funkcija. Osim ovih
mogue je definirati i vlastite funkcije. Funkcije se mogu koristiti za razliite stvari. Od
jednostavnog prolaza kroz polje emu slui funkcija {foreach}, provjeri vrijednosti
varijabli odreivanju toka izvravanja pomou funkcije {if} do ukljuivanja drugih
datoteka funkcijom {include}.
Funkcije kao parametar mogu prihvaati neki dio HTML dokumenta, a mogu i
samo raditi s onim podacima koji su im parametri. Funkcije koje kao parametar mogu
prihvaati cijeli HTML dokument nazivaju se blokovskim funkcijama. Primjer takve
funkcije je {literal} dok je primjer funkcije koja ne prihvaa HTML dokument kao
parametar funkcija {include}.
Blokovske funkcije svoj blok zapoinju nazivom funkcije. Na primjer {literal} dok
zavravaju oznakom {/literal} odnosno, dodavanjem znaka / prije imena funkcije. Blok
HTML dokumenta koji se nalazi unutar tih oznaka prenosi se kao parametar funkciji koja
ga moe modificirati ako je to potrebno.
82
PHP: Prirunik uz seminar
<div id='Info'>
{$info|upper}
</div>
# globalne varijable
nazivStranice = "Naslovna stranica"
bojaTeksta = #000000
{config_load file='konfiguracija.conf'}
{* Naslovna stranica *}
{#nazivStranice#}
83
PHP: Prirunik uz seminar
84
PHP: Prirunik uz seminar
Ukljuuje PHP datoteku koja se izvrava unutar predloka. Ova mogunost postoji
iz potrebe za sukladnosti sa prethodnim inaicama predloaka Smarty i ne savjetuje se
njeno koritenje budui da nije sasvim u skladu s filozofijom odvajanjem poslovnog od
prezentacijskog sloja:
{include_php file='/putanja/do/datoteke.php}
Ova funkcija ima slinu funkcionalnost kao i funkcija {include}, ali se rezultat
njenog izvravanja nee pohranjivati u cache/ mapu. Vrijednost parametra 'name' je naziv
funkcije koja e se pozvati iz PHP programa s prefiksom insert_:
{* Pozvat e funkciju insert_brojac iz PHP programa *}
{insert name='brojac'}
85
PHP: Prirunik uz seminar
86
PHP: Prirunik uz seminar
Instalacija
87
PHP: Prirunik uz seminar
WAMP
WAMP je besplatni program pod GPL licencom, koji olakava instalaciju
najnovijih inaica veine potrebnih programa za web programiranje ili aplikacije koje za
svoj rad trebaju PHP i MySQL.
Koraci instalacije
Instalacija programa moe se preuzeti s web adrese:
http://www.wampserver.com/en/download.php. Nakon pokretanja instalacijske datoteke,
sama instalacija se sastoji od nekoliko jednostavnih koraka:
88
PHP: Prirunik uz seminar
U ovom koraku instalacije nudi se mogunost odabira mape u koju se eli sve instalirati.
Za odabir nove mape potrebno je odabrati mogunost Browse i odabrati novu mapu.
Za nastavak instalacije potrebno je odabrati mogunost Next >.
89
PHP: Prirunik uz seminar
Prije prelaska na idui korak potrebno je odrediti naziv mape u koji se ele
smjestiti preice, a koja se nalazi u startnom izborniku.
90
PHP: Prirunik uz seminar
Sama instalacija traje vrlo kratko, a status instalacije mogue je pratiti kroz
pomicanje statusne trake.
91
PHP: Prirunik uz seminar
Na ovom ekranu potrebno je upisati naziv mail servera putem kojeg e se PHP
slati email poruke ako se koristi odgovarajua funkcija.
92
PHP: Prirunik uz seminar
U ovom koraku potrebno je upisati email adresa poiljatelja koju e PHP upisivati
u svaki poslanu email poruku. Nakon to ste upisali e-mail adresu, odaberite opciju za
nastavak instalacije Next >.
93
PHP: Prirunik uz seminar
datoteku u poetni web direktorij ili ne. Ako je poetni web direktorij prazan dobro je
odabrati Yes, a ako sadri ve neke web stranice dobro je odabrati mogunost No.
94
PHP: Prirunik uz seminar
Literatura
[1] D. Lane, Hugh. E. Williams , Web Database Application with PHP and MySQL,
2nd Edition, O'Reilly, Svibanj 2004
95