PHP tečaj: Osnove PHP

Na tej točki so vam HTML značke (iz prejšnjega poglavja) že dobro poznane in domače. Torej je zdaj pravi čas za naslednji korak.



Združevanje HTML ter PHP kode

Opomba: V sledečih primerih bomo zaradi preglednosti izpustili <head> sekcijo dokumenta. Pisali bomo torej samo HTML in PHP kodo, ki jo pišemo znotraj <body> sekcije, torej med začetno značko <body> in končno značko </body>.

Primer datoteke index.php (ki vsebuje dva prazna bloka PHP kode):

<body>
   <p>To je prvi odstavek.</p>
   <p>Tukaj pa je drugi odstavek.<br />To je druga vrstica istega odstavka.</p>

   <?php

   ?>

   <img src="http://www.primer.si/slika.png" alt="Testna slika" />

   <p>
      Tole je že tretji odstavek. Ta odstavek vsebuje nekaj,<br />
      kar izpišemo s pomočjo PHP kode: <?php   ?>
   </p>
</body>



Komentarji v PHP kodi

Pri programiranju lahko poleg programske kode v datoteko vstavimo tudi tako imenovane komentarje. Komentar je besedilo, ki se ne izvede kot programska koda.

V PHP kodi komentarje nakažemo z oznako //, če bo naš komentar dolg samo eno vrstico. Če pa želimo napisati komentar čez več vrstic, potem za začetek komentarja uporabimo oznako /*, za konec komentarja pa oznako */. Morebitna PHP koda v komentarju se ne bo upoštevala.

Primer različnih komentarjev:

<strong>Odebeljeno besedilo na naši spletni strani</strong>

<?php
   // tukaj smo zapisali enovrstični komentar
?>

<em>Poševno zapisano besedilo...</em>

<?php
   /* tukaj pa imamo daljši
   komentar v dveh vrsticah */
?>

<p>Odstavek.</p> <?php // še en enovrstični komentar ?>


Osnovni podatkovni tipi

Preden se zares polotimo programiranja v PHP jeziku, se moramo spoznati še z nekaj teoretičnimi osnovami programiranja. A brez skrbi, saj nam bo to vzelo le nekaj minut. :)

Pri programiranju uporabljamo različne vrste podatkov: številke, imena, itd.

Za različne vrste podatkov uporabljamo različne podatkovne tipe.

Poglejmo si torej 4 osnovne podatkovne tipe:

  • integer — cela števila, npr. 337
  • double — decimalna števila, npr. 93.69

    Pri celih in decimalnih številih lahko uporabljamo osnovne matematične operacije:
    • +   seštevanje
    • -   odštevanje
    • *   množenje
    • /   deljenje
    • %   ostanek pri deljenju, tako imenovani modul
    Primer: Operacija 7 + 4 nam ustvari celo število 11.
    Primer: Operacija 23.17 * 7.84 nam ustvari decimalno število 181.6528.

  • string (slo. niz) — besede, stavki, znaki, npr. "Hiša"

    Pri delu z nizi lahko uporabimo operacijo združevanja (ang. concatenation), ki jo označimo z operatorjem ..

    Primer: Operacija "Naj" . "boljši" nam zgradi niz "Najboljši".

  • boolean — vsebuje vrednost true ali false

    Operacije nad tem (zelo enostavnim) podatkovnim tipom bomo spoznali v kasnejšem poglavju.

Poleg štirih osnovnih pa poznamo še en sestavljen podatkovni tip:

  • array — tabela oziroma polje, ki vsebuje več elementov, npr. [1, 7, 4, 2]



Ukaza echo in print

Ukaza echo in print v bistvu počneta eno in isto — z njima obiskovalcu naše spletne strani izpisujemo besedilo, HTML kodo, vrednosti spremenljivk, izračunane vrednosti drugih funkcij, itd.

Ukaza sta sicer enakovredna, tekom tečaja pa bomo uporabljali ukaz echo, ker je nekoliko hitrejši.

Čas za PHP kodo! Če želimo s PHPjem izpisati svoje ime, to storimo takole:

<?php
   echo "Janez";
?>

Oglejmo si zgornjo programsko kodo po posameznih členih:

  1. echo — Ukaz, s katerim bomo nekaj poslali v uporabnikov spletni brskalnik.
  2. "Janez" — Niz "Janez". Nize v PHPju pišemo med enojnimi narekovaji ' ali dvojnimi narekovaji ".
  3. ; — Podpičje, ki PHP interpreterju pove, da je ukaza konec.
Pozor: Ena od najpogostejših začetniških napak je izpuščanje podpičij na koncu ukazov. Bodite torej pozorni, da po vsakem ukazu zapišete podpičje.

