Spletni PHP krožek

1. teden

Živjo!

Lepo pozdravljeni v spletnem PHP krožku. Sem Marko Štamcar in bom vaš gostitelj za naslednjih nekaj tednov.

Nasvet: Programiranja se najlažje naučiš z vajo oz. s samostojnim delom / reševanjem problemov. To pomeni, da je pri tem krožku bistveno, da se sam angažiraš in delaš čim več vaj.

Kot že verjetno veš, je PHP spletni programski jezik, s katerim na zaslon uporabnika izpisujemo (X)HTML kodo. Seveda se PHPja poslužimo takrat, ko želim uporabniku prikazati dinamične podatke, saj za izpis statičnih (X)HTML popolnoma zadostuje. Za ta krožek se predvideva, da znaš osnove HTMLja. Če jih še ne, si poglej članek tukaj.

Namestitev spletnega strežnika

Da bi PHP deloval, potrebujemo spletni strežnik, ki je sposoben njegovo izvorno kodo spremeniti v HTML izpis.

Na strežnik naložimo datoteko s PHP kodo, ki se nato, ko jo uporabnik pokliče prek spletnega brskalnika, s pomočjo PHP parserja spremeni v HTML.

V našem krožku bomo uporabljali XAMPP, da ne bo prihajalo do zapletov, bo to edini podprti spletni strežnik, zato ga obvezno namesti po spodnjih navodilih.

1. Klikni tukaj za prenos 30 MB velike namestitvene datoteke.
2. Po prenosu datoteko zaženi in parkrat klikni Next, nato pa Install.
3. Strežnik se sedaj namesti v mapo C:\Program Files\xampp.
4. Na koncu namestitve klikni Finish in ob vprašanju
slika
klikni No (Ne) ter ob naslednjem vprašanju še enkrat.
5. Sedaj se odpravi v mapo C:\Program Files\xampp\htdocs in iz nje pobriši vse datoteke in mape.
6. Spletni strežnik bomo sedaj ročno pognali. Pojdi v mapo C:\Program Files\xampp in dvoklikni datoteko apache_start.bat.

Če te požarni zid (firewall) kaj vpraša, klikni Yes (Da) / Allow (Dovoli) oz. kaj podobnega.

slika
Prikaže se takšno okno.
To okno minimiziraj, saj mora ostati odprto, da naš strežnik deluje. Ko končaš z delom, ga lahko zapreš.
7. Sedaj bomo preverili, če je tvoj spletni strežnik pravilno postavljen. Klikni na spodnjo povezavo in se prepričaj, da se ti je odprla takšna stran:
slika
Klikni ta link in se prepričaj: http://localhost/
Če ti brskalnik javi napako, še enkrat natančno preleti vseh 7 točk.
Če se izpis ujema s tem na sliki, si uspešno namestil strežnik, čestitamo.

Prek naslova http://localhost/ bomo sedaj vedno dostopali do strežnika, zato si ga kar zapomni.

Naš prvi PHP program

V mapo C:\Program Files\xampp\htdocs lahko sedaj damo svoje PHP programčke. PHP skripte imajo običajno končnico .php.

Postopek ustvarjanja naše prve PHP skripte:

V mapi C:\Program Files\xampp\htdocs klikni z desno miškino tipko in izberi New (Nov) -> Text document (Dokument z besedilom).
Sistem ti sedaj ponudi možnost izbire imena datoteke - natipkaj: index.php, pritisni tipko enter in klikni Yes (Da), ko te sistem vpraša, če želiš spremeniti končnico datoteke.

Če te sistem po spremembi končnice ni vprašal, klikni Tools (Orodja) -> Folder options... (Možnosti mape...) -> jeziček View (Pogled) in odstrani kljukico pred Hide extensions for known file types (Skrij končnice pri znanih vrstah datotek) in poizkusi ponovno.

Datoteko index.php sedaj dvakrat klikni in jo odpri z beležnico.

Vanjo napiši svoje ime in jo shrani. Klikni tale link in se prepričaj, da se je na strani izpisalo tvoje ime: http://localhost/

Datoteke index.php, index.html ter index.htm sistem odpre tudi, če jih ne navedeš v naslovu. Ko tako v brskalnik napišeš http://localhost/, se v bistvu pokliče http://localhost/index.php.

Sedaj pa zares v PHP!

HTML in PHP koda lahko "živita" v isti datoteki, PHP kodo pa označimo s posebnima oznakama, <?php (začetek bloka PHP kode) in ?> (konec bloka PHP kode).

Za začetek kode lahko namesto <?php uporabiš tudi samo <?, vendar ta oznaka ni združljiva z vsemi strežniki.

Poglejmo si primer: <html>
<body>

blabla

<?php
// tukaj je PHP koda
?>

blabla

<?php
/* tukaj je še
malo PHP kode */
?>

blabla <?php // tukaj je PHP koda kar v isti vrstici kot HTML ?>

<body>
</html>

