

Sadržaj
Prije nego što krenemo učiti PHP, moramo znati što je to.
PHP (kratica od „PHP: Hypertext Preprocessor”)
Kada utipkate URL u svoj web preglednik u pozadini se događa čitav proces prije nego što vam preglednik vrati nazad HTML rezultat (zajedno s izvršenim php-om).
1. Preglednik će poslati zahtjev serveru da pronađe našu željenu stranicu
2. Željena stranica će biti locirana na tvrdom disku (na serveru)
3. Pošto ima nastavak .php server će procesirati sav php kod na koji nailazi u toj datoteci
4. Tijekom procesiranja PHP će možda zatražiti da nešto izvuče van iz databaze, nešto ubaci u nju, osvježi neke podatke i sl.
5. Na kraju nakon što je sav php kod izvršen, nazad nam se šalje HTML rezultat (naravno nastavak je .php, ali mi taj procesirani php ne vidimo u Page Source-u stranice) kojeg vidimo u našem web pregledniku

Mnogo je razloga zašto koristiti PHP umjesto drugih web-tehnologija.
Za pokretanje PHP-a u svom pregledniku kako bi ga mogli učiti na svoje računalo trebat ćete instalirati:
Radit ćemo lokalno što znači da će te web server instalirati na svoje računalo, preglednik vjerojatno već imate te na vlastitom računalu i editirati .php datoteke.
Najlakša instalacija je već pomoću kreiranih paketa za određene operativne sustave – LAMP (Linux, Apache, MySQL, PHP), WAMP (Windows, Apache, MySQL, PHP) ili MAMP (Machintosh, Apache, MySQL, PHP). Najviše ljudi će koristiti Apache, MySQL i PHP neovisno o platformi – 75% web stranica nalazi se na Apache serverima, 20% na Microsoft serverima te 5% na ostalima.
Skinite WAMP sa službene stranice, te pokrenite instalaciju.
Na samom početku upozorit će vas da ne nadograđujete na novu verziju ako prije niste maknuli staru. Slobodno odaberite Yes.
Klik na Next.
Označiti I aceept the agreement. Klik na Next.
Odaberite lokaciju gdje će se WAMP instalirati, možete ostaviti kako je – c:\wamp. Klik na Next.
Po volji označite Create a Desktop icon te klik na Next.
Klik na Install.
Ako imate instaliran Firefox prepoznat će ga te će vas pitati želite li da ga podesi kao svoj defaultni preglednik – odaberite Yes.
Postavke e-maila i SMTP-a ostavite kako jesu. Klik na Next.
Ostavite označeno Launch WampServer 2 now i klik na Finish.
Instalacija je završena te sada na svojem računalu imate instaliran Apache web server, MySQL databazu te PHP – potrebno je još podesiti nekoliko postavki te tada možete krenuti učiti sam PHP.
USPUTNA NAPOMENA: Poslije instalacije ako kaže da Windows Firewall blokira WAMP – slobodno kliknite na Unblock.
U donjem desnom kutu nalazi se izbornik WAMP paketa. Start/Stop/Restart All Services se odnosi na Apache, MySQL te PHP te će ih pokrenuti, zaustaviti ili pak restartati (restart će biti potreban kada se mijenjaju konfiguracijske datoteke).
Kliknite na Start All Services te će se pokrenuti svi servisi.
To što vam je server Offline – ne brinite oko toga i nemojte ga stavljati Online. Postavke PHPa možete mijenjati putem konfiguracijske datoteke (C:\wamp\bin\php\php5.2.6\php.ini) ili jednostavnije i brže putem PHP – PHP Settings gdje ih možete (neke osnovne, naravno ne sve) jednostavno uključiti ili isključiti.
Među njima nalazi se i display_errors koja će dok pišete/učite PHP pokazivati greške te ćete iste lakše pronaći i eliminirati te također možemo uključiti/isključiti koje greške će pokazivati, a koje ne.
Zaputite se u konfiguracijsku datoteku (C:\wamp\bin\php\php5.2.6\php.ini) te je otvorite Notepadom ili klikom na WAMP – PHP – php.ini. Odscrollajte do naslova „Error handling and logging“.
Želimo da se prikazuju sve greške te ćemo to učiniti tako da komentiramo liniju error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT staveći ispred znak ;. Zatim kopirajte liniju (bez početnog znaka ;) te zalijepite red ispod. Nakon toga u novom redu (koji nije komentiran) maknite sve iza E_ALL tako da vam ostane samo error_reporting = E_ALL.
Spremite datoteku te zatvorite. Zatim u WAMP menuu odaberite Restart all Services kako bi promjena bila važeća.
Slijedeća i posljednja stvar koju trebamo napraviti jest postaviti root lozinku za MySQL koja po defaultu ne postoji. Zaputite se WAMP – MySQL – MySQL Console.
Tražit će vas password koji ne postoji te zato samo pritisnite Enter.
Slijedeće utipkajte use mysql te pritisnite Enter – trebalo bi odgovoriti sa Database changed.
Slijedeće UPDATE user – pritisnite Enter. Zatim SET Password=PASSWORD(‘vaš_password’) te Enter (naravno vaš_password zamijenite sa svojime – bez šđžćč znakova).
U novom redu WHERE user=’root’; čime ćemo staru lozinku zamijeniti s novom, pritisnite Enter – ispisat će vam Query OK.
Posljednje što morate utipkati prije nego krenemo dalje jest FLUSH PRIVILEGES; – pritisnite Enter.
Na kraju quit i opet Enter. Ako ćete ponovno htjeti ući u konzolu, ako pritisnite Enter i ne upišete novu lozinku – izbacit će vam grešku i zatvoriti prozor jer smo postavili novu lozinku. Sada smo instalirali WAMP paket sa Apache, MySQL i PHP-om te konfigurirali potrebne postavke. Možemo krenuti sa samim PHP-om.
Prije svega provjerite radi li WAMP server kako valja. To možete provjeriti tako što utipkate localhost u svoj preglednik (ja ću koristiti Firefox). Ako se prikaže bijela stranica, znači da WAMP server nije pokrenut tj. servisi nisu pokrenuti. Ako je sve ispravno trebali biste dobiti ovu stranicu
Vaši budući folderi i datoteke koje ćete kreirati nalaze sa na disku na slijedećoj lokaciji C:\wamp\www. Na toj lokaciji kreirajte zaseban folder (npr. php) koji će se na localhost-u prikazivati kao Your Projects. U njega ćete stavljati daljnje datoteke, podfoldere i sl.
Sada kada ste kreirali svoj radni prostor možemo početi raditi na vlastito kreiranim datotekama. Otvorite svoj tekst editor (ja ću koristiti Adobe Dreamweaver CS3) te spremite novu sada praznu datoteku pod imenom phpinfo.php u prethodno kreirani folder php na lokaciji C:\wamp\www tj. putanja datoteke će biti C:\wamp\www\php\phpinfo.php.
Napišite slijedeće
<?php phpinfo(); ?>
te spremite dokument (u daljnjem tekstu spremanje prije otvaranja u pregledniku će se podrazumijevati) pod imenom phpinfo.php u svoj radni folder (C:\wamp\www\php). Zatim phpinfo.php datoteku pokrenite u svom pregledniku (http://localhost/php/phpinfo.php). Trebali biste dobiti slijedeće
Prikazati će vam sve informacije o PHP-u (u našem slučaju verzija 5.2.6). Ta mala funkcija će vam pokazati sve informacije koje vas zanimaju, je li PHP uopće instaliran na Vaš sustav te koja je trenutna konfiguracija. Tu funkciju nikada ne smijete koristiti na javnom web-serveru (podaci koje će prikazati mogu uvelike narušiti sigurnost Vaših web stranica) nego samo onda kada lokalno pišete php kod, tada će vam biti vrlo korisna. Stvar koju želimo provjerti jest display_errors pa odscrollajte do sekcije PHP Core te pronađite liniju gdje piše display_errors – mora biti postavljena na ON (kao što smo ranije postavili u konfiguracijskoj datoteci). Ta opcija će nam omogućiti da vidimo greške koje dolaze nazad od strane servera ali samo lokalno, dok ćemo kod javnih servera htjeti to isključiti kako ne bi bile dostupne javnosti.
Pomoću funkcije dobili smo konfiguraciju PHP-a, ali od čega se zapravo sastoji ta funkcija? Sastoji se od 3 dijela. 1. i 3. dio su tagovi koji označavaju gdje počinju, a gdje završavaju php naredbe. Rekli smo da se php naredbe u .php datoteci mogu ubaciti između HTML-a i upravo na taj način, pomoću ovih dvaju tagova server zna gdje počinje, a gdje završavaju php naredbe. Što znači da prestane te nastavi sa klasičnim HTML kodom. Primjer kako to izgleda u praksi:
<head> <title>Umetanje PHP-a između HTML-a</title> </head> <body> Ovo je tekst napisan u HTML-u. <br /> Bla bla bla. Red ispod počinje php, te na kraju reda završava php. <?php phpinfo(); ?> Ovdje je opet HTML tekst tj. <strong>HTML</strong> naredbe. </body> </html>
Umjesto tagova postoji i skraćeni oblici
<? ?> <?= ?>
Većinu puta će i oni raditi međutim tretiraju se kao loša praksa tj. naučite se koristiti standardne tagove . Postoje još i ASP stil tagova koji izgledaju ovako
<% %> <%= %>
To se smatra vrlo lošom formom jer što je najbolje – niti ne radi uvijek, također treba u konfiguracijskoj datoteci dopustiti korištenje ovakve forme što znači da će raditi na jednom serveru dok na drugom – neće.
Razmak između ta 3 dijela označuje gdje jedna naredba završava, a druga počinje te nije ovisan o veličini razmaka (a.k.a. “bijeli prostor”) tj. možemo napisati
<?php phpinfo(); ?>
što je sasvim isto kao i
<?php phpinfo(); ?>
što nam omogućuje veću preglednost koda bez imalo razlike u izvršavanju tih naredbi.
Tekst – echo, print | tekst.php
Otvorite novu .php datoteku koja će izgledati ovako (obratite pozornost da postavite ime stranice između <title> tagova)
<html> <head> <title>Tekst</title> </head> <body> </body> </html>
Između php tagova upišite slijedeće
echo "Tekst u PHP-u";
tj. izgledat će ovako
<?php echo "Tekst u PHP-u"; ?>
To je osnovna struktura php tvrdnje – imamo što ćemo raditi, što je u našem slučaju echo koji ispisuje zadano (slična/ista naredba je i print), objekt te naredbe/funkcije što je “Tekst u PHP-u” te ; na kraju koji označavaju da je kraj jedne instrukcije (ako ih ne stavite, php će izbaciti grešku). Međutim ako imate jednu tvrdnju u jednom redu kao što je ovo
<?php echo "Tekst u PHP-u" ?>
php će znati da je kraj instrukcije i sve će proći kako treba, međutim steknite naviku stavljanja znaka ; (točka-zarez) na kraju svake tvrdnje.
Spremite datoteku pod nazivom tekst.php u svoj radni folder (C:\wamp\www\php) te je otvorite u svom pregledniku. Dobit ćete slijedeće
Ako zavirite u Page Source stranice (desni klik – View Page Source) vidjet ćete HTML kod, ali ne i PHP koji je „nestao“ tj. web server ga je izvršio i prikazao nam ga u obliku teksta tj. „Tekst u PHP-u“ u našem pregledniku.
Vratite se u svoju .php datoteku te na kraju postojeće linije dodajte HTML <br /> tag koji će nam “odvojiti” naredbe koje pišemo. Ispod postojećeg php koda dodajte slijedeće
<?php print "Tekst u PHP-u"; ?> <br /> <?php echo "Tekst" . " u PHP-u"; ?> <br />
Posljednja linija s točkom u sredini spaja u našem slučaju dvije riječi. Spremite I Otvorite U Pregledniku (u daljnjem tekstu ću koristiti kraticu SIOUP).
Vidjet ćete da print funkcija radi isto što i echo iako neki kažu da je sporija, ali svakako echo je najpopularnija.
Na kraju dodajte još jednu liniju koda te SIOUP.
<?php echo 5+8; ?> <br />
Vidjet ćete da je php izvršio jednostavnu računsku operaciju tj. zbrojio ta dva broja (ako zavirite u Page Source vidjet ćete samo 13, ne i 5+8).
Komentari, HTML kod unutar navodnika
Kako bi bili/postali dobar programer ne smijete zaboraviti jedan bitan dio svakog programskog jezika a to su – komentari. Oni nas upućuju što želimo napraviti, kojim redoslijedom te o čemu se zapravo radi. Također, ako netko drugi pregledava Vaš kod – da odmah zna što se htjeli s određenim dijelom koda. Postoji više načina kako to možemo napraviti u PHP-u:
Single-line comments – komentar u jednome redu
// ovo je komentar u jednome redu # ili ovako
Multi-line comments – komentar u više redova
/* Ovo je komentar
koji ima više
redova */Isprva ćete možda zaboravljati postaviti komentare, no međutim kada nakon par mjeseci krenete pregledavati svoj kod – nećete se snaći. Zato steknite tu naviku da komentirate svoj kod. NAPOMENA: pazite da multi-line komentari imaju samo jedan početak i samo jedan kraj, u tome će vam pomoći tekst editori koji kod obojaju u razne boje.
Također unutar php tagova možemo ubaciti HTML kod koji će se tako i ponašati. Uzmimo primjer koji smo imali
<?php echo "Tekst u PHP-u"; ?> <br />
to možemo napisati i kao
<?php echo "Tekst u PHP-u<br />"; ?>
te će se sav tekst unutar navodnika ponašati kao HTML kod.
Varijable (eng. variables) | varijable.php
U pisanju PHP-a postoji više tipova ili struktura koje možemo koristiti. Prve koje ćemo upoznati su – varijable. Ako ste već prije nešto programirali vrlo vjerojatno ste već upoznati s ovim terminom, ako niste – varijabla je simbolički prikaz neke vrijednosti. Bit će u praksi mnogo jasnije no ona se s vremenom može mijenjati tj. varirati.
U PHP-u varijable:
Primjeri pisanja varijabla:
Otvorite prošlu datoteku tekst.php, izbrišite sve između tagova, izmijenite Title u „Varijable“ te spremite (Save As…) kao varijable.php.
Napišite (uvijek ćete pisati između
tagova) slijedeće<?php $var1 = 5; ?>
$var1 jest ime varijable, a 5 njena vrijednost jer smo rekli da je varijabla simbolički prikaz neke vrijednosti.
Dodajte (uvijek ćete dodavati između php tagova u zadnji red) slijedeće
echo $var1;
Tako da dobijete slijedeće
<?php $var1 = 5; echo $var1; ?>
Što znači da će nam echo naredba ispisati vrijednost varijable $var1 – broj 5 (govorim broj jer varijable mogu biti puno više od samo brojeva). SIUOP.
Dodajte slijedeće:
$var2 = "Ovo je tekst"; echo $var2;
SIOUP i vidjet ćemo da je naredba echo ispisala vrijednost varijable $var2 koja je u ovom slučaju “Ovo je tekst”, ne i njezino ime.
Kako smo rekli varijable mogu varirati tj. njihove vrijednosti možemo izmijeniti pa dodajte ove dvije linije koda te SIOUP.
echo "<br />"; $var1 = 7; echo $var1;
Očekivano varijabla se promijenila u 7 tj. njena vrijednost se promijenila iz 5 u 7 iz čega možemo zaključiti da varijable možemo mijenjati što nam omogućuje puno veću fleksibilnost pisanja koda, samim time i veću dinamičnost web stranica.
Skupovi znakova (eng. strings) | strings.php
Nakon što smo naučili što su varijable, krenimo na slijedeći tip/strukturu koju ćemo vrlo često koristiti, a to su – skupovi znakova (eng. strings). Zapravo, već smo ih koristili međutim nismo ih bili svjesni. U kodu
$var2 = "Ovo je tekst"; echo $var2;
slijedeći dio “Ovo je tekst” jest – skup znakova (brojevi, slova i sl.).
Otvorite prošlu datoteku varijable.php, izbrišite sve između php tagova, izmijenite Title u „Skupovi znakova“ te spremite (Save As…) kao skupznakova.php.
Kao što smo i prije imali vrlo jednostavnu verziju skupa znakova u obliku
echo "Ovo je tekst";
naučili smo da unutar tog skupa možemo staviti i običan HTML kod
echo "Ovo je tekst <br />";
Skup također možemo definirati i pomoću jednostrukih navodnika
echo 'Ovo je tekst';
te naposlijetku smo vidjeli da skupovi mogu biti dodijeljeni nekoj varijabli
$moja_varijabla = "Ovo je tekst"; echo $moja_varijabla;
Možemo imati i slijedeću verziju gdje spajamo postojeću varijablu sa nekim novim skupom
echo $moja_varijabla . " koji je vrlo jednostavan";
Stavimo dodatne <br /> tagove kako bi nam rezultat bio lijepo složen te bi kod trebao izgledati ovako
<?php echo "Ovo je tekst"; echo "<br />"; echo "Ovo je tekst <br />"; echo 'Ovo je tekst <br />'; $moja_varijabla = "Ovo je tekst"; echo $moja_varijabla; echo "<br />"; echo $moja_varijabla . " koji je vrlo jednostavan"; ?>
a rezultat očekivano ovako
To su primjeri koje smo već prije upoznali te isprobali, sada ćemo krenuti na neke nove i malo složenije. Dodajte slijedeće iza postojećih php tagova
<br /> <br /> <?php ?>
Između php tagova napišite slijedeće
echo "$moja_varijabla koji je vrlo jednostavan";
Uzeli smo već postojeću varijablu te je ubacili u novi skup te stvar funkcionira – koristi već postojeću definiranu varijablu te je “spaja” s ostatkom skupa. Ovakav načina koda će funkcionirati međutim bolja navika je kod pisati na slijedeći način (svakako između pojednih naredbi postavite <br /> tag – echo “<br />“;)
echo "{$moja_varijabla} koji je vrlo jednostavan (sa zagradama).";
tj. varijablu unutar skupa pisati u {zakrivljenim zagradama} tako da PHP točno zna što se odnosi na ime same varijable (iako zagrade se naravno neće prikazivati) jer ako tih zagrada ne bi bilo, u slijedećoj situaciji PHP bi ime varijable te sam sadržaj skupa postavio kao ime varijable (glasilo bi moja_varijablakoji) te kod ne bi bio “dobar” (varijabla bi bila “prazna” tj. nedefinirana)
echo "$moja_varijablakoji je vrlo jednostavan";
Međutim ako ime varijable stavimo u zakrivljene zagrade
echo "{$moja_varijabla}koji je vrlo jednostavan";
stvar će savršeno raditi te će definiranu varijablu i ostatak skupa spojiti bez problema i to bez razmaka među njima. Ako umjesto dvostrukih stavite jednostruke navodnike stvar neće raditi (neće napraviti “zamjenu” varijable njenom definicijom nego će jednostavno prikazati ime same varijable kao tekst) kao u slijedećem primjeru
echo '$moja_varijabla koji je vrlo jednostavan';
stoga imajte naviku stavljati dvostruke navodnike.
Funkcije skupa (eng. string functions) | string_functions.php
Sada kada smo naučili što su to skupovi, kako ih spojiti međusobno, kako ih prikazati u prgledniku i sl. tu je puno toga što još možemo raditi s njima. Za to će nam trebati funkcije skupa (eng. string functions).
Otvorite prošlu datoteku skupznakova.php, izbrišite sve između <body> tagova, izmijenite Title u „Funkcije skupa“ te spremite (Save As…) kao funkcijeskupa.php.
Napišite slijedeće:
<?php $prvi_skup = "Ovo je tekst"; $drugi_skup = " koji je vrlo jednostavan."; ?>
Definirali smo prvi_skup koji je jednak “Ovo je tekst” te drugi_skup koji je jednak ” koji je vrlo jednostavan.” Prije smo naučili kako ih međusobno spojiti međutim postoji još jedan način spajanja tj. “ulančavanja”. Definirat ćemo treci_skup koji će biti jednak prvome
<?php $treci_skup = $prvi_skup; ?>
te nakon toga mu još pridodati drugi_skup (znak .= znači da će spojiti ta dva skupa te će naposlijetku rezultat biti jednak “spoju” ta dva skupa). Na kraju ćemo prikazati naš treci_skup. SIOUP.
$treci_skup .= $drugi_skup; echo $treci_skup;
Ako želimo prikzati prvi i drugi skup oni će i dalje biti jednaki kao što su definirani na početku (“Ovo je tekst” i ” koji je vrlo jednostavan”), međutim treći skup će sadržavati novu vrijednost koja će biti kombinacija dviju. Nismo ništa radili/mijnjeli prvi ili drugi skup nego smo jednostavno ih upotrijebili kako bi kreirali naš treći skup. Funkcija funkcionira kao i naredba echo koju smo prije upotrebljavali, samo sada nećemo prikazivati (echo) naš skup nego ćemo na njega primijeniti drugu naredbu (konkretno u našem primjeru .=). Također postoji mnogo funkcija koje možemo koristiti (cijelu listu potražite na php.net), neke od njih su koje ćemo pokazati i na primjeru
<br /> Mala slova: <?php echo strtolower($treci_skup); ?><br /> Velika slova: <?php echo strtoupper($treci_skup); ?><br /> Prvi znak ce biti veliko slovo: <?php echo ucfirst($treci_skup); ?><br /> Veliko slovo svake rijeci: <?php echo ucwords($treci_skup); ?><br />
strtolower – cijeli skup pretvara u mala slova
strtoupper – cijeli skup pretvara u velika slova
ucfirst – samo prvi znak će biti veliko slovo (u našem slučaju samo početak rečenice)
ucwords – veliko slovo će biti na početku svake od riječi u našem skupu
Vidjeli smo da ispred naših novih funkcija stoji još jedna funkcija echo – to je sasvim u redu jer naravno funkcije mogu “komunicirati” jedna s drugom.
Pogledat ćemo još par ostalih funkcija
<br /> Duljina: <?php echo strlen($treci_skup); ?><br /> Trim: <?php echo $cetrvti_skup = $prvi_skup . trim($drugi_skup); ?><br /> Traži: <?php echo strstr($treci_skup, "tekst"); ?><br /> Zamijeni: <?php echo str_replace("vrlo", "jako", $treci_skup); ?><br />
strlen – duljina skupa (u našem slučaju broj znakova)
trim – miče/briše sav prazan prostor (razmaci, prazni redovi i sl.) na kraju ili na početku skupa/rečenice
NAPOMENA: kao što vidite trim funkciju smo stavili ispred drugog skupa koji će se spojiti sa prvime te tako kreirati novi četvrti skup koji ćemo pomoću naredbe echo prikazati – prije smo to radili u više redova, no vidite da se funkcije mogu međusobno kombinirati te tako i ovo napisati u samo jednome redu
strstr – tražit će određenu frazu (u našem slučaju riječ “tekst”) te će ispisati skup od te riječi pa nadalje
str_replace – zamijenit će određenu frazu (u našem slučaju riječ “vrlo”) sa drugom frazom (u našem slučaju riječju “jako”)
To su samo neke od funkcija kojima možemo manipulirati skupovima međutim ima ih jako mnogo te nema potrebe ovdje stavljati tu ogromnu listu već za sve funkcije se uputite na php.net.
U dviju prethodnih naslova naučili smo što su to varijable i skupovi, postoji još jedan tip/struktura a to su – brojevi.
Otvorite prošlu datoteku funkcijeskupa.php, izbrišite sve između <body> tagova, izmijenite Title u „Brojevi“ te spremite (Save As…) kao brojevi.php.
Napišite slijedeće:
<?php $var_1 = 8; $var_2 = 10; ?>
Znamo što su brojevi te vidimo da su brojevi 8 i 10 pridruženi dvjema varijablama. Ranije smo već upoznali kako napraviti neke osnovne operacije pomoću echo funkcije. Pomoću varijabla možemo raditi mnogo više od pukog zbrajanja, oduzimanja i sl. te nam daje naravno više fleksibilnosti. Ovdje imamo primjer jednostavne matematike (pišite iza prvog php bloka tj. nakon prvog znaka ?>)
Jednostavna matematika: <?php echo ((3 + 4 + $var_1) * $var_2) / 3 - 5; ?><br/>
Kao što smo i očekivali rezultat je 45 zato što ćemo prikazati (echo) rezultat koji smo dobili tako što smo zbrojili 3+4+$var_1 koja je 8, pomnožili sa $var_2 koja je 10 te podijelili sa 2-5. Ranije u funkcijama skupa smo radili da smo izmijenili/osvježili vrijednost neke varijable unutar skupa. Slično možemo raditi i ovdje. Napišite slijedeće
<br /> +=: <?php $var_2 += 4; echo $var_2; ?><br />
Varijabli 2 ($var_2) pridodali smo 4 te istovremeno varijablu “izjednačili” sa rezultatom tj. varijabla će promijeniti vrijednost u 14 jer je 10 (prethodna vrijednost te varijable) + 4 jednako 14 što je i ujedno nova vrijednost varijable. Tu su još neke operacije s kojima možemo jednostavno rukovati
-=: <?php $var_2 -= 4; echo $var_2; ?><br /> *=: <?php $var_2 *= 5; echo $var_2; ?><br /> /=: <?php $var_2 /= 2; echo $var_2; ?><br />
Radit će što smo i očekivali tj. princip je isti samo je druga računska operacija. NAPOMENA: svaki put (u svakom redku) se vrijednost varijable 2 mijenja zato i u drugoj liniji gdje je oduzimanje rezultat nije 6 (10-4) već 10 zato što je u redku iznad njega osvježena ista varijabla brojem 14 (početna 10 + 4) te je rezultat 14-4=10.
Postoji još jedna varijanta ovoga a to je uvećanje i umanjenje za vrijednost 1.
<br /> Uvećanje: <?php $var_2++; echo $var_2; ?><br /> Umanjenje: <?php $var_2--; echo $var_2; ?><br />
Ako ste već programirali npr. u C jeziku, znak ++ će vam biti poznat. U našem slučaju uzima varijablu 2 te je uvećava za 1 – njena vrijednost se povećala za 1. Logično ako je bila 5 – nakon uvećanja bit će 6. Umanjenje radi istu stvar samo oduzima za 1.
Sada smo naučili raditi osnovne stvari s “osnovnim” brojevima koji se zovu cijeli brojevi (eng. integer). Postoje još i decimalni brojevi (eng. floating points numbers).
Decimalni brojevi | brojevi_dec.php
U prethodnom naslovu naučili smo što su to “osnovni brojevi” te što su (cijeli) brojevi. Ovaj naslov ćemo posvetiti decimalnim brojevima (eng. floating points numbers / floats).
Otvorite prošlu datoteku brojevi.php, izbrišite sve između
tagova, izmijenite Title u „Decimalni brojevi“ te spremite (Save As…) kao brojevi_dec.php.Napišite slijedeće:
<?php $var_1 = 8.32; ?>
Vjerojatno mislite kako je ovo samo još jedan običan (decimalni) broj, međutim tretira se malo drugačije u PHP-u te možemo pitati PHP je li taj broj zaista decimalan ili nije (o tome nešto kasnije). Za sada samo morate znati kako postoje dva tipa brojeva – obični cijeli te decimalni.
Možemo također i sami ispisati decimalan broj na način
<?php echo 4/3; ?>
te će očekivano izbaciti rezultat 1.333333333…
Objasnimo nekoliko funkcija koje možemo koristiti ako radimo s decimalnim brojevima.
<br /> Decimalni broj: <?php echo $myFloat = 8.32; ?><br /> Zaokruživanje: <?php echo round($myFloat, 1); ?><br /> Zaokruživanje na slijedeci cijeli broj: <?php echo ceil($myFloat); ?><br /> Zaokruživanje na prethodni cijeli broj: <?php echo floor($myFloat); ?><br />
echo $myFloat – ispisuje zadani decimalni broj
Slijedećih par funkcija će nešto raditi s tim zadanim brojem.
round – ispisuje zadani decimalni broj međutim zaokruženog na jedno (($myFloat, 1)) decimalno mjesto
ceil – zaokružuje broj na slijedeći cijeli broj (npr. od 8.3 to je 9, od 9.6 to je 10 i sl.)
floor – zaokružuje broj na prethodni cijeli broj (npr. od 8.3 to je 8, od 9.6 to je 9 i sl.)
Kao što smo i prije spominjali tu je još vrlo mnogo funkcija međutim nećemo ih sve spominjati jer se cijela lista nalazi na php.net. Spomenuti ćemo još nekoliko:
<br /> Apsolutna vrijednost: <?php echo abs(0-100); ?><br /> Eksponent: <?php echo pow(3, 5); ?><br /> Korijen: <?php echo sqrt(100); ?><br /> Ostatak: <?php echo fmod(30, 7); ?><br /> Random (nasumice): <?php echo rand(); ?><br /> Random (min, max): <?php echo rand(50,100); ?><br />
abs – izbacuje apsolutnu vrijednost nekog broja
pow – računa broj na n-tu, tj. prvi broj određuje bazu, a drugi eksponent
sqrt – računa korijen zadanog broja
fmod – nakon dijelenja nekog broja izbacuje njegov ostatak (ako je broj djeljiv, fmod će biti jednak 0)
rand() – izbacuje random (nasumični) broj, nema granica u kojem on može biti tj. može biti bilo koji
rand(50,100) – izbracuje radnom (nasumični) broj u granicama koje smo mu zadali (prvi broj je minimalni, a drugi maximalni kojeg može izbaciti)
Glavna stvar koju morate razumijeti jest da možemo raditi s brojevima, skupovima, definirati vrijednost varijabla itd. što nam daje mnogo fleksibilnosti u radu na nekim novim (našim) aplikacijama. Sada smo obradili osnove osnova, sada ćemo krenuti na nešto malo (naglasak malo) kompliciranije tipove/koncepte PHP-a.
Sada kada smo naučili osnovne tipove kao što su brojevi, skupovi i sl. vrijeme je da krenemo na nešto malo složenije, a to su – arrays (hrv. prijevod – raspoređen niz podataka), u daljnjem tekstu samo kao – array(s). Oni će nam biti iznimno korisni u našem programiranju, no prvo ćemo reći ponešto o njima da shvatimo što su oni zapravo. Ako ne “skužite iz prve”, čitajte ponovno dok potpuno ne shvatite što su i kako funkcioniraju.
Otvorite prošlu datoteku brojevi_dec.php, izbrišite sve između <body> tagova, izmijenite Title u „Arrays“ te spremite (Save As…) kao arrays.php.
Array možemo definirati kao seriju varijabli kojima možemo dodijeljivati različite vrijednosti. Možda će vam biti jasnije ako zamislite array kao jednu mapu koja se može proširivati, u koju možete dodavati podatke u svaki od “džepova” (o.p. džep je tehnički zapravo gledano pozicija u arrayu, međutim mi ćemo ju zvati jednostavno džep). Koliko džepova može biti vas najmanje mora brinuti, ono bitno jest da u svaki od “džepova” možemo spremiti ono što i u varijablu (skup, broj ili pak drugi array). Tada možete koristiti bilo od kojih džepova prema njegovoj poziciji unutar arraya (kod varijabli se to radi tako da je pozivamo imenom). Kod arraya ćemo pozvati određeni array te poziciju “džepa” s kojim želimo raditi. Na primjeru će vam biti sve mnogo jasnije:
<?php $array_1 = array(4,5,13,18,25,49); ?>
Sada smo definirali naš prvi array – raspoređen (raspoređen iz razloga što svaki “džep” ima svoju poziciju) niz podataka. U svaki džep stavili smo po jedan od brojeva. Iz razloga što smo array definirali kao jednu varijablu (imena $array_1) možemo pozvati nazad podatak u jednom od džepova na način:
<?php echo $array_1[1]; ?>
Tražimo podatak koji se nalazi u arrayu (koji je dodijeljen varijabli $array_1) u džepu br. 1 (označava se uglatim zagradama) – tj. pozicija 1.
Iznenađeni? Kako je moglo izbaciti broj 5, a nalazi se na 2. poziciji? Trebalo je izbaciti broj 4? Dont Get It Naime, radi se o vrlo jednostavnoj stvari koju kod arraya treba uvijek imati na umu a to je da “brojanje” pozicija kreće od 0, a ne od 1 što znači da će nama 1. pozicija imati vrijednost 0, 2. pozicija vrijednost 1, 3. pozicija vrijednost 2 i tako dalje, stoga – pazite na to. Stoga ako promijenimo 1 u 0, dat će nam prvotno očekivani broj – 4.
<?php echo $array_1[0]; ?>
Kao što smo rekli u array možemo stavljati različite vrijednosti pa napravimo nešto malo drugačije
<br /> <?php $array_2 = array(8,"php","tekst","stranica", array("web", "auto", "kuca")); ?>
Kreirali smo array_2 koji u sebi sadrži skupove, brojeve te unutar sebe još jedan array (pri tome pazite na zagrade!).
Nakon toga ispisat ćemo što je u džepu vrijednosti 3 (znamo da je to 4. pozicija).
<?php echo $array_2[3]; ?>
Pokušajmo ispisati što se nalazi u džepu vrijednosti 4 (5. pozicija) – promijenite broj 3 u 4, nemojte pisati novi red koda.
<?php echo $array_2[4]; ?>
Ispisao je rezultat “Array”, ne daje nam nikakve vrijednosti unutar tog arraya već samo njega samoga. Ako želimo vidjeti što je u tom arrayu unutar početnog arrays stavit ćemo iza još jedne uglate zagrade koja će definirati poziciju unutar tog arraya.
<?php echo $array_2[4][2]; ?>
Očekivano rezultat je “kuca”. Objasnit ćemo nakratko kod koji smo napisali:
echo $array_2[4][2];
echo – ispisuje vrijednost
$array_2 - radi se o arrayu imena varijable $array_2
[4] – traži što se nalazi u džepu vrijednosti pozicije 4 (što je još jedan array)
[2] – traži poziciju unutar novog arraya vrijednosti pozicije 2 – što je “kuca”
Na isti način možemo i stavljati podatke unutar džepova, npr. umjesto “stranica” želimo imati “web”.
<?php $array_2[3] = "web"; ?> <?php echo $array_2[3]; ?>
Možemo stavljati podatke unutar džepova, prikazivati ih nazad te količinu skupa podataka strpati u samo jednu varijablu što je glavna prednost arraya. Druga stvar je da su “sortirani” uvijek na isti način, osim ako ga mi ne promijenimo što znači da možemo kreirati liste podataka po nekom određenom redoslijedu. To će nam biti iznimno korisno kod databaza gdje ćemo imati podatke koje ćemo željeti sortirati po nekom redoslijedu npr. popis učenika po prezimenu – abecednim redoslijedom.
Ponekad nas manje zanima redoslijed podataka unutar arraya, već više s kakvom vrstom podataka radimo. Zbog toga džepovima možemo dodijeliti imena/etikete (eng. labels).
<br /> <?php $array_3 = array("ime" => "Arnold", "prezime" => "Schwarzenegger"); ?> <?php echo $array_3["ime"]; ?>
Najprije smo zadali novi array koji se sastojao od dvije pozicije/džepa koje su dobile svoja imena, 1. poziciju smo nazvali “ime” kojoj smo dodijelili (znak =>) vrijednost “Arnold” (skupa se naziva “key value pair” – prvi dio je ključ tj. ime, a drugi dio je vrijednost tog ključa/imena) te 2. poziciju smo nazvali “prezime” te joj dodijelili vrijednost “Schwarzenegger”. Zatim smo ispisali (echo) što se nalazi u džepu imena “ime” (array["ime"]) te očekivano dobili rezultat “Arnold”.
Međutim ako probate sa brojem umjesto “ime” – neće ići zato što je to svojstvo arraya. Iznimka jest da džep koji je imao etiketu/ime – “ime” umjesto toga ima broj “1″ – tada će ići te tada možemo pozivati brojevima.
Možemo se malo i igrati te ispisati ime i prezime skupa na način da izmijenimo zadnju liniju u
<?php echo $array_3["ime"] . " " . $array_3["prezime"]; ?>
Podatke unutar arraya mijenjamo na isti način kao i prije s brojevima, samo ovdje nećemo stavljati brojeve već imena/etikete određenih džepova te ćemo opet ispisati ime i prezime.
<br /> <?php $array_3["ime"] = "Johnson"; ?> <?php echo $array_3["ime"] . " " . $array_3["prezime"]; ?>
Očekivano, ime se promijenilo iz “Arnold” u “Johnson”.
Još jedna stvar koja će vam pomoći u arrayima jest da vidite što se nalazi u pojedinom džepu pomoću slijedeće funkcije:
< br/> <?php print_r($array_2); ?>
print_r – print readable – dat će nam pregledan ispis svih džepova unutar arraya
Ako još stavimo i <pre> tagove da HTML poništi svo formatiranje dobit ćemo puno ljepši i pregledniji oblik što se sve nalazi u određenom arrayu
<pre><?php print_r($array_2); ?><pre>
U slijedećom naslovu bavit ćemo se funkcijama arraya kako bi mogli još više izvući iz njih te ih učiniti još korisnijim i fleksibilnijim.
Funkcije arraya | array_fun.php
U prethodnom naslovu smo obradili osnove arraya te kako funkciniraju, u ovom naslovu pozabavit ćemo se funkcijama koje možemo na njih primjenjivati te će tu doći do izražaja prava moć arraya.
Otvorite prošlu datoteku arrays.php, izbrišite sve između <body> tagova, izmijenite Title u „Funkcije arraya“ te spremite (Save As…) kao array_fun.php.
Kreirajmo jedan jednostavan array (uzet ćemo isti kao i u prethodnom naslovu)
<?php $array_1 = array(4,5,13,18,25,49); ?>
Vjerojatno ste već primijeniti da arrayi mogu biti mnogo fleksibilniji od varijabli iz nekoliko razloga – možemo izbrojati sve (popunjene) džepove
Izbroji: <?php echo count($array_1); ?><br />
count - broji koliko imamo popunjenih džepova u našem arrayu tj. koliko ih zapravo imamo definiranih
Prikazati maksimalnu/minimalnu vrijednost određenog arraya
Max: <?php echo max($array_1); ?><br /> Min: <?php echo min($array_1); ?><br />
max - traži najveću vrijednost unutar nekog arraya
min - traži najmanju vrijednost unutar nekog arraya
Još jedna stvar koja može biti moćna kod arraya (što kod varijabla ne možemo jednostavno izvesti) jest sortirati određenim redoslijedom.
<br /> Sortiranje: <?php sort($array_1); print_r($array_1); ?><br /> Obrnuto sortiranje: <?php rsort($array_1); print_r($array_1); ?><br />
sort – sortira klasičnim redoslijedom od 0 pa na dalje (od najmanjeg prema najvećem)
rsort – sortira od najvećeg prema najmanjem
NAPOMENA: primjetite da smo upotrebijeli i print_r funkciju koja nam omogućuje čitljiv ispis svih vrijednosti arraya
Postoji još nekoliko iznimno korisnih funkcija koje će nam dobro doći kada krajnjem korisniku ne želimo pomoću print_r funkcije ispisati neke vrijednosti već to napraviti na mnogo ljepši način
<br /> Implode: <?php echo $string_1 = implode(" * ", $array_1); ?><br />
implode – uzima u našem slučaju array_1, koristit će skup ” * ” da razdvoji te vrijednosti te stavi sve skupa kako bi kreirali novi skup $string_1
Obrunto od implode jest explode koji radi obrnuto:
Explode: <?php print_r(explode(" * ", $string_1)) ; ?><br />
explode - uzima u našem slučaju skup string_1, pronaći će sve dijelove koji odgovaraju ” * ” te ih koristiti kao dio gdje će razdvojiti pojedine vrijednosti
NAPOMENA: u drugom primjeru kod explode ne koristimo echo već print_r jer rezultat je array pa ga tako možemo jednostavno i čitljivo prikazati
Slijedeća funkcija jest in_array
<br /> In array: <?php echo in_array(3, $array_1); ?><br />
in_array – provjerava da li određena vrijednost (mi smo postavili da bude 3) postoji u određenom arrayu (mi smo postavili naš array_1) tj. izbacuje rezultat istina/laž (true/false) – ako je istina izbaciti će 1 što znači da broj 3 postoji u arrayu, ako ne neće ništa izbaciti što znači da vrijednost 3 ne postoji u našem arrayu
Međutim ako stavimo da provjeri postoji li vrijednost 49, izbacit će 1 što znači da postoji – samo promijenite broj 3 u 49 u već napisanom redku
In array: <?php echo in_array(49, $array_1); ?><br />
U slijedećem naslovu slijede “Booleans” tj. true/false tvrdnje, međutim posljednja funkcija će nam omogućiti pretraživanje kroz array te vidjeli postoji li određena vrijednost. Sada znamo kako možemo organizirati naše podatke, stavljati ih u array, manipulirati njima, sortirati ih što će nam biti korisno kada ćemo učiti i petlje. Potrudite se da imate dobru “podlogu” naročito iz ovog i prethodnog naslova a to su naravno – arrays.
Booleans (istina/laž) | booleans.php
U prošlom naslovu pomoću funkcije in_array dotakli smo se true/false tvrdnje što se nazivaju – booleans. U ovom naslovu pojasnit ćemo što su, kako funkcioniraju te gdje se mogu primjenjivati.
Otvorite prošlu datoteku arrays_fun.php, izbrišite sve između <body> tagova, izmijenite Title u „Booleans“ te spremite (Save As…) kao booleans.php.
Boolean je jednostavno rečeno – true/false (istina/laž). Postavimo varijablu koja će biti jednaka istini.
<?php $bool_1 = true; ?>
NAPOMENA: Primjetite da nema navodnika što znači da se ne radi o skupu (string) već o samom logičkom operatoru – true.
Postavimo i drugu varijablu koja će biti laž (boolean je pridružen varijabli).
<?php $bool_1 = true; $bool_2 = false; ?>
NAPOMENA: true/false logički operatori nisu osjetljivi na velika i mala slova stoga se mogu pisati po volji – True/False, trUe/fAlse, truE/falsE i sl. ali preporuka je iz navike da se sve piše malim slovima – jednostavnije i preglednije.
Tvrdnje istina/laž će nam biti kasnije korisne kada ćemo govoriti o logičkim operatorima tj. ako je nešto istina napravi ovo, ako je laž napravi nešto drugo.
Pogledajmo što nam preglednik prikazuje u našem slučaju tj. u naše dvije varijable.
<?php $bool_1 = true; $bool_2 = false; ?> Boolean "istina": <?php echo $bool_1; ?><br /> Boolean "laž":<?php echo $bool_2; ?><br />
Vidjet ćete da kod boolean istina izbacio vrijednost 1, no kod laž - 0 tj. ništa. Echo naredba nam to najbolje može pokazati – koncept istina/laž tj. true/false. Inače većinom nećemo vraćati pomoću naredbe echo nazad da vidimo je li istina ili ne već ćemo testirani je li istina, ako je napravi zadatak 1, ako je laž ne napravi ništa i sl. Primjer možemo testirati je li neka varijabla definirana ili ne pomoću true/false tvrdnje.
<br /> <?php $var_1 = 8; $var_2 = "tekst"; ?> Varijabla 1 je definirana: <?php echo isset($var_1); ?><br /> Varijabla 2 je definirana: <?php echo isset($var_2); ?><br /> Varijabla 3 je definirana: <?php echo isset($var_3); ?><br />
Prvo smo definirali dvije varijable te zatim pomoću funkcije isset ispitujemo jesu li one definirane ili ne, prvo tražimo je li definirana varijabla 1, pa varijabla 2 te naposljetku nedefinirana varijabla 3.
isset - funkcija koja nam pokazuje je li određena varijabla definirana ili ne tj. pokazuje nam boolean tvrdnju je li nešto istinito ili ne
Pokazuje nam vrijenost 1 kod varijabla 1 i 2 koje su definirane, no kod treće (nedefinirane) varijable pokazuje vrijednost 0 tj. ništa. To je vrlo jednostavan način da provjerimo je li neka od naših varijabla definirana ili ne te nam pokazuje kako funkcinira funkcije isset. Obrunuto od isset jest unset.
<?php unset($var_1); ?><br /> Varijabla 1 je definirana: <?php echo isset($var_1); ?><br /> Varijabla 2 je definirana: <?php echo isset($var_2); ?><br /> Varijabla 3 je definirana: <?php echo isset($var_3); ?><br />
unset - postavlja vrijednost varijable na 0/ništa/NULL/nedefinirano
Pomoću funkcije unset maknuli smo vrijednost varijable 1 tj. ona postaje nedefinirana (točnije podešena je na NULL) te pomoću funkcije isset provjeramo je su li varijable definirane te uočavamo da se kod varijable 1 vrijednost iz 1 (istina) promijenila u 0 (laž). NULL je ekvivalent – ništa/nedefinirano. Ponekad NULL i false možemo izjednačavati da se radi o istome tj. ako varijablu definiramo kao NULL ili je uopće ne definiramo u oba slučaja će izbaciti – false. U slijedećem primjeru ćemo pomoću funkcije empty testirani je li varijabla 1 prazna tj. NULL.
<br /> Varijabla 1 je prazna: <?php echo empty($var_1); ?><br />
empty - testira je li u našem slučaju varijabla prazna/nedefinirana tj. vrijednosti – NULL. Međutim morate biti oprezni s ovom funkcijom jer i neke druge stvari osim NULL/nedefinirane varijable tretira kao “false”, točnije ako vrijednost neke varijable postavimo broj 0 reći će nam da je prazna.
<?php $var_4 = 0; ?> <br /> Varijabla 4 je prazna: <?php echo empty($var_4); ?><br />
Ista stvar se događa i sa skupom 0, tj. da broj 0 postavimo u skup – točnije kao dio teksta.
<?php $var_4 = "0"; ?>
Također možemo i podesiti vrijednost neke varijable na NULL – ništa (NULL ćete najćešće vidjeti pisano sve veliko iako je case-insensitive tj. možete pisati velika/mala slova po volji)
<?php $var_4 = NULL; ?>
Ponovno ćemo testirati i vidjeti da je varijabla 4 – opet prazna tj. ima vrijednost NULL.
To su osnove boolean tvrdnje je li nešto istina ili ne te kako rade, to je vrlo jednostavan tip međutim kasnije ćemo ih malo dublje proučavati.
Bit će nastavljeno ukoliko će biti interesa…
izvor informacija – Lynda.com
svaka cast
Pozdrav i hvala ti za sve
Pozdrav tebi dobri mladicu!
Vrlo jasno, koncizno i bez ikakvih nepotrebnih mudrovanja. Moj Wamp server radi besprijekorno. Svaka cast.
Svaka čast majstore!
Upravo sam postavio server zahvaljujući tebi :D
Naravno da je potrebno da nastaviš sa radom a ako trebaš web prostora slobodno me kontaktiraj na mail – ja ga imam na tone slobodnog!
Svaka čast,
iz inata i potrebe sam naučio xhtml i css
a sada vidim da mi treba i php :-)
pa ajd da naučim i o tome nešto.
http://www.marinko.org
nije baš da je neka navala :) tako da…ako uhvatim volje ;)
Pozz..
Svaka cast na jasnim i korisnim uputama!
Jel ce se nastavit ovaj tutor?
OK
Zadivljena sam time što ste sve detaljno opisali!
Sada moji kodovi rade!
Nadam se da će biti nastavka!