Navadno v vsako vrstico kode zapišemo po en ukaz, tako da se vsaka vrstica kode konča s podpičjem.


Poglejmo si primer, kjer želimo videti takšen končni izpis v spletnem brskalniku:

Vsota 5 in 10 je 15

Verjetno bi na začetku med oznaki <?php in ?> poizkusili napisati programsko kodo v tem stilu:

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

Kakšno napako bomo opazili, ko poženemo kodo iz zgornjega primera?

Odgovor: Pozabili smo na prehod v novo vrstico. Četudi oba ukaza echo v kodi napišemo vsakega v svoji vrstici, bomo dobili celoten izpis našega programa v eni sami vrstici, saj moramo za prelom vrstice (ang. line break) izrecno uporabiti HTML oznako <br />, ki jo lahko izpišemo skupaj z besedilom.

Popravljena verzija zgornje programske kode torej izgleda takole:

<?php
   echo "Vsota 5 in 10 je<br />";
   echo 5 + 10;
?>



Izpisovanje HTML kode s PHPjem

Kot smo videli na zgornjem primeru z izrecnim prehodom v novo vrstico, moramo včasih s PHPjem izpisati tudi kakšen košček HTML kode.

To naredimo enako, kot če bi želeli izpisati kakšen drug niz, moramo pa paziti na posebne znake, npr. enojne in dvojne narekovaje, ki jih moramo ustrezno označiti, da jih PHP ne bo obravnaval kot konec niza.

Primer HTML kode, ki na zaslonu prikaže povezavo do druge spletne strani:

<a href="http://www.primer.si/">Kliknite tukaj.</a>

Če želimo zgornjo HTML kodo izpisati z ukazom echo, naša programska koda izgleda takole:

<?php
   echo "<a href=\"http://www.primer.si/\">Kliknite tukaj.</a>";
?>

Postopek, kjer znakom, ki bi se lahko tolmačili kot ukaz, dodamo levo poševnico \, imenujemo z angleškim izrazom escaping.

Če namreč dvojnih narekovajev ne bi escapali, bi že za prvi dvojni narekovaj znotraj HTML kode PHP interpreter mislil, da označuje konec niza. S tem bi zaključil procesiranje niza in bi naslednje znake v datoteki obravnaval kot PHP ukaze, kar bi privedlo do napake.

Leva poševnica \, ki jo uporabimo za escaping, se v končnem izpisu seveda ne bo pojavila.

Obstajata še dve rešitvi zgornjega problema brez uporabe escapinga:

  • 1. možnost: Uporaba enojnih narekovajev znotraj HTML kode:

    <?php
       echo "<a href='http://www.primer.si/'>Kliknite tukaj.</a>";
    ?>
  • 2. možnost: Uporaba enojnih narekovajev (namesto dvojnih) za oznako niza:

    <?php
       echo '<a href="http://www.primer.si/">Kliknite tukaj.</a>';
    ?>


Spremenljivke

V programu si pogosto ž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 določiti (prirediti) vrednost, kasneje pa jim lahko na isti način vrednost tudi spremenimo ali pa preko njihovega imena prikličemo njihove vrednosti.

Spremenljivke se začnejo z znakom za dolar $, ki mu sledi ime spremenljivke. Ime se mora začeti s črko ali podčrtajem, vsebuje pa lahko samo črke (brez šumnikov), številke in podčrtaje. Ime spremenljivke ne sme vsebovati presledkov. Ime je tudi občutljivo na velike in male črke.

Spremenljivkam vrednost določimo (priredimo) z enačajem =. Pri ustvarjanju (deklaraciji) spremenljivke v programskem jeziku PHP ne navedemo podatkovnega tipa spremenljivke.1

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

  • Moja starost je 26 let: $starost = 26;
  • Moje ime je Janez: $ime = "Janez";
  • Danes sem zadovoljen: $zadovoljen = true;
Spremenljivke lahko seveda z ukazom echo tudi izpišemo na zaslon:

$sporocilo = "Dober dan!";

echo $sporocilo;

// zgornji ukaz izpiše: Dober dan!



Združevanje (ang. concatenation)

Primer: Če želimo pri izpisu združiti nek niz in neko vrednost spremenljivke, to storimo z uporabo operatorja v obliki pike: .2

$sporocilo = "Dober dan!";

echo "PHP ti sporoča: " . $sporocilo;

// zgornji ukaz izpiše: PHP ti sporoča: Dober dan!

Druga možnost pa je, da vrednost spremenljivke $sporocilo vstavimo neposredno v niz in pri tem uporabimo zavite oklepaje:

$sporocilo = "Dober dan!";

echo "PHP ti sporoča: {$sporocilo}";