V PHP kodi lahko napišeš tudi komentarje, to nakažeš z // (če bo komentar dolg samo eno vrstico) oz. z /* (za začetek več vrstic dolgega komentarja) in z */ (za konec več vrstic dolgega komentarja). Morebitna PHP koda v komentarju se ne bo upoštevala.
Zgoraj si lahko ogledaš primere komentarjev v PHP kodi.

Sedaj bomo v index.php napisali svoj prvi PHP program. Sešteli bomo dve števili. Zamisli si ju. Recimo: 5 in 10. V datoteko napiši <?php
print 5+10;
?>
pri čemer lahko števili 5 in 10 zamenjaš s svojima poljubnima. Klikni ta link: http://localhost/.
Če je vse pravilno deluje, boš zagledal seštevek teh dveh števil.

Sedaj si oglejmo, kaj se je pravzaprav zgodilo:
Naš program je sestavljen iz 3 vrstic, pri čemer 1. in 3. nakazujeta, kje se PHP koda začne in kje konča. V 2. vrstici najdemo 3 elemente PHPja:

print <- ukaz, s katerim nekaj izpišemo. Brez tega ukaza uporabnik ne dobi povratne informacije. Namesto ukaza print se včasih uporablja tudi ukaz echo, njuna funkcionalnost pa je zelo podobna.

5+10 <- izraz, v tem primeru vsota dveh števil (15) - ta izraz se posreduje ukazu print.

; <- na koncu ukaza se vedno nahaja podpičje, saj s tem PHPju povemo, kje se nek ukaz začne in kje konča.

Ena od najpogostješih začetniških napak je izpuščanje podpičij na koncu ukazov (oz. vrstic, ker običajno v vsako vrstico zapišemo po en ukaz.) Če program ne deluje, se najprej prepričaj, da si vse ukaze zaključil s podpičji.
Prav tako se prepričaj, da si datoteko s PHP kodo pred poganjanjem zares shranil.

Seveda lahko namesto števil izpisujemo tudi besede. Preizkusi naslednjo kodo:

<?php
print "Hojla!";
?>
Števila (integers) in besede (nizi oz. strings v ang.) sta dva podatkovna tipa.

Kot lahko opaziš, smo besedo Hojla! zapisali v narekovajih. Tako se beseda loči od samih ukazov.

Pomembno: Številke lahko zapišeš v narekovajih ali brez njih, besede / stavkih / črke pa morajo biti vedno napisane v narekovajih.

Pa izpis 5+10 "polepšajmo" in uporabimo dva ukaza print:

<?php
print "Vsota 5 in 10 je ";
print 5+10;
?>

Na zaslon se bo sedaj izpisalo Vsota 5 in 10 je 15. Bodi pozoren na presledek za besedico "je" za lepši izpis.

Četudi ukaza print damo vsakega v svojo vrstico, bo ves izpis v eni sami vrstici, saj moramo za ročni prelom uporabiti HTML oznako <br />, ki jo lahko izpišemo skupaj z besedilom.

Primer izpisa z vstavljeno HTML kodo:

<?php
print "Vsota 5 in 10 je<br />";
print 5+10;
?>
Če želite v dvojnih narekovajih (") izpisati dvojni narekovaj kot del besedila, morate pred njim napisati še \ (slash), torej \".

Sedaj bomo na zaslonu zagledali nekaj takega:
Vsota 5 in 10 je
15

Dobro, sedaj znamo izpisovati stvari na zaslon. Pogljemo si še, kako bi (čeprav je v tem primeru nesmiselno) izpisali več ločenih nizov:

<?php
print "String 1" . "String 2" . "String 3";
?>

Na ta način (s .) lahko združujemo izraze, izpise funkcij in še kaj. Če bi želeli npr. izpisati trenutni datum, bi uporabili to kodo:

<?php
print "Trenutni datum in čas: " . date("r");
?>

Tukaj smo poklicali funkcijo z imenom date, ki nam je izpisala privzeto datum in čas po RFC 2822 standardu. Več o funkcijah boš izvedel kasneje v krožku, zato se zaenkrat s tem še ne obremenjuj.

Sporočanje napak v PHP skriptah

Sedaj že znamo na zaslon izpisati besedilo, je pa dobro vedeti, kako PHP javlja napake, če se zmotimo pri tipkanju kode.

V datoteko index.php zapišite tole in obiščite http://localhost/:

<?php
print "Vsota 5 in 10 je "
print 5+10;
?>

Izpiše se obvestilo o napaki - Parse error: syntax error, unexpected T_PRINT in C:\Program Files\xampp\htdocs\index.php on line 3. Na koncu sporočila lahko vidimo, v kateri vrstici je do napake prišlo, iz samega sporočila pa lahko razberemo, kaj je šlo narobe.

V tem primeru smo izpustili eno podpičje (na koncu 2. vrstice), kar je prevajalnik razumel, kot da se v 3. vrstici nadaljuje ukaz iz 2. vrstice, kar seveda ne drži.

Napake so lahko več vrst - od takih, ki prevajanja ne prekinejo (notice, warning) in takih, ki preprečijo izvajanje našega programa (error, fatal error).

Spremenljivke

V programu si morda želimo kakšno vrednost (npr. besedo ali število) zapomniti ter jo kasneje ponovno uporabiti. Take vrednosti shranimo v spremenljivke (ang. variables).

Spremenljivkam moramo pred začetkom uporabe prirediti vrednost, kasneje lahko na isti način spremenljivkam vrednost spremenimo, če pa jih pokličemo po imenu, lahko njihovo vrednost nekje uporabimo.

Par primerov iz resničnega življenja in njihove ustrezne različice v PHPju:

Moja starost je 19: $starost = 19;
Moje ime je Marko: $ime = "Marko";
Danes sem vesel: $vesel = true;

Kot lahko vidiš, se spremenljivke začnejo z znakom za dolar ($), vrednost pa jim priredimo z enačajem (=).

V imenih spremenljivk presledkov ne smeš uporabljati, ime spremeljivke se mora začeti s črko, uporabo šumnikov pa ti odsvetujem.

Primer prireditve vrednosti spremenljivki in izpisa te vrednosti:

<?php
$stevilo = 12;
print $stevilo;
?>

V 2. vrstici smo spremenljivki z imenom stevilo priredili vrednost 12, v 3. vrstici pa smo jo nato z ukazom print izpisali v spletno stran.

Program se vedno izvaja od zgoraj navzdol. Poizkusi napovedati, kaj se bo izpisalo na zaslonu:

<?php
$ime = "Marko";
$ime = "Klemen";
$ime = "Peter";
print $ime;
?>

Pravilni odgovor je seveda - Peter. Najprej smo ustvarili spremenljivko z imenom ime in ji določili začetno vrednost Marko (bodi pozoren na narekovaje okrog besede!), nato pa smo vrednost spremenili na Klemen in nazadnje še na Peter. Vedno lahko dostopamo samo do zadnje nastavljene vrednosti.

Na tem mestu omenimo še en podatkovni tip - boolean, ki smo ga uporabili pri primeru "Danes sem vesel". Uporablja se povsod v programiranju, čeprav morda na prvi pogled ne izgleda tako.

Ta podatkovni tip - z razliko od drugih - ima samo dve možni vrednosti: true in false. Z njim lahko določimo, da naj bo neka izjava resnična ali nesresnična. Več o tem enkrat drugič.

Oglejmo si še en preprost matematičen primer:

<?php
$a = 15;
$b = 30;
$c = $a * $b;
print $c;
?>

V spremenljivki z imenoma a in b smo dali vrednosti 15 in 30, nato pa smo v spremenljivko z imenom c dali njun produkt (produkt se označi z zvezdico). Ko to na koncu izpišemo na zaslon, dobimo izpis "450".

Osnovne matematične operacije v PHPju: + (seštevanje), - (odštevanje), * (množenje), / (deljenje), % (ostanek pri deljenju (modul)).

Poizkusi namesto zvezdice (znak za množenje) uporabiti poševnico (/ - znak za deljenje).

Sedaj lahko uporabimo znanje združevanja nizov od prej in produkt dveh števil izpišemo na lepši način. Poleg tega bom tukaj prikazal bolj zgoščen način zapisa: (spremenljivki a in b nastavimo v eni sami vrstici)

<?php
$a = 15; $b = 30;
$c = $a * $b;
print $a . " krat " . $b . " je " . $c;
?>

Prepričaj se, da razumeš, kako se s to kodo na zaslon izpiše 15 krat 30 je 450.

Druga možnost pa je, da imena spremenljivk vključimo kar med narekovaje skupaj z drugimi besedami. Tukaj imamo dve možnosti:

1. možnost:

<?php
$a = 15; $b = 30;
$c = $a * $b;
print "$a krat $b je $c";
?>

2. možnost:

<?php
$a = 15; $b = 30;
$c = $a * $b;
print "{$a} krat {$b} je {$c}";
?>

Pri drugi varianti smo uporabili še zavite oklepaje ({ in }), s katerimi nakažemo, da gre za spremenljivko (včasih je to bolje), pri prvi pa smo uporabili preprostejši način.

Namesto dvojnih narekovajev (") lahko povsod uporabljaš enojne ('), vendar se potem imena spremenljivk v njih izpišejo dobesedno. Se pa na pri interpretaciji izvorne kode hitreje obdelajo besede med enojnimi narekovaji ravno zato, ker se pri njih ne preverja, če so notri kakšne spremenljivke.

Zaključek snovi za ta teden

To je vse za ta teden. Sedaj znamo: izpisovati besede / stavke, števila in preproste matematične izračune ter spremenljivkam prirediti njihove vrednost in jih izpisovati.

Ne pozabi si pogledati in narediti domače naloge! Brez muje se še čevelj ne obuje, pravijo.