Professional Documents
Culture Documents
PHP Programiranje-Maturalni Rad
PHP Programiranje-Maturalni Rad
PHP Programiranje-Maturalni Rad
PHP programiranje
SADRAJ
1. UVOD..........................................................................................................2 2. PHP..............................................................................................................3
2.0 to je PHP? ...................................................................................................................3 2.1 Sintaksa PHP-a..............................................................................................................3 2.2 Rad s varijablama..........................................................................................................4 2.2.0 Tipovi varijabli............................................................................................4 2.3 Operatori u PHP-u.........................................................................................................4 2.3.0 Operatori za matematike operacije.................................................................5 2.3.1 Operatori za logike operacije.........................................................................6 2.3.2 Operatori za usporeivanje..............................................................................7 2.3.3 Kombinirani operatori......................................................................................8 2.4 Funkcije if i else............................................................................................................9 2.5 Arrays ( nizovi )...........................................................................................................11 2.5.0 Cjelobrojni niz................................................................................................12 2.5.1 Tekstualni niz..................................................................................................13 2.5.2 Multidimenzionalni niz...................................................................................14 2.6 Petlje u PHP-u.............................................................................................................14 2.7 Funkcije PHP-a...........................................................................................................17 2.8 Forme..........................................................................................................................19 2.8.0 $_GET metoda...............................................................................................19 2.8.1 $_POST metoda.............................................................................................20 2.9 Funkcija include( ).......................................................................................................21
6. SAETAK.................................................................................................46 7. LITERATURA..........................................................................................47
1. Uvod
Moda nam se svima ini da je Internet sa nama cijelu vjenost, iako se njegova popularizacija dogaa krajem 20. i u 21. stoljeu. Taj period je bio dovoljan za procvat i komercijalizaciju kako Interneta tako i Web stranica. Kada se spominje Internet kao izvor i medij za razmjenu informacija, prva stvar na koju pomislimo su Web stranice. One postoje od samog poetka stvaranja Interneta, ali do izraaja dolaze tek nakon stvaranja Web kataloga i poslije njih pametnih Web trailica. Prve Web stranice bazirale su se na HTML jeziku te su kao takve bile statine. Unutar HTML datoteke ispisan je HTML kod u kojem je definiran izgled stranice, njen sadraj, forma i stil. Glavni problem takvih stranica je nepraktinost njihovog odravanja upravo zbog pomijeanosti tih nesrodnih karakteristika u jednoj te istoj datoteci. Ovaj problem bio je gotovo nerjeiv kod velikih stranica na kojima se esto mijenja sadraj. Pronalazak i izmjena neke od linija koda bio je dug, mukotrpan i neekonomian posao, a mogle su ga obavljati samo iznimno kompetentne osobe koje su vrlo dobro poznavale HTML jezik. Sasvim je oito da su bile potrebne promjene, a one se ubrzo dogaaju u smislu razvoja novih tehnologija i naina njihove primjene. Tako se, na primjer, pojavljuje CSS jezik koji odvaja stil i izgled stranice od samog HTML koda, pojavljuje se Javascript jezik koji oivljava HTML elemente, ali se i sve ee same informacije uvaju na zasebnim mjestima i to u raznim bazama podataka. Moda se ini da je HTML kod zastario i da vie nije potreban u Internetskom svijetu, ali to je i danas glavni jezik zasluan za prikaz Web stranica. Svaka stranica koju danas gledamo u naem pregledniku, isto kao i prije, zapisana je u HTML-u. Jedina razlika je da su dananje stranice puno pametnije te nam nee uvijek poslati jedan te isti HTML kod ve e to napraviti na nain koji nama najvie odgovara ili vrlo esto, koji mi sami odluimo. Takve stranice temeljene na umjetnoj inteligenciji zovu se dinamike stranice, a jedna od vodeih tehnologija pri njihovoj izradi je PHP.
2. PHP
2.0 to je PHP?
PHP je kratica za PHP: Hypertext Preprocessor, drugim rijeima PHP je snaan alat za izradu dinamikih i interaktivnih Web stranica, a jednostavno ga je opisati kao programski jezik ugradiv u HTML kod. Sintaksa PHP programiranja slina je sintaksi poznatih programskih jezika kao to su C, C++ ili Java i zato je jednostavna za nauiti i zapamtiti. Za razliku od nekih drugih skriptnih jezika PHP je besplatan i svi ga mogu koristiti. Takoer je kompatibilan sa veinom Web servera, operativnih sustava i baza podataka te je zbog toga razloga postao jedan od najrairenijih skriptnih jezika za razvoj Web stranica. Cijela ideja dinamikih stranica je da se sakupe podaci od korisnika i da se sadraj prilagodi samom korisniku. Interakcija sa korisnikom postaje kljuna, a odvija se najee putem HTML formi gdje korisnik unosi traene podatke te ih alje PHP stranici na server. Kod takvih PHP stranica kod nije vidljiv korisniku ve je prethodno procesiran na serveru. Prilikom procesiranja, PHP parser odluuje koji e sadraj biti prikazan korisniku,a koji nee. Takav dinamian pristup odreivanja sadraja, gdje se glavni dio posla obavlja korisniku iza lea glavna je odlika serverskih skriptnih jezika poput PHP jezika. PHP datoteke sadre tekstualni dio, HTML tag-ove i skripte. Te datoteke se posjetitelju neke stranice vraaju kao obini HTML iako su nastavci za PHP datoteke ".php", ".php3" , ili ".phtml".
Ova linija koda e pregledniku poslati poetni i zavrni tag ( kljunu rije ) i tekst paragrafa ( "Neki tekst" ) dok e PHP tagovi i echo funkcija ostati skriveni.
Takoer, postoje pravila za davanje imena varijablama. Po tim pravilima ime varijable mora poeti sa slovom ili sa znakom "_" . Ime varijable moe sadravati slova engleske abecede ( A-Z, a-z ), brojeve ( 0-9 ) i donju povlaku "_", zatim, u imenu ne bi trebao biti niti jedan razmak i na kraju, ako ime sadrava dvije ili vie rijei, te se rijei odvajaju sa donjom povlakom ( $veliki_broj ) ili sa drugim slovom velikim ( $velikiBroj ).
potrebno dati neku vrijednost prije nego to se one koriste u daljnjem kodu. To obavljamo sa znakom " = " na sljedei nain :
<?php $varijabla = 3 ; $druga_varijabla = $varijabla ; ?>
OPERATOR
+
OPERACIJA
ZBRAJANJE
PRIMJER
$x = 4 $x + 3 $x = 6 $x 2 $x = 3 $x * 5 $x = 10 $x / 2 $x = 5 $x / 2 $x = 10 $x++ $x = 10 $x-$x = 5 $x / 2 $x=10 $x /5 5
REZULTAT
7
ODUZIMANJE
MNOENJE
15
DIJELJENJE
2.5
OSTATAK DIJELJENJA
++
INKREMENTIRANJE
11
--
DEKREMENTIRANJE
OPERATOR
OPERACIJA
PRIMJER
$x = 3 $y = 5 ( $x < 5 && $y > 2 )
REZULTAT
&&
I ( and )
ILI ( or ) ||
$x = 7 $y = 4 ( $x = = 5 | | $y = = 5 ) $x = 6 $y = 3 ! ( $x = = $y )
NE ( not )
uvjet nije zadovoljen, rezultat je la, ali operacija NE ju invertira i daje rezultat istina
OPERATOR
==
OPERACIJA
JEDNAKO
PRIMJER
$x = = 8
REZULTAT
uvjet nije zadovoljen, rezultat je la uvjet je zadovoljen, rezultat je istina uvjet je zadovoljen, rezultat je istina uvjet je zadovoljen, rezultat je istina uvjet nije zadovoljen, rezultat je la uvjet nije zadovoljen, rezultat je la uvjet je zadovoljen, rezultat je istina
!=
RAZLIITO
$x ! = 8
<>
RAZLIITO
$x < > 5
>
VEE OD
$x > 3
<
MANJE OD
$x < 3
>=
$x > = 8
<=
$x < = 8
OPERATOR
=
PRIMJER
x=y
+=
x+ = y
x=x+y
-=
x- = y
x=x-y
*=
x*=y
x=x*y
/=
x/=y
x=x/y
.=
x. = y
x = x.y
%=
x%=y
x=x%y
Uoimo da su operatori u PHP-u praktiki isti kao i u C programskom jeziku, jedina je razlika to u C programskom jeziku ne postoje kombinirani operatori. Operatori se u PHP-u, kao i u drugim programskim jezicima koriste vrlo esto za ispitivanje stanja neke varijable, pa u skladu sa tim e i neki uvjeti trebati biti ispunjeni kako bi se odreeni odsjeak koda trebao izvriti. Tu u priu dolaze kao i u C programskom jeziku uvjetna izvravanja, a za ispitivanje uvjeta se koriste funkcije if( ) i else( ).
Funkciju if( )...else koristimo kada elimo da se dio koda izvri samo ako je neki zadani uvjet ispunjen, a u suprotnom elimo izvriti dio koda ako taj uvjet nije ispunjen. Tih uvjeta, kao i u if( ) funkciji moe biti vie i za njihovo povezivanje koristimo logike operatore I i ILI. Sva pravila vrijede kao i kod funkcije if( ). Ako uvjet unutar if( ) funkcije nije ispunjen, tada se kod unutar if( ) funkcije preskae i izvrava se kod unutar else funkcije, u suprotnom se izvrava kod unutar if( ) funkcije, a preskae se kod unutar else funkcije kao i u C programskom jeziku. Sintaksa je sljedea:
<?php if ( uvjet ) { kod koji e se izvriti ako je uvjet ispunjen ; } else { kod koji e se izvriti ako uvjet nije ispunjen ; } ?>
Funkciju if( )...elseif( )...else koristimo kada trebamo odabrati jedan od vie dijelova koda koji e se izvriti. U if( ) i elseif( ) dio upisujemo uvjete koji trebaju biti izvreni, ako niti jedan od uvjeta nije ispunjen izvriti e se else dio. Sintaksa je sljedea:
<?php if ( uvjet ) { kod koji e se izvriti ako je prvi uvjet ispunjen ; } elseif ( uvjet ) { kod koji e se izvriti ako je drugi uvjet ispunjen ; } else { kod koji e se izvriti ako nijedan uvjet nije ispunjen ; } ?>
10
Switch( ) funkciju koristimo kada zadamo vie upita, odnosno usporeujemo neku zadanu varijablu sa vie vrijednosti i ako je ona jednaka nekoj od tih vrijednosti izvravamo zadani kod, a ako nije jednaka nijednoj od tih vrijednosti izvrava se neki default koji smo zadali. Vano je da nakon svakog sluaja upiemo brake jer u sluaju da je jedan od prijanjih sluaja bio toan on e se ispisati,ali ako brake nije upisan daljnji upiti e se izvravati. Sintaksa je sljedea:
<?php $n = 3 ; switch ( $n ) { case 1 : echo "<p> Broj brake ; case 2 : echo "<p> Broj brake ; case 3 : echo "<p> Broj brake ; default : echo "<p> Broj } ?>
je jednak 1. </p>" ;
je jednak 2. </p>" ;
je jednak 3. </p>" ;
11
Postoji i mogunost u kojoj vlastoruno pridodajemo indekse. Vrijede ista pravila kao i kod automatskog dodjeljivanja, ali za svaku varijablu unutar niza potrebno je posebno, unutar vitiastih zagrada upisati indeks te varijable. Primjer zadavanja niza vlastorunim dodjeljivanjem indeksa:
<?php $niz_ime[0] $niz_ime[1] $niz_ime[2] $niz_ime[3] ?>
= = = =
Primjer primjene cjelobrojnog niza sa vlastorunim dodjeljivanjem indeksa u kojem ispisujemo imena koja poinju na slovo "M" izgleda ovako:
<?php $niz_ime[0] = "Ivan" ; $niz_ime[1] = "Marko" ; $niz_ime[2] = "Matea" ; $niz_ime[3] = "Marija" ; echo "<p> $niz_ime[1] . "," . $niz_ime[2] . " i " . $niz_ime[3] . " poinju na M </p>" ; ?>
Ovaj programski odsjeak e nam na ekranu ispisati slijedee: "Marko,Matea i Marija poinju na M
12
Drugi nain indeksiranja se izvodi tako da svaku varijablu unutar niza posebno indeksiramo. To jest, za svaku varijablu unutar niza potrebno je posebno, unutar vitiastih zagrada i izmeu jednostrukih navodnika napisati indeks te varijable. Vrijednost varijablama niza dodjeljuje se tako da se nakon indeksiranja varijabli upisuje znak jednakosti iza kojeg slijedi vrijednost koja e biti upisana u tu varijablu i koja se nalazi izmeu navodnih znakova ( dvostrukih ). Primjer ispod teksta prikazuje indeksiranje i dodjeljivanje vrijednosti varijablama niza sa istim djelovanjem kao i u prvom primjeru, ali na drugi nain indeksiranja.
<?php $starost['Ivor'] = "28" ; $starost['Ante'] = "29" ; $starost['Kreimir'] = "19" ; ?>
Odsjeak koda ispod teksta prikazuje kako bi dodijelili vrijednosti i indeksirali varijable unutar niza $starost te na kraju ispisali vrijednost koja se nalazi u varijabli $starost[ 'Ivor' ]:
<?php $starost['Ivor'] = "28" ; $starost['Ante'] = "29" ; $starost['Kreimir'] = "19" ; echo "<p> Ivor ima " . $starost['Ivor'] . " godina. </p>" ; ?>
13
Rezultat ovog programskom odsjeka je sljedei: " Ivor ima 28 godina. "
U ovom programskom odsjeku se unutar niza $kompanije jo nalaze dva niza,a to su agrokor i zg_holding, te se unutar niza agrokor nalaze varijable Konzum, Ledo, Jamnica, a unutar niza zg_holding se nalaze varijable ZET, Cistoca.
14
se ispituje u uvjetu ( poveamo ili smanjimo ) jer e u suprotnom biti napisana beskonana petlja. Sintaksa izgleda ovako:
<?php while ( uvjet ) { kod koji e se izvriti sve dok je uvjet ispunjen ; promjena stanja varijable koja se ispituje ; } ?>
While petlja se moe koristiti u brojnim sluajevima, ali njezin princip je uvijek isti. Ispod teksta se nalazi primjer primjene while petlje:
<?php $var = 5 ; while ( $var <= 5 ) { echo "<p> Broj " . $var . " je manji od 5. </p>" ; $var = var + 1 ; } ?>
For( ) petlju koristimo kada tono odreeni dio koda moramo izvriti tono odreeni broj puta. Varijablu koju ispitujemo unutar for petlje najee nazivamo $i. Kao i u while( ) petlji potrebno je zadati neki uvjet koji mora biti ispunjen da bi se petlja izvravala, za definiranje tog uvjeta koristimo operatore za usporeivanje. Petlja se sa stoji od tri dijela i to su: postavljanje varijable u poetnu vrijednost, ispitivanje uvjeta, mijenjanje vrijednosti varijable ( inkrementiranje ili dekrementiranje ). Svaki od ta tri dijela su odvojeni sa tokom zarez. Sintaksa for petlje je sljedea:
<?php for ( poetna vrijednosti;uvjet;inkrementiranje/dekrementiranje ) { kod koji e se izvravati dok je uvjet ispunjen ; } ?>
Primjer programskog odsjeka u kojem se koristi for petlja se nalazi ispod teksta:
<?php for ( $i = 1 ; $i <= 10 ; $i++ ) { echo "<p> Broj i jednak je: </p> " . $i . ; } ?>
15
Do...while( ) petlja e izvriti zadani kod jedanput, a zatim e provjeriti je li uvjet koji je zadan ispunjen, pa ako jest e izvriti opet taj zadani kod, a ako nije e ga preskoiti i izvravati daljnji kod programa. Zadani kod unutar do dijela e se izvravati sve dok je uvjet ispunjen. Vano je naglasiti da u do...while( ) petlji nakon do ne ide toka zarez, a nakon while( ) obavezno ide! Sintaksa je sljedea :
<?php do { kod koji e se izvriti ; } while ( uvjet ) ; ?>
Foreach( ) se koristi za petlje sa nizovima ( array ). Foreach petlja prolazi kroz niz i za svaki skok koji napravi se koristi vrijednost elementa niza na kojoj se u tom trenutku nalazi foreach petlja i nakon tog skoka vrijednost petlje se podie za jedan, to jest petlja skae na sljedei element niza koji e biti obraen pri slijedeem skoku foreach petlje. Sintaksa je takva da unutar zagrada foreach petlje upisujemo naziv niza as $value i to se prikazuje na sljedei nain:
<?php foreach ( varijabla as $value ) { kod koji e se izvriti ; } ?>
16
17
Primjer jednostavne funkcije koja e ispisati zadani tekst se nalazi ispod teksta:
<?php function upit ( ) { echo "<p> Svia li vam se ova stranica ? </p>" ; } upit () ; ?>
Kako bi funkciju uinili korisnijom i funkcionalnijom moemo joj dodati neke parametre. Parametri su odreeni unutar zagrada ( ) funkcije. Parametri slue za slanje informacija funkciji koje e ona koristiti i obraivati. Parametri izgledaju kao i obine varijable PHP-a. Pomou parametara moemo funkciju uiniti mnogo korisnijom i tako moemo funkciju vie puta koristiti u kodu. Kako bi u parametar, koji smo zadali unutar zagrada funkcije, neto upisali potrebno je u glavnom kodu pozvati funkciju i unutar zagrada poziva funkcije napisati koju vrijednost ili varijablu aljemo funkciji da ju ona obradi. To djelovanje funkcije sam objasnio na slijedeem primjeru:
<?php function osobe( &ime , $godine ) { echo "Pozdrav " . $ime . ". Ti ima " . $godine . " godina. <br/> " ; } osobe ( "Mario" , "18" ) ; osobe ( "Darko" , "19" ) ; osobe ( "Ana" , " 17" ) ; osobe ( "Slavica" , "45" ) ; ?>
Vana je napomena da pri upotrebi slova izvan engleske abecede, kao to je u ovom sluaju slovo datoteku moramo spremiti kao UTF-8 tip datoteke.
18
2.8 Forme
esto se u PHP-u koristi aplikacija koja u HTML obliku prikuplja podatke od korisnika, a nakon toga koristi PHP oblik kojim obrauje te prikupljene podatke. Ta aplikacija se naziva forma, iako u sutini ona nije aplikacija, ve vrsta koda koja ima slinosti sa aplikacijom. U formama koristimo $_GET i $_POST funkcije kako bi dobili eljenih ( traenih ) podataka od korisnika koji e se dalje obraivati. Korisno je znati da svaki element ( podatak ) HTML forme je dostupan i PHP formi. Kako bi znali raditi sa formama moramo znati raditi sa funkcijama $_GET i $_POST. Analogno tome, postoje dvije metode prikupljanja podataka od korisnika te su te dvije metode i dvije metode pisanja formi.
19
PHP dio:
Dobrodoao <?php echo $_GET["naziv"] ; ?>.<br /> Mjesto boravka ti je: <?php echo $_GET["gradic"] ; ?>
Nakon pokretanja ovoga koda na ekranu e nam se pojaviti prostor za upis podataka. Bit e nam ponuen upis imena i grada. Nakon to ih upiemo (npr. Ivan; Zagreb ) i potvrdimo podatke tako da stisnemo Predaj upit, na ekranu e biti ispisano slijedee:
20
PHP dio:
Dobrodoao <?php echo $_POST["naziv"] ; ?>.<br /> Mjesto boravka ti je: <?php echo $_POST["gradic"] ; ?>
U PHP dijelu je potrebno promijeniti $_GET vrstu niza u $_POST vrstu niza kako bi kod funkcionirao. Nakon pokretanja ovoga koda na ekranu e nam se pojaviti prostor za upis podataka. Bit e nam ponuen upis imena i grada. Nakon to ih upiemo (npr. Ivan; Zagreb ) i potvrdimo podatke tako da stisnemo Predaj upit, na ekranu e biti ispisano slijedee:
Dobrodoao Ivan. Mjesto boravka ti je: Zagreb.
Zapisani kod e prvo izvriti naredbe koda datoteke matura.php, a zatim e ispisati: Dobar dan! jer je to u ovom sluaju jedina naredba unutar skripte u koju je umetnuta datoteka matura.php. Nije bitno to je zapisano u datoteci matura.php, dakle skripte se odvojeno izvravaju, ali unutar iste datoteke. Moemo rei da je to neka vrsta programa unutar programa kako bi lake shvatili o emu se radi i kako funkcionira include()funkcija.
21
22
Kao to sam rekao, explode( ) funkcija dijeli zadani string u niz. U ovom sluaju dijeli string pri pojavi razmaka, kako je i zadano unutar zagrada explode( ) funkcije. Prikaz iznad napisanog koda bio bi ovakav:
Niz ( [0] [1] [2] [3] [4] [5] )
Ova metoda pretraivanja je jednostavnija od metode u kojoj se koriste regularne baze, ali loa strana ove metode je ta da ako dobiveni rezultat elimo opet koristiti za novu pretragu dobit emo isti rezultat jer se ve pronaeni string ili znak ne izbacuje iz rezultata nego se stavlja na poetak.
23
24
U drugom sluaju zamislimo da elimo ispisati dio Ivica . U tom sluaju u zagrade substr( ) funkcije je potrebno unijeti slijedee parametre:
<?php echo substr ( "Ivica i Marica" , 0, 5 ) ; ?>
Kao treu opciju. Zamislimo da trebamo ispisati samo sedmi znak u ovom stringu. Tada bi u zagrade substr( ) funkcije trebali unijeti slijedee parametre:
<?php echo substr ( "Ivica i Marica" , 7 , 1 ) ; ?>
I na kraju. Zadajmo si zadatak da ispiemo cijeli string pomou ove funkcije. U takvom primjeru bi parametri unutar zagrada substr( ) funkcije izgledali ovako:
<?php echo substr ( "Ivica i Marica" , 0 ) ; ?>
Primijetimo da nam u ovom sluaju nije potreban trei parametar ( duljina stringa koju elimo da nam funkcija ispie ) jer substr( ) funkcija, u sluaju da joj ovaj parametar nije zadan, ispisuje string od zadanog poetka pa sve do zadnjeg znaka.
25
Naravno da postoje jo mnogi znakovi koji se mijenjaju, no ovi se znakovi najee pojavljuju i mijenjaju. Primjer koritenja ove funkcije se nalazi ispod teksta:
<?php $str_HTML = ""Kako si danas?" rekao je David" ; $str_bez_HTML = htmlspecialchars ( $str_sa_HTML ) ; ?>
Ovaj program ne bi nita ispisao ve bi javio pogreku. Druga naredba u kodu iznad teksta prebacuje apostrofe koji omeuju pitanje u slijedee naredbe koje su podebljane:
<?php $str_HTML = "" Kako si danas? " rekao je David" ; ?>
Ako imamo neki kratki kod koji ne sadri puno ovakvih sluajeva tada nam je ekonominije napisati odmah entitete umjesto funkcije htmlspecialchars( ).
26
Iz ovoga se vidi da explode( ) funkcija dijeli zadani string na fragmente tako da je svaki novi fragment dio originalnog stringa izmeu dva znaka koji smo zadali kao uvjet razdvajanja u izmeu zagrada explode( ) funkcije. Svi novi fragmenti spremaju se u niz u kojem indeksi odgovaraju rednom broju fragmenta.
27
Kada su u pitanju PHP stranice, proces je malo drugaiji. Web server sam po sebi ne razumije PHP pa je na njega potrebno instalirati PHP software. Tek nakon instalacije softwarea, posjetitelj moe posjetiti PHP stranicu. Nakon to je poslan zahtjev za neku PHP stranicu, Web server poinje itati datoteku pretpostavljajui da je u HTML-u te ju tako alje Web pregledniku. No im naie na PHP tag, Web server se prebacuje na PHP nain rada te tako nastavlja itati datoteku pretpostavljajui da su sve daljnje naredbe u PHP-u. Ovaj nain rada nastavlja se sve dok Web server ne naie na PHP zavrni tag, a tada se ponovno prebacuje na HTML nain rada. Serveri takoer omoguuju PHP-u spremanje korisnikovih osobnih ili nekih drugih podataka u $_SESSION varijable koje PHP moe koristiti za vrijeme korisnikovih posjeta stranici. Oito je da PHP i Web server surauju. Iako nije sastavni dio Web servera, PHP nakon instalacije radi na skoro svim poznatim serverima, a najbolje na Apache-u. Apache je besplatan i u kombinaciji sa PHP-om, Linux operacijskim sustavom i MySQL serverom prua vrstu podlogu za stvaranje naprednih Web stranica.
28
29
funkcija, dok se podaci od korisnika u C-u prikupljaju sa scanf( ) naredbom ( funkcijom ). Postoji razlika u pohrani PHP datoteka i C datoteka. Naime, postoje tri ekstenzije pomou kojih se moe pohraniti PHP datoteka i to su: ".php", ".php3" i ".phtml". Uz tu informaciju se nadovezuje i injenica da PHP kod piemo u obinom notepad-u kojeg na kraju pohranimo sa jednom od tri nabrojane ekstenzije kako bi datoteka postala PHP skripta na temelju koje e raunalo izvravati zadane naredbe, dok s druge strane C piemo unutar nekog od programa koji je namijenjen tome (Dev-C++, Borland, itd.). PHP se odvija na Web serveru, to jest mora biti instaliran na nekom Web serveru ( npr. Apache server ), a C jezik to ne zahtjeva.
30
U svakom sluaju, ako programer ima dovoljno znanje o programiranju u PHP-u ili u C-u moe napisati zapanjujue programe u oba programska jezika ( raunalne igrice, matematike programe, ogromne Web stranice, Web igrice... ). Ispod teksta se nalaze dva primjera jednostavnih programa koji obavljaju istu radnju. Lijevi kod je napisan u PHP-u, a desni u C programskom jeziku. Vidljiva je razlika izmeu zapoinjanja i zavravanja programa i razlika u sintaksi. U ovom sluaju je vidljiva i razlika u duljini koda, ali je gotovo neprimjetljiva. Ali isto tako su vidljive i slinosti u naredbama i njihovim znaenjima, te u pisanju koda. PHP kod:
<html> <body> <?php echo " Dobar dan! " ; ?> </body> </html>
C kod:
31
32
U prikazanom kodu, unutar <head> </head> tagova , prva naredba je naredba koja se nalazi unutar tagova <title> </title> i ona nam omoguuje prikazivanje naslova svih ostalih stranica unutar browsera ( Web pretraivaa ). Sve slijedee naredbe piem unutar <body> </body> tagova. Slijedei korak je formiranje tablice koja je sr izgleda ( layout-a ) ove Web stranice. Uz naredbu table zapoeo sam formiranje tablice i zadavanje njenih mjera. Naredbom koja se nalazi ispod teksta sam definirao irinu tablice ( 750px = 750 piksela ) i izgled granica tablice, odnosno linija koje oznaavaju kraj tablice ( border = " 1 " ). Vano je napomenuti da sam tablicu radio u HTML-u. Ispod teksta je
prikazano kako sam definirao irinu tablice i stil njezinih granica:
Slijedee to sam uinio je definiranje prvog od etiri reda tablice i stavljanje pozadinske slike ( pozadinska.jpg ) u taj red. Mogunost definiranja reda tablice sam dobio tako to sam naredbe pisao unutar <tr> </tr> tagova. Nakon toga sam unutar <td> </td> tagova odredio visinu prvog reda tablice ( 120px = 120 piksela ), naredbom valign = "bottom" sam poredao tekst blie dnu reda, naredbom align="center" sam tekst poredao na sredinu reda, poslije toga sam pomou CSS koda dodao sliku preko cijelog reda tablice ( to je jedini CSS koji sam koristio ) i na kraju sam pomou naredbe echo dodao zaglavlje ( tekst ) koji sam prije pozicionirao naredbama valign i align. Nakon toga bilo je potrebno zatvoriti najprije </td> tag, a zatim i </tr> tag. Ovaj korak sam napravio preko slijedeih naredbi:
<tr> <td height="120px" valign="bottom" align="center" style="background-image:url(images/pozadinska.jpg);"> <h1> <?php echo $title; ?> </h1> </td> </tr>
U slijedeem redu tablice u formirati glavni izbornik ( meni ) stranice pomou kojeg u dobiti mogunost prelaska na ostale etiri glavne stranice. Prva od naredbi unutar novootvorenih tagova tablice ( osim definiranja visine reda tablice ) je:
Ova naredba odreuje boju pozadine glavnog izbornika koja je definirana u kodu prije ovoga i kojeg u poslije obraditi. U varijabli $trenutna_boja se nalazi boja koja je nasumino generirana sa funkcijom rand( ), no o njoj vie poslije. Posljedica ove naredbe je slijedea. Kada odaberemo neku od pet glavnih stranica pozadina glavnog izbornika e se promijeniti u jednu od nasumino generiranih boja. Linkove ( poveznice ) prema glavnim stranicama u postaviti pomou naredbi koje e me odvesti na neki link kojeg
33
sam zadao. Kako bih to napravio potrebno je stranice ( njihove datoteke ) na koje e linkovi voditi staviti u istu mapu ili tono napisati put do njih. U mom sluaju, datoteke sam stavio u istu mapu kao i datoteku gornji_dio.php. To sam napravio u PHP-u. Otvorio sam PHP tagove i unutar njih sam napisao pet linkova koji vode na pet glavnih stranica, a to su : Poetna, Primjer 1, Primjer 2, Primjer 3 i O meni. Kao oznaku koja vizualno odvaja te linkove stavio sam vertikalnu crtu ( | ). Za to sam koristio slijedeu naredbu:
Nakon ove naredbe sam dovrio tekst unutar echo funkcije kako bih naglasio o kojoj se od glavnih stranica radi, odnosno na koju od glavnih stranica vodi odreeni link. Kao i u prolom primjeru, potrebno je nakon napisanog koda zatvoriti tagove tablice. Glavni izbornik sam napravio pomou slijedeeg koda:
<tr> <td height="15px" bgcolor="<?php echo $trenutna_boja; ?> "> <!- ovo je glavni izbornik(meni) --> <?php echo ' | <a href="index.php">Poetna </a>'; echo ' | <a href="primjer1.php">Primjer 1 </a>'; echo ' | <a href="primjer2.php">Primjer 2 </a>'; echo ' | <a href="primjer3.php">Primjer 3 </a>'; echo ' | <a href="o_meni.php">O meni </a>'; echo ' |'; ?> </td> </tr>
Slijedei korak unutar gornji_dio.php, koji je moda i najvaniji za formiranje srednjeg dijela stranice ( sadraja ) je taj da sam otvorio tablicu pomou tagova za tablicu i definirao visinu reda u kojeg e se upisivati sadraj glavnih stranica, zadao sam naredbe za poravnavanje teksta kojeg u upisati ulijevo i pri vrhu tablice. To sam uinio na slijedei nain:
<tr> <td align="left" height="350px" valign="top">
Ovo je kostur kojeg e, uz donji_dio.php, koristiti svaka od pet glavnih stranica, odnosno biti e include-ani u svaku stranicu.
34
Vano je napomenuti da sam prije ovoga dijela koda napisao dio koda kako bih omoguio nasumino generiranje boje pozadine glavnog izbornika. To djelovanje mi je omoguila funkcija rand( ). Sintaksa rand( ) funkcije je slijedea: rand( min, max ) pri emu je min broj poetka niza, a max broj koji oznaava kraj niza. Naime, napravio sam niz $boje koji se sastoji od etiri elementa. U elemente tog niza sam unio vrijednosti ( nazive ) etiriju boja i to su: uta ( yellow ), crvena ( red ), zelena ( blue ) i bijela ( white ). Sa tim sam odredio da e se nasumino generirati te etiri boje i da e uvijek jedna od te etiri boje biti pozadina glavnog izbornika. Nakon toga sam pomou funkcije rand( ) i niza $boje upisao vrijednost u varijablu $trenutna_boja koju sam spomenuo gore. Ta varijabla slui za reguliranje i mijenjanje boje glavnog izbornika tako to funkcija nasumino generira neku od boja unutar niza $boje i zatim se ta vrijednost spremi u varijablu $trenutna_boja. To sam postigao pomou slijedeeg koda:
<?php //upisivanje vrijednosti(boja) u elemente niza $boje $boje[0] = "red" ; $boje[1] = "green" ; $boje[2] = "white" ; $boje[3] = "yellow" ; //u varijablu $trenutna_boja spremam vrijednost polja $boje[nasumino generirani index polja] $trenutna_boja = $boje[rand(0,3)]; ?>
35
36
37
38
Nakon toga sam na ekranu ispisao poruku da slijedi tekst sa ispravljenim imenom. Zatim sam pomou str_replace( ) funkcije pretraio upisani tekst i pronaao traeni string i zamijenio ga sa odgovarajuim stringom. Kao zadnja naredba unutar PHP tagova napisao sam ispis tonog ( promijenjenog ) stringa. Kod cijele stranice se nalazi ispod teksta:
<?php //u varijablu $title je spremljen naziv trenutane stranice... u ovom sluaju 'Primjer 3' $title='Primjer 3 - str_replace() funkcija'; include('gornji_dio.php'); ?> <?php echo '<h3>'.$title.'</h3>'; $pocetni_tekst = "Ja sam Pero Galovi, ali inae Pero nije moje pravo ime. Mislim da je Pero najbolje ime od svih imena."; echo '<p>Ovo je tekst sa krivim imenom spremljen u varijablu $pocetni_tekst:</p>'; echo '<pre>'.$pocetni_tekst.'</pre>'; echo '<p>Koristi se funkcija str_replace("Pero","Jurica",$pocetni_tekst);'; echo '<p>Ovdje je tekst sa ispravljenim imenom:</p>'; $zavrsni_tekst = str_replace("Pero","Jurica",$pocetni_tekst); echo '<pre>'.$zavrsni_tekst.'</pre>'; ?> <?php include('donji_dio.php'); ?>
39
Nakon generiranja broja sam unutar zagrada if( ) funkcije taj generirani broj, odnosno varijablu u koju je spremljen podijelio sa 2 i ispitivao da li je ostatak dijeljenja jednak nuli. Ako jest tada je taj broj paran, u suprotnom je neparan. U vitiaste zagrade if( ) funkcije sam ispisao pomou echo( ) funkcije da je broj paran, a unutar zagrada else( ) dijela sam ispisao da je broj neparan. Cijeli kod primjera se moe vidjeti ispod teksta: <?php //u varijablu $title je spremljen naziv trenutane stranice... u ovom sluaju 'Primjer 4' $title='Primjer 4 - if( ) funkcija'; include('gornji_dio.php'); ?> <?php echo '<h3>'.$title.'</h3>'; echo '<p>Da li je sluajno generirani broj paran ili neparan:</p>'; //sluajno generiranje broja od 0 do 100 i spremanje u varijablu $broj $broj = rand(0,1000); //ispitivanje generiranog broja i ispisivanje rezultata if($broj%2 == 0) { echo 'Sluajno generirani broj '. $broj .' je paran.'; } else { echo 'Sluajno generirani broj '. $broj .' je neparan.'; } ?> <?php include('donji_dio.php'); ?>
40
41
U for( ) petlji sam svaki put ispisivao novi <span> tag koji ima drugaiju pozadinsku boju koja je blia crvenoj. To sam postigao tako to sam crvenu komponentu ( udio ) poveavao za 17 dok udio crvene nije iznosio 255, odnosno FF u heksadecimalnom zapisu. U poetku je udio crvene boje bio 00. Analogno tome, udio zelene i plave boje takoer je morao biti 00 kako bi poetna boja palete bila crna boja ija je heksadecimalna vrijednost 00 00 00 pri emu prve dvije znamenke prestavljaju udio crvene, druge dvije udio zelene i posljednje dvije udio plave boje. Za prikazivanje palete sam koristio <span> tag na kojem sam primjenjivao pozadinsku boju. No, prije cijelog ovog postupka je bilo potrebno pretvoriti dekadsku vrijednost u heksadecimalnu i za to sam koristio hexdec( ) funkciju koja za ulazni parametar prima cijeli broj ( integer ), a vraa heksadecimalni string. Unutar zagrada hexdec( ) funkcije sam upisao varijablu $crvena jer sam unutar for( ) petlje mijenjao njezinu vrijednost, odnosno udio crvene boje ( komponente ) i rezultat sam spremio u varijablu $hex. Pretvorbu dekadske vrijednosti u heksadecimalnu prikazuje kod napisan ispod teksta:
<?php $hex = dechex($crvena); ?> Nakon tog koraka sam ispisao paletu boja koristei neke elemente CSS programiranja. Koristei naredbu background-color: sam odredio boje unutar <span> taga, odnosno pomou for( ) petlje i ove naredbe sam definirao izgled ( boju ) cjelokupne palete. Paletu sam napravio tako to sam svakim korakom for( ) petlje ispisao promijenjenu vrijednost $hex varijable koja je svakim korakom bila sve blia crvenoj boji. Nakon toga, na kraju ove naredbe sam odredio duljinu svakog dijela palete tako to sam dodao tri razmaka pomou naredbe.
42
Kod cijele stranice prikazan je ispod teksta: <?php // u varijablu title je spremljen naziv trenutane stranice... u ovom sluaju 'Primjer 6' $title='Primjer 6 - for( ) i promjena boja'; include('gornji_dio.php'); ?> <?php echo '<h3>'.$title.'</h3>'; echo '<p>Unutar for( ) petlje svakim korakom se vrijednost varijable $crvena poveava za decimalnu vrijednost 17 kako bi se boja palete sve vie pribliavala crnoj boji.</p>'; echo '<p>Paleta boja od crne do crvene izgleda ovako:</p>'; for ($crvena=0; $crvena<=255; $crvena=$crvena+17) { // pretvorba dekadske vrijednosti varijable $crvena u heksadecimalnu pomou dechex( ) funkcije $hex = dechex($crvena); echo '<span style="backgroundcolor:#'.$hex.'0000;"> span>'; } ?> <?php include('donji_dio.php'); ?>
43
<?php < img src = "naziv_slike.jpg" alt="Naziv slike na stranici" / > ?>
Nakon dodavanja slike na stranicu, napisao sam par reenica o sebi koristei echo( ) funkciju. Na kraju pisanja koda za ovu glavnu stranicu, dodao sam link na e-mail na kojem me se moe kontaktirati. To sam uinio koristei naredbu za postavljanje linka ( <a href = " naziv_stranice.php "> </a> ; ) uz dodatak jednog dijela. Sintaksa davanja linka na mail je slijedea:
<?php <a href = "mailto:ime@mail.com " > ime@mail.com </a> ?>
44
45
6. SAETAK
PHP, koliko god da ga smatraju manje naprednim se i dalje koristi i konkurira nekim naprednijim programskim jezicima kao na primjer Java, C++, pa ak i ASP.NET. U dananjem svijetu kada je Internet jedna od najbrih rastuih tehnologija, PHP svojom raznovrsnou ponude omoguuje svima, koji za to imaju interesa, laganu prilagodbu na njihove alate i samim time poveanje zainteresiranosti za ovaj vid programiranja. Jednostavnost koritenja, besplatna dostupnost i gotovo neograniene mogunosti privlae sve vei broj korisnika koji imaju elju nauiti ovakvu vrstu programiranja. Ova tema mi se inila poprilino lagana i zbog tog olakog shvaanja problematike koju, u samim poetcima njegove izrade jo nisam razumio, sam projekt inio mi se konzekventno puno lakim. No nailazivi na neke od problema koje nisam mogao razumjeti, trudio sam se sve vie kako bih dokuio emu oni slue i kako se neke od naredbi i u koju svrhu trebaju koristiti. U rjeavanju takvih, i takvim slinih problema uvelike mi je pomogao HTTP Web server Apache ( verzija 2.2.17 ) i na njemu instaliran PHP ( verzija 5.3.5 ). Za instalaciju Apache i PHP-a koristio sam WAMP instalacijski paket koji u sebi ve ima sadran PHP i MySQL i uvelike olakava njihovu konfiguraciju i instalaciju. Pomou PHP jezika moemo stvoriti nevjerojatne Web stranice pune raznih izbornika, velikog broja boja, velikih i malih slika i raznih drugih aplikacija i datoteka. Znanje koje nam ova tehnologija nudi nemogue je u potpunosti savladati koliko god se trudili. S druge strane, mislim da nam to moe biti samo dodatna motivacija i poticaj, jer sa novim iskustvom i praksom ne moemo nita izgubiti, a moemo dobiti tako puno.
46
7. LITERATURA
1. Valade Janet: PHP5 for Dummies, Wiley Publishing Inc, Indianapolis 2004 2. Converse et al: PHP5 and MySQL Bible, Wiles Publishing Inc, Indianapolis 2004 3. Mercer, Dave et al: Beginning PHP5, Wrox Press, 2004 4. http://www.w3schools.com/php/default.asp 5. http://www.tizag.com/phpT/ 6. http://www.php-mysql-tutorial.com/wikis/php-tutorial/php-variable-types.aspx 7. http://www.tutorialspoint.com/php/php_variable_types.htm 8. http://www.webmajstori.net/clanci/programiranje/tehnike-php-programiranja-radsa-stringovima-1dio-uvod/353/ 9. http://en.wikipedia.org/wiki/PHP 10. http://www.daniweb.com/web-development/php/threads/144256 11. http://www.htmlcodetutorial.com/help/sutra65617.html 12. http://www.webdeveloper.com/forum/showthread.php?t=214680 13. http://www.techiwarehouse.com/engine/d3bf2317/Building-Dynamic-Web-Pageswith-PHP
47