// zgornji ukaz izpiše: PHP ti sporoča: Dober dan!

Ta postopek deluje samo, kadar je niz obdan z dvojnimi narekovaji, ne pa tudi z enojnimi:

$sporocilo = "Dober dan!";

echo 'PHP ti sporoča: {$sporocilo}';

// zgornji ukaz izpiše: PHP ti sporoča: {$sporocilo}



Razhroščevanje (ang. debugging) PHP aplikacij

PHP interpreter nam v HTML izpisu sporoči tudi morebitne napake.3 Ker se pri izpisu napake na zaslonu poleg številke vrstice, kjer je prišlo do napake, izpiše tudi polna pot do našega PHP programa (skripte), je takšno prikazovanje napak lahko morebitna varnostna luknja. Zato je javljanje napak pri javno dostopnih skriptah priporočljivo izključiti.4

Oglejmo si primer PHP kode, kjer smo v 1. vrstici pozabili podpičje na koncu vrstice:

echo "Vsota 5 in 10 je"
echo 5 + 10;

Če to kodo poženemo, nam PHP izpiše naslednje sporočilo o napaki:

Parse error: syntax error, unexpected T_ECHO in
/var/www/primer.si/index.php on line 2

PHP interpreter je namreč zmotilo dejstvo, da se je za nizom "Vsota 5 in 10 je" pojavila besedica echo, saj zaradi manjkajočega podpičja v prejšnji vrstici še ni bil pričakovan naslednji ukaz.



Ukaza include in require

Ukaza include in require sta funkciji, s katerima na spletno stran vstavimo vsebino neke druge spletne strani ali PHP skripte.

Uporabljamo ju sicer v enak namen, vendar se razlikujeta po tem, da funkcija require prekine izvajanje našega programa, če datoteka, ki jo želimo vstaviti v naš program, ne obstaja. Funkcija v tem primeru javi napako Fatal error.

Funkcija include v enakem primeru javi le opozorilo Warning in ne prekine izvajanja našega programa.

Primer uporabe: Imamo spletno stran, ki jo sestavljajo glava in navigacijski menu (ang. header), telo (ang. body) in noga (ang. footer).

Če bi našo spletno stran zapisali samo z uporabo HTML kode, bi morali na vsaki podstrani naše spletne strani (kontakt, zemljevid, itd.) vstaviti tudi HTML kodo za header in footer. V primeru sprememb v teh dveh sekcijah bi morali HTML kodo torej popraviti na vsaki podstrani posebej. Z uporabo funkcije include se temu elegantno izognemo.

Korak 1: Ustvarimo datoteko header.php. V to datoteko zapišemo osnovno HTML kodo do vključno značke <body>, vključimo pa tudi morebitni menu:

<html>
   <head>
      <title>Naša prva spletna stran</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   </head>
   <body>
      <ul>
         <li><a href="index.php">Domov</a></li>
         <li><a href="kontakt.php">Kontakt</a></li>
         <li><a href="zemljevid.php">Zemljevid</a></li>
      </ul>

Korak 2: Ustvarimo datoteko footer.php ter vanjo zapišemo kodo od vključno </body> dalje:

   </body>
</html>

Korak 3: Ustvarimo vse tri podstrani (index.php, kontakt.php ter zemljevid.php), do katerih bodo uporabniki lahko dostopali. Na vsaki podstrani na ustreznih mestih s funkcijo include vstavimo vsebino iz datotek header.php ter footer.php, med njima pa izpišemo željeno vsebino.

Primer za datoteko kontakt.php:

<?php
   include "header.php";
?>

<h1>Kontakt</h1>

<p>Tukaj bomo kmalu vstavili obrazec za pošiljanje e-pošte...</p>

<?php
   include "footer.php";
?>

Vas zanima, kako naša enostavna spletna stran deluje v praksi?

Na sledeči povezavi lahko na svoj računalnik shranite vseh 5 datotek, ki jih potrebujemo:
header.php, footer.php, index.php, kontakt.php in zemljevid.php.

Poskusite: Prenesite vseh 5 datotek na svoj računalnik ter jih shranite v isto mapo, kjer se nahaja datoteka index.php iz prejšnjega poglavja. Obstoječo datoteko index.php kar mirno prepišite z novo.

Nato s spletnim brskalnikom obiščite naslov http://localhost/ in zagledali boste svojo prvo spletno stran.


Čestitamo — uspešno ste naredili prve korake v svetu pisanja programske kode PHP.
Zdaj je torej čas za naslednje poglavje — kaj so PHP funkcije in kako jih uporabljamo?



Naslednje poglavje
Funkcije

Prejšnje poglavje
Osnove HTML