Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Dejan Kos
UPORABA PHP5, XML, MySQL in AJAX ZA
RAZVOJ SPLETNIH REŠITEV
Diplomsko delo
Maribor, junij 2009
I
I
Diplomsko delo visokošolskega strokovnega študijskega programa
UPORABA PHP5, XML, MySQL in AJAX ZA RAZVOJ SPLETNIH REŠITEV
Študent: Dejan Kos
Študijski program: Visokošolski, Računalništvo in informatika
Smer: Informatika
Mentor: Izr. prof. dr. Matjaž B. Jurič, univ. dipl. inž.
Somentor: doc. dr. Boštjan Brumen
Lektorica: Petra Tori, prof. slov. in univ. dipl. pedagog
Maribor, junij 2009
II
Zahvala
Zahvaljujem se svojemu mentorju za pomoč
pri diplomski nalogi in projektu
www.potovalka.si. Predvsem pa bi se
zahvalil svojemu dekletu za potrpežljivost in
spodbudo pri študiju, prav tako staršem.
Projekt www.potovalka.si pa ne bi nastal
brez dobrega prijatelja Roka Beigota.
III
UPORABA PHP5, XML, MySQL in AJAX ZA RAZVOJ SPLETNIH
REŠITEV
Klju čne besede : računalništvo, Php5, MySQL, Xml, Ajax, spletne rešitve
UDK: 004.774/.777(043.2)
Povzetek
V diplomski nalogi so predstavljene tehnologije, s katerimi je bil razvit portal
www.potovalka.si. Opisane so tehnologije PHP5, MySQL (podatkovna baza), AJAX, ki
omogoča asnihrono prikazovanje podatkov, in XML, v katerem so lahko shranjeni podatki za
nadaljnjo uporabo. Prav tako so opisane konkurenčne tehnologije ter prednosti in slabosti
izbranih tehnologij.
Cilj diplomske naloge je, da predstavimo razvoj konkretnega portala, od ideje, do
zbiranja specifikacij, načrtovanja, izbire tehnologij ter same realizacije. Opisane so vse
funkcionalnosti, ki jih ponuja portal in do katerih lahko dostopajo uporabniki. Prav tako so
opisane funkcionalnosti, ki jih lahko uporabljajo uredniki. Predstavili smo tudi realne težave,
do katerih smo prišli pri samem razvoju, tako s tehničnega vidika, kot s postavitvijo portala
na internet.
IV
USING PHP5, XML, MySQL AND AJAX FOR THE
DEVELOPMENT OF WEB SOLUTION
Key Words: computer science, Php5, MySQL, Xml, web solotions UDK : 004.774/.777(043.2) Abstract
In the diploma work the technologies that were used to develop the www.potovalka.si
portal are described: PHP5, MySQL, AJAX that presents the data asynchronously and XML
that can store the data for future use. The benefits and weaknesses of those technologies are
described along with the rival technologies.
The aim of my diploma work is to present the development of a real-world portal. The
idea, the requirements specifications, planning, the choice of technologies and the
construction are described. The functional characteristics of the portal, which the user can
access are described along with the characteristics the editors can use. The problems that may
occur in the process of the development and during the setting up of the portal on the internet
are also described.
V
KAZALO 1. UVOD ................................................................................................................................ 1 2. OPIS TEHNOLOGIJE PHP............................................................................................... 2
2.1. Uporaba tehnologije PHP........................................................................................... 3 2.2. Sintaksa tehnologije PHP........................................................................................... 4 2.3. Vrste podatkov ........................................................................................................... 6 2.4. Vnaprej definirane spremenljivke .............................................................................. 6 2.5. Polja............................................................................................................................ 7 2.6. Značilnosti tehnologije PHP....................................................................................... 9 2.7. Prednosti tehnologije PHP ......................................................................................... 9 2.8. Slabosti tehnologije PHP.......................................................................................... 10 2.9. Primerjava PHP z ostalimi programskimi jeziki ...................................................... 10
2.9.1 Zbiralnik »smeti« ............................................................................................. 10 2.9.2 Statične ali dinamične tipizacije....................................................................... 11 2.9.3 Interaktivni ali serije......................................................................................... 11 2.9.4 Obseg................................................................................................................ 12 2.9.5 Priljubljenost .................................................................................................... 12 2.9.6 Abstrakcija ....................................................................................................... 12 2.9.7 Struktura knjižnic ............................................................................................. 13
3. OPIS PODATKOVNE BAZE MySQL ........................................................................... 13 3.1. Orodja za upravljanje MySQL podatkovnih baz......................................................14 3.2. Podpora podatkovne baze MySQL .......................................................................... 16 3.3. Arhitektura ............................................................................................................... 16 3.4. Tabele ....................................................................................................................... 18 3.5. Povezovanje MySQL baze s PHP skripto ................................................................ 20 3.6. Prednosti podatkovne baze MySQL......................................................................... 21 3.7. Slabosti podatkovne baze MySQL........................................................................... 22 3.8. Konkurenca MySQL podatkovne baze .................................................................... 22
4. OPIS TEHNOLOGIJE AJAX.......................................................................................... 22 4.1. Tehnologija AJAX in tehnologija WEB 2.0 ............................................................ 24 4.2. Zgodovina................................................................................................................. 25 4.3. Document Object Model (DOM) ............................................................................. 27 4.4. Tehnologija XML in tehnologija XSLT................................................................... 28
4.4.1 XSLT Procesor................................................................................................. 28 4.5. XMLHttpRequest ..................................................................................................... 31
4.5.1 XMLHttpRequest (XHR) zahteva....................................................................31 4.5.2 Ustvarjanje XMLHttpRequest objekta............................................................. 32 4.5.3 Metode objekta XMLHttpRequest ...................................................................34 4.5.4 Lastnosti XMLHttpRequest ............................................................................. 35
4.6. Konkurenčne tehnologije ......................................................................................... 35 4.7. Prednosti in slabosti tehnologije AJAX ................................................................... 36
5. OPIS TEHNLOGIJE XML .............................................................................................. 37 5.1. Oznake...................................................................................................................... 37 5.2. Deklariranje dokumenta ........................................................................................... 38 5.3. Dobro oblikovan dokument...................................................................................... 39 5.4. Komentarji................................................................................................................ 40 5.5. XML imenski prostor (Namespace)......................................................................... 41 5.6. Unicode in znakovni nabor ...................................................................................... 43 5.7. Uporaba XML-ja v praksi ........................................................................................ 44
VI
5.8. Prednosti in slabosti XML-ja ................................................................................... 44 6. SPLETNI PORTAL www.potovalka.si ........................................................................... 45
6.1. Diagram primerov uporabe ...................................................................................... 46 6.1.1 Diagram primerov uporabe uporabnika ........................................................... 46 6.1.2 Diagram primerov uporabe ponudnika ............................................................ 47 6.1.3 Diagram primerov uporabe administratorja ..................................................... 48
6.2. Arhitekturni načrt ..................................................................................................... 49 6.3. Načrt izdelave portala............................................................................................... 50
6.3.1 Izbira tehnologij in ponudnika spletnega prostora ........................................... 50 6.3.2 Struktura datotek .............................................................................................. 50 6.3.3 Umestitev tehnologij v portal........................................................................... 51
6.4. Specifikacija ............................................................................................................. 52 6.4.1 Funkcije za uporabnike .................................................................................... 52 6.4.2 Funkcije za ponudnike ..................................................................................... 53 6.4.3 Funkcije za administracijo ............................................................................... 53
6.5. Podrobnejši opis funkcionalnosti ............................................................................. 54 6.5.1 Prva stran.......................................................................................................... 54 6.5.2 Prva podstran.................................................................................................... 56 6.5.3 Druga podstran (podrobnejši opis ponudbe) .................................................... 56 6.5.4 Napredno iskanje.............................................................................................. 58 6.5.5 Forum ............................................................................................................... 59
6.6. Podatkovna baza....................................................................................................... 59 6.7. Ogrodje aplikacije .................................................................................................... 62 6.8. Moduli ...................................................................................................................... 63
6.8.1 Levi modul ....................................................................................................... 63 6.8.2 Desni modul ..................................................................................................... 66 6.8.3 Glava modul ..................................................................................................... 66 6.8.4 Noga modul ...................................................................................................... 67
6.9. Forum ....................................................................................................................... 67 6.10. Namen portala ...................................................................................................... 68 6.11. Kratek opis ponudbe............................................................................................. 69 6.12. Podroben opis ponudbe ........................................................................................ 70 6.13. Administracija ...................................................................................................... 73 6.14. Galerija ................................................................................................................. 75 6.15. Napredno iskanje.................................................................................................. 76
6.15.1 1. Sklop............................................................................................................. 76 6.15.2 2. Sklop............................................................................................................. 77
6.16. Za turistične agencije ...........................................................................................78 6.17. Oglaševanje .......................................................................................................... 79
6.17.1 Plačilo na kliku................................................................................................. 80 6.17.2 Zakup »Vroče ta hip« povezav......................................................................... 81 6.17.3 Zakup oglasnega prostora na prvi strani .......................................................... 81 6.17.4 Zakup oglasnega prostora pod ponudbami....................................................... 82 6.17.5 Zakup oglasnega prostora pod ponudbo...........................................................82 6.17.6 Zakup oglasnega prostora na desni strani ........................................................ 83
6.18. Možnost vnašanja ponudb.................................................................................... 83 6.19. Izkušnje ob razvoju portala .................................................................................. 84
7. SKLEP.............................................................................................................................. 86 8. VIRI.................................................................................................................................. 87 9. PRILOGE......................................................................................................................... 89
VII
9.1. Seznam slik .............................................................................................................. 89 9.2. Seznam preglednic ................................................................................................... 90 9.3. Naslov študenta ........................................................................................................ 90 9.4. Kratek življenjepis.................................................................................................... 90
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 1
1. UVOD
Danes je veliko tehnologij, s katerimi lahko razvijamo internetne in Windows
aplikacije. Izbor tehnologije, v kateri se bo razvila aplikacija, mora biti trdno premišljen, saj
ne sme biti »ozko« grlo, s katerim se bomo srečali pri samem razvoju. Pred samim razvojem
aplikacije je potrebno pridobiti idejo za razvoj le-te (če jo ne naroči stranka), pridobiti
specifikacije, načrtovati aplikacijo in šele nato izbrati tehnologijo, v kateri se bo aplikacija
razvila. Potrebno je upoštevati vse prednosti/slabosti tehnologij in na podlagi analize izbrati
primerno.
Prvi del diplomskega dela vsebuje predstavitev tehnologij PHP5, MySQL 5, XML in
AJAX, ki povezuje vse skupaj v zaključeno celoto. Predstavili smo tudi praktični primeri za
vsako tehnologijo posebej, ter kako se lahko dopolnjujejo. Vsaka tehnologija ima prednosti in
slabosti, prav tako pa tudi konkurenco. Konkurenca žene razvijalce programskim jezikov
naprej in s tem pripomore, da uporabnik teh programskih jezikov porabijo manj časa za
tehnične probleme, oziroma probleme kako neko zahtevo izvesti in porabijo več časa za
poslovni problem in rešitev le tega. Drugi del diplomske naloge pa vsebuje predstavitev
portala www.potovalka.si in njegovih funkcionalnosti, ki so predstavljene vsem
obiskovalcem, ki portal obiščejo. Portal je izdelan v tehnologijah, ki si opisane v prvem delu.
Predstavljen je celoten razvoj portala, od same ideje, s kakšnim namenom je bil razvit portal,
do zbiranja specifikacij, načrtovanja portala, izbire tehnologij in samega razvoja. Priložene so
tudi slike in opisi posameznih delov strani in modulov, ki so prisotni na portalu.
Pri načrtovanju in razvoju portala smo prišli do nekaterih težav, ki smo jih opisali v
zaključnem delu diplomskega dela. Sicer pa smo z izdelavo tega portala pridobil veliko
izkušenj, ki nam bodo koristile pri nadaljnjih projektih.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 2
2. OPIS TEHNOLOGIJE PHP
PHP (trenutno tri-črkovni rekurzivni akronim za PHP Hypertext Preprocessor, izvirno
pa Personal Home Page Tools, slovenska orodja za osebno spletno stran) je razširjen odprto-
kodni programski jezik, ki je namenjen strežniški uporabi, oziroma za razvoj dinamičnih
spletnih vsebin. Lahko ga primerjamo z Microsoftovim ASP-, VBScript in JScript sistemom,
Sun Mycrosystemovim JSP- in Java sistemom ter CGI- in Perl sistemom. [1] PHP je skriptni
jezik, ki je namenjen za izdelavo dinamičnih spletnih strani. Njegov »oče« je Rasmus Lerdorf,
ki ga je ustvaril leta 1995, danes pa ga ustvarjajo pod PHP Group in je standard za PHP. PHP
je brezplačen programski jezik, združljiv pod licenco PHP Licence in nezdružljiv z licenco
GPL, zaradi omejitve uporabe izraza PHP. Na Sliki 1 je prikazan razvoj PHP-ja skozi čas ter
napoved naslednje verzije. PHP je bil napisan v naslednjih programskih jezikih: [2]
o C,
o Perl,
o Java,
o C++
Slika 1: Pregled verzij PHP skozi čas od leta 1995 do 2008 [2]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 3
2.1. Uporaba tehnologije PHP
PHP je široko uporabljen za splošne namene skriptnega jezika, ki je še posebej primeren
za razvoj spletnih strani/portalov in je lahko vrinjen v HTML. PHP koda se izvaja na
strežniški strani, v nasprotju s HTML-jem, ki se izvaja na odjemalčevi strani. Elementi
HTML kode so v času prevajanja izpuščeni, koda PHP pa se prevede in izvede. PHP se lahko
razporedi na večini spletnih strežnikov, na veliko operacijskih sistemov in platform, kjer se
lahko uporabijo številne relacijske podatkovne zbirke za upravljanje sistemov. Na voljo je
brezplačen in je vključen v PHP Group. Predvideva popolno izvorno kodo za gradnjo,
podaljšanje in prilagoditev za lastno uporabo. Po podatkih s strani Wikipedije je PHP
uporabljen na več kot 20 milijonih spletnih strani in na 1 milijonu spletnih strežnikov. S kodo
PHP lahko poizvedujemo po zbirki podatkov, beremo in pišemo v datoteke, obdelujemo in
ustvarjamo XML, komuniciramo z ostalimi strežniki in izvajamo še mnoge druge operacije.
[2] Na Sliki 2 je prikazan proces procesiranja PHP kode.
Slika 2: Prikaz procesiranja PHP kode[19]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 4
2.2. Sintaksa tehnologije PHP
PHP kodo se razčleni le znotraj svojega mejnika, karkoli zunaj njenega mejnika se
pošlje neposredno kot izhodni parameter in ga PHP ne prevede. Najpogosteje se začetek
mejnika označi z »<?php konec mejnika pa z ?>«, primer takega pisanje kode je prikazan v
izvorni kodi 1. Obstaja tudi druga opcija, »<script language="php">« in »</ script>«, vendar
se v praksi ne uporablja pogosto. Spremenljivke se označijo z dolarjem ($) »$primer = 'Res
očiten primer';« in končajo s podpičjem (;), tipov pa ni potrebno eksplicitno navajati. Vsebino,
ki jo želimo vpisati v neko spremenljivko, zapišemo z enojnim ali dvojnim oklepajem.
Komentarje lahko pišemo s »/*« to je komentar »*/« ali pa »//« to je komentar . Prvi primer se
razlikuje od drugega le v tem, da lahko traja več vrstic, drugi primer pa le eno. Zanke,
funkcije in pogoji so podobni kot v programskih jezikih C, C++ , Java in Perl. [2] V PHP se
lahko piše koda objektno ali proceduralno. Objektno je vsekakor primernejše za večje
projekte, saj lažje vzdržujemo kodo, hkrati pa jo lahko uporabimo tudi na drugih projektih.
Primer objektnega pisanja PHP kode je prikazan v izvorni kodi 4, proceduralnega pa v izvorni
kodi 3.
<html>
<head>
<title>To je test!</title>
</head>
<body>
<?php echo '<p>Testni vnos.</p>'; ?>
</body>
</html>
Izvorna koda 1: Primer vgnezditve PHP v HTML kodo
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 5
Rezultat, ki ga prikaže brskalnik, pa je prikazan v izvorni kodi 2.
<html>
<head>
<title>To je test!</title>
</head>
<body>
<p>Testni vnos.</p>
</body>
</html>
Izvorna koda 2: Rezultat PHP procesiranja v HTML kodo
<?php echo 'To je primer';
echo '<br />';
echo 'To je primer PHP';
?>
Izvorna koda 3: Proceduralno pisanje kode
<?php class TestniPrimer { private $vrednost; public function TestniPrimer($vrednostIn) { $this->vrednost = $vrednostIn; } public function izpisiVrednost() { echo $this->vrednost; } public function dodajVrednost($dodajVrednost) { $this->vrednost .= $dodajVrednost; } public function novaVrstica() { echo '<br />'; } } $novPrimer = new TestniPrimer('To je primer '); $novPrimer->izpisiVrednost();
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 6
$novPrimer->novaVrstica(); $novPrimer->dodajVrednost('PHP'); $novPrimer->izpisiVrednost(); ?>
Izvorna koda 4: Objektno pisanje kode
2.3. Vrste podatkov
PHP shranjuje cele številke v omejeno območje. Za to območje je značilno, da je 32-
bitni podpisano celo število. Nepodpisana celo število se pretvorijo v vrednosti podpisanega v
določenih okoliščinah, to obnašanje se razlikuje od drugih programskih jezikov. Celo
številčne spremenljivke se lahko dodeli z uporabo decimalne (pozitivnih in negativnih),
oktalne in heksadecimalne notacije. Realne številke so prav tako shranjene v izhodišče
značilnega območja. Lahko se določijo z uporabo v plavajoči vejici zapisa ali dveh oblik
znanstvenega zapisa. PHP ima značilnosti logičnega podatkovnega tipa, ki je podoben
avtohtonim vrstam v Javi in C + +. Pri uporabi logične podatkovne konverzije velja vrsto
pravil, ki niso ničelne vrednosti, so razložene kot resnične in napačne, enako kot v Perl in C +
+. Ničen tip podatkov predstavlja spremenljivko, ki nima vrednosti. Spremenljivke o "viru"
vrste pomenijo sklicevanja na vire iz zunanjih virov. Viri so običajno proizvedeni od funkcij s
posebnim podaljševanjem in se lahko obdelajo v funkciji iz iste razširitve; primeri vključujejo
datoteke, slike, podatkovne baze in vire. Polja lahko vsebujejo elemente katerekoli vrste. PHP
lahko upravlja vključno z viri, predmeti in drugimi nizi. Naročilo se ohrani v seznamu
vrednosti in v seznamu nizov z obema ključema in vrednostnima. [2]
2.4. Vnaprej definirane spremenljivke
PHP predvideva veliko število vnaprej definiranih spremenljivk za vse skripte. [20]
Vnaprej definirane spremenljivke so polja, ki so vgrajena v PHP in so dostopna kjerkoli v
kodi, ne glede na to, v katerem delu kode se uporabijo. Uporabljajo se predvsem za
posredovanje informacij iz HTML na strežnik. Z vnaprej definiranimi spremenljivkami lahko
dostopamo do vseh napak, ki so se zgodile na strani.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 7
o Superglobals - so globalne spremenljivke, ki so vedno na voljo v vseh
področjih
o $GLOBALS - referenčne spremenljivke, ki so na voljo v globalnem obsegu
o $_SERVER – spremenljivke, omogočene s strani strežnika
o $_GET - HTTP GET spremenljivke
o $_POST - HTTP POST spremenljivke
o $_FILES - HTTP prenašanje datotek
o $_REQUEST - zahteva HTTP spremenljivke
o $_SESSION - spremenljivke seje
o $_ENV - okolje spremenljivke
o $_COOKIE - HTTP piškotki
o $Php_errormsg – sporočilo o prejšnji napaki
o $HTTP_RAW_POST_DATA - polje s POST podatki
o $Http_response_header - HTTP glave
o $Argc - število argumentov, ki se prenesejo v skripto
o $Argv - polje, ki se prenese v skripto
Primer prireditve globalne vrednosti je prikazan v izvorni kodi 5.
//vnos podatka
$GLOBALS['upIme'] = 'dejan';
//izpis podatka
echo $GLOBALS['upIme'];
//prikaz podatka
dejan
Izvorna koda 5: Globalne spremenljivke
2.5. Polja
Polja dajo programerju v PHP jeziku veliko prožnosti. Do njih lahko dostopamo
neposredno preko indeksov, hkrati pa nam omogočajo delo z vsemi elementi v polju. Vsebino
lahko razvrščamo po številih, črkah, po indeksih ali pa po lastnem sistemu. Indeks se vedno
začne s številom 0. Primer dela s polji je viden v izvorni kodi 6.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 8
PHP pozna več vrst polj:
Indeksna polja:
$polje[0] = 'Dejan';
$polje[1] = 'Kos';
Večrazsežnostna polja:
$ponudbe[] = array
(
'ime' => 'Vila Bela',
'termini' => array
(
array ( 'od' => '15.5.2008', 'do'=>'20.5.2008'),
array ( 'od' => '20.5.2008', 'do'=>'25.8.2008')
)
);
$ponudbe[] = array
(
'ime' => 'Vila Zelec',
'termini' => array
(
array ( 'od' => '15.4.2008', 'do'=>'20.4.2008'),
array ( 'od' => '20.4.2008', 'do'=>'25.4.2008')
)
);
//izpiše Vila Bela 15.5.2008-20.5.2008
echo $ponudbe[0]['ime'].' '.$ponudbe[0]['termini'][0]['od'].'-'. $ponudbe[0]['termini'][0]['do'];
Izvorna koda 6: Polja v PHP
PHP ima že kar nekaj funkcij, ki nam omogočajo razvrščanje in urejanje polj. Vse so
prikazane na naslovu http://si2.php.net/array, kjer so tudi primeri, kako jih uporabimo.
Primer:
//zapise razvrsti v obratnem vrstnem redu
array_reverse($ponudbe)
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 9
2.6. Značilnosti tehnologije PHP
Značilnosti tehnologije PHP je veliko, opisali bomo najbolj uporabljene.
Značilnosti PHP:[21]
o HTTP avtentikacija z PHP
o Piškotki
o Seje
o Obravnavanje XForm
o Upravljanje z nalaganjem:
• POST metoda za nalaganje
• Obrazložitev napake
• Skupne pasti
• Nalaganje več datotek
• podprta PUT metoda
o Uporaba oddaljene datoteke
o Upravljanje s povezavami
o Vztrajne povezave s podatkovno bazo
o Varen način
• zaščiten in varen način
• funkcije omejene/izključene v varnem načinu
o Uporaba PHP iz ukazne vrstice
2.7. Prednosti tehnologije PHP
Opisali bomo prednosti tehnologije PHP z vidika razvijalca, ki razvija praktično
aplikacijo. Prednosti tehnologije PHP:
o Brezplačna uporaba.
o Ima veliko skupnosti, ki »ženejo razvoj« naprej.
o Nizki stroški vzdrževanja in razvoja.
o Visoka učinkovitost in zanesljivost.
o Sposobnost vključevanja kode v HTML kodo.
o Združljiv s strežniki Apache in IIS.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 10
o Deluje na vseh platformah.
o Podpira številne podatkovne baze MySQL, Informix, Oracle, Sybase,
Solid, PostgreSQL, Generic ODBC itd.
2.8. Slabosti tehnologije PHP
Slabosti tehnologije PHP se lahko razvijalec zave šele takrat, ko razvija aplikacijo ali
pa prehaja iz ene tehnologije v drugo.
Slabosti PHP programskega jezika:
o Slab opis napake, če se le-ta pojavi.
o Programske kode ni potrebno prevesti, s tem se poveča nevarnost, da jo
lahko ostali vidijo/odtujijo.
o Spodbuja nepregledno pisanje kode.
o Ne spodbuja modularno programiranje.
2.9. Primerjava PHP z ostalimi programskimi jeziki
Chris Shiflett je razdelil programske jezike v 2 skupini:
o Prilagodljivi in močni: PHP, C, C + +, in Perl.
o Strukturirani in organizirani: Java, Ruby, in ASP.NET.
2.9.1 Zbiralnik »smeti«
Upravljanje s pomnilnikom je pri programiranju največji problem. Priporočljivo
je, da se upravlja s pomnilnikom varčno, vendar pa je tak način programiranja zalo
počasen in posledično tudi "drag". Računalniške operacije, ki skrbijo za pravilno
sproščanje pomnilnika, so veliko cenejše od ure programiranja. Prav tako je zanemarljiv
odstotek tveganja, da program ne bi pravilno deloval. Zato so uvedli zbiralnik "smeti",
ki skrbi za sproščanje pomnilnika, programer pa se lahko ukvarja z vsebinskimi
problemi in reševanjem le-teh. [22]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 11
Programske jezike lahko v tem poglavju razdelimo v 2 skupini:
o hiter zagon: PHP, Java, Ruby, C #, Perl, Python, Smalltalk
o izvajanje je hitro: C, C + +, Objective C, Delphi
2.9.2 Statične ali dinami čne tipizacije
Pomembna primerjava pri programskih jezikih je statična in dinamična tipizacija.
Pri statični tipizaciji je informacija pogojena s spremenljivko. V dinamični pa je
informacija pogojena z vrednostjo spremenljivke. Prednost dinamičnega tipa je, da
programerju ni potrebno specifično navesti, za kateri tip gre. Prednost statične tipizacije
pa je, da prevajalnik lahko odkrije napake, katere je povzroči programer. [22]
o majhno tveganje: PHP, Ruby, Python, Smalltalk, Perl
o veliko tveganje: Java, C #
2.9.3 Interaktivni ali serije
Vprašanje je, kako dolgo traja, da se preklopi iz kontekstnega kodiranja v
izvajanje. Ali obstaja dolgotrajni proces gradnje, ali je porazdeljeno v faze? Krajša kot je
gradnja procesa, bolj je lahko produktivna:
o Interaktivno: PHP, Ruby
o Serija: Java
Dober primer tega je PHP v povezavi z Smarty in Propel. Oba ustvarjata kodo za
izvrševanje. Smarty ne deluje interaktivno, medtem ko Propel zahteva izgradnjo procesa.
[22]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 12
2.9.4 Obseg
Nihče ni bi smel podcenjevati dejavnika obsega. Zakaj se Java obravnava kot
zapletena? Eden od razlogov je, da je izdelana za delovanje na strežniku, mobilnem
telefonu, namiznih računalnikih in tudi pomivalnem stroju. Zaradi velikega obsega jo
vsekakor ni mogoče posplošiti. Vsekakor so specifična orodja kot so Rails in PHP bolj
produktivna na specifičnih aplikacijah: [22]
o Splošno: Java,. NET
o Posebni: PHP, Tirnice
2.9.5 Priljubljenost
Priljubljenost prinaša boljša orodja, večje število razvijalcev, boljšo dokumentacijo
in boljšo produktivnost. Programiranje na nepriljubljenih ali redkeje uporabljenih
platformah je težje. [22]
o Priljubljene: PHP,. NET, Java
o Redke: Python, Ruby, Smalltalk
2.9.6 Abstrakcija
Delo na višji ravni abstrakcije omogoča programerju, da je bolj produktiven.
Računalniška industrija mora neprestano napredovati na abstraktnem nivoju, ne sme se
ozirati nazaj. Poklicni programerji želijo delati na višji stopnji konstrukta, ki je bolj
izrazna. Za isti rezultat je potrebno manj dela in posledično manj vrst kod. Če pogledamo
nazaj, pri jezikih na višji ravni, so potrebovali več programerjev, da so lahko dosegi
sprejemljiv rezultat.[22]
o Enostavni: PHP, C, Java
o Močan: Ruby, Smalltalk, Lisp
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 13
2.9.7 Struktura knjižnic
o Funkcionalno usmerjene: C, PHP
o Objektno usmerjene: Java,. NET, Python, Ruby
3. OPIS PODATKOVNE BAZE MySQL
MySQL je sistem za upravljanje s podatkovnimi bazami. Je odprto-kodna
implementacija relacijske podatkovne baze, ki za delo s podatki uporablja jezik SQL. [4]
MySQL deluje na principu odjemalec - strežnik, pri čemer lahko strežnik namestimo
kot sistem, porazdeljen na več strežnikov. Obstaja veliko število odjemalcev, zbirk ukazov in
programskih vmesnikov za dostop do podatkovne baze MySQL. MySQL je napisan v C in C
+ +, SQL razčlenjevalnik uporablja yacc in domač produkt lexer (lexer je program, ki ustvarja
leksični analizator). Je v lasti podjetja MySQL AB, ki je hčerinsko podjetje podjetja Sun. [4]
MySQL je zelo priljubljen pri izdelovalcih spletnih aplikacij. Deluje skorajda na vseh
operacijskih sistemih Aix, BSDi, FreeBSD, HP-UX, i5/OS, Linux, Mac OS X, NetBSD,
Novell NetWare, OpenBSD, eComStation, OS / 2 Warp, Višezadaćni, IRIX, Solaris,
Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, Tru64, Windows 95, Windows
98, Windows ME, Windows NT, Windows 2000, Windows XP in Windows Vista. Napake pa
sporočajo uporabniki preko odprto-kodnega programa Bugzilla. Njegova priljubljenost je
tesno povezana s programskim jezikom PHP, ki je pogosto združen z MySQL-om. Veliko
spletnih strani, ki so med najbolj obiskanimi, uporablja MySQL za hranjenje podatkov:
o Flickr,
o Facebook,
o Wikipedia,
o Google,
o Nokia,
o YouTube …
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 14
Knjižnice za dostop do MySQL podatkovne zbirke so na voljo v vseh večjih
programskih jezikih, ki jih ureja tako imenovan API. Dodan je tudi MyODBC ODBC
vmesnik, ki omogoča dodatne programske jezike, ki podpirajo ODBC vmesnik za
komunikacijo z MySQL podatkovno bazo, kot so ASP ali ColdFusion. MySQL strežnik in
uradne knjižnice se večinoma izvajajo v Ansi C / Ansi C + +.
3.1. Orodja za upravljanje MySQL podatkovnih baz
Za upravljanje MySQL podatkovnih baz lahko uporabimo izdelana orodja (ukazni
MySQL in phpMyAdmin). Prav tako jih lahko prenesemo iz spletne strani MySQL
Administrator in MySQL Query Browser, ki sta prosta za uporabo. Obstaja še več
nekomercialnih in komercialnih orodij (SQLyog), ki so na voljo razvijalcem. Grafični primer
phpMyAdmin je prikazan na Sliki 3, na Sliki 4 pa SQLyog.
Slika 3: phpMySQLAdmin – brezplačna različica
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 15
Slika 4: SQLyog – plačljiva različica
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 16
3.2. Podpora podatkovne baze MySQL
Uporaba MySQL-a je v osnovni različici brezplačna, če pa želimo podporo s strani
proizvajalca, imamo možnost nakupa tudi takih paketov. Glede na izbran paket nam začnejo
odpravljati težave/napake in nam s tem omogočijo kar se da hitro vzpostavitev delujočega
sistema. Take pakete običajno potrebujejo predvsem v večjih podjetjih. Primerjava paketov je
prikazana na Sliki 5.
Slika 5: Cenik podpore ob uporabi MySQL
3.3. Arhitektura
Vtič za podatkovno procesiranje arhitekture zagotavlja standard za upravljanje in
podporo storitvam, ki so skupne v vseh osnovah podatkovnega procesiranja. Le-to ima
komponente strežniške podatkovne baze, ki dejansko opravlja delo na osnovi podatkov, ki so
shranjeni na fizični ravni strežnika. Ta učinek in modularna arhitektura zagotavljata veliko
korist za tiste, ki želijo, da se njihova aplikacija uporablja za:
o skladiščenje podatkov,
o obdelavo transakcij,
o visoke razpoložljivosti itd.
Predvsem pa imajo prednost vmesniki in storitve, ki so neodvisni od katerega koli
podatkovnega procesiranja. Vloga programerja aplikacije in DBA v povezavi z MySQL
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 17
podatkovno bazo se nanaša na povezljiv API in vse storitve, ki so nad podatkovnim
procesiranjem. Če se pri aplikaciji naredijo spremembe, ki zahtevajo dodane spremembe na
enem ali več dodatnih podatkovnih procesiranjih, se doda podporo novim potrebam. Torej ni
pomembno, ali se naredijo programske spremembe ali pa le spremembe v postopku, ki so
potrebne za delovanje, v vsakem primeru ima MySQL tako zmogljiv in enostaven API, da je
to mogoče. Arhitektura MySQL strežnika je vidna na sliki 6. [6]
Slika 6: Arhitektura MySQL strežnika[6]
Kot lahko vidimo na Sliki 6, obstaja tudi večje število MySQL načinov hranjenja, ki se
lahko uporabljajo s podatkovno bazo MySQL. Nekateri najbolj pogosti načini vključujejo:
o MyISAM - privzet način hranjena podatkov, ki se največkrat uporablja na internetu,
pri skladiščenju podatkov in v drugih okoljih.
o Pomembno je vedeti, da je možno privzeto nastavitev spremeniti s konfiguracijo
STORAGE_ENGINE spremenljivke.
o InnoDB – uporabljajo se za obdelavo transakcijskih zahtevkov, številne značilnosti
vključujejo ACID transakcije podporo.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 18
o BDB - alternativa transakcija InnoDB, ki podpira COMMIT (izvedi), ROLLBACK
(vrni podatke) in tudi druge transakcijske funkcije.
o Memory - shranjuje vse podatke v RAM za zelo hiter dostop v okoljih, ki zahtevajo
hiter pogled referenčnih in drugih podobnih podatkov.
o Merge - omogoča MySQL DBA ali razvijalcu, da združi logične skupine v skupen niz
enakih MyISAM tabel in ustvari referenco na ta objekt. To je dober način v VLDB
okoljih za skladiščenje podatkov.
o Arhiv - zagotavlja odlično rešitev za shranjevanje in pridobivanje velikih količin
referenčno-zgodovinskih, arhiviranih ali varnostno revizijskih informacij.
o Federativnimi - nudi sposobnost povezovanja ločenih MySQL strežnikov za
ustvarjanje ene logične podatkovne baze iz številnih fizičnih strežnikov. Zelo dobro za
distribuirane ali podmnožico organizacijskih shranjevalnih (data mart) okolij.
o Cluster / NDB - je nakopičen podatkovni način v MySQL, ki je še posebej primeren za
aplikacije z visoko zmogljivimi tehničnimi potrebami, ki zahtevajo tudi najvišjo
možno stopnjo odzivnosti in razpoložljivosti.
3.4. Tabele
Tabele lahko naredimo na 2 načina, preko uporabniškega vmesnika (phpMyAdmin) ali
pa z izvršitvijo sql-a, ki kreira tabelo. Primer je videna v izvorni kodi 7.
CREATE TABLE `DRZAVA` (
`IDDRZAVA` int(11) NOT NULL auto_increment,
`NAZIV` varchar(50) NOT NULL,
`OPIS` text,
`STATUS` int(11) NOT NULL default '0',
PRIMARY KEY (`IDDRZAVA`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Izvorna koda 7: Izdelava tabele
- CREATE TABLE kreiramo tabelo in mu dodelimo poljubna polja
- NOT NULL polje ne sme biti prazno
- auto_increment avtomatično povečevanje polja
- int,varchat,text tipizirana polja
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 19
- PRIMARY KEY - primarni ključ tabele
Vnos podatkov v tablo DRZAVA je prikazan v izvorni kodi 8.
INSERT INTO `DRZAVA` (NAZIV, OPIS ,STATUS) VALUES('Slovenija', 'Prelepe država z veliko gora in
morja', 1);
Izvorna koda 8: Sql za vstavitev podatkov v tabelo
Posodobitev vsebine izbranega zapisa je prikazan v izvorni kodi 9.
UPDATE DRZAVA SET STATUS = 0 WHERE IDDRZAVA = 1
Izvorna koda 9: Sql za posodobitev polja v bazi
Izbris izbranega zapisa, je prikazan v izvorni kodi 10.
DELETE FROM DRZAVA WHERE IDDRZAVA = 1
Izvorna koda 10: Sql za izbris zapisa v bazi
Izpis vseh zapisov v tabeli DRZAVA, je prikazan v izvorni kodi 11.
SELECT IDDRZAVA, NAZIV,STATUS FROM DRZAVA WHERE STATUS = 1
Izvorna koda 11: Sql za poizvedbo na bazi
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 20
Rezultat izpisa iz tabele DRZAVA je prikazan na Sliki 7:
Slika 7: Izpis podatkov iz tabele
3.5. Povezovanje MySQL baze s PHP skripto
Podatki se običajno vnesejo v podatkovno zbirko preko HTML vnosne forme. Ta vnosna
forma pa ob kliku na vnos kliče PHP skripto, ki se poveže z bazo in izvrši vnos. Pred vnosom
se lahko pojavijo še sledeči problemi:
o napačno uporabniško ime in geslo do dostopa PB,
o napačna podatkovna baza,
o napačno povpraševanje/izvedba.
Vsako izmed teh napak lahko prikažemo uporabniku »prijazno«. Primer vnosne forme za
vnos držav z imenom vnosDrzave.html je prikazan v izvorni kodi 12.
<html>
<head>
<title>Vnos držav!</title>
</head>
<body>
<h1>Vnesi državo</h1>
<form action="vnosDrzave.php" method="POST">
Ime države <input type="text" name="drzava" /><br />
Opis <input type="text" name="opis" /><br />
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 21
<input type="submit" value="Vnesi" />
</form>
</body>
</html>
Izvorna koda 12: Vnosna forma
Ob kliku na Vnesi pa se izvede php-koda. Primer je prikazan v izvorni kodi 13.
mysql_connect ('localhost','test','test') or die('Napaka!');
mysql_select_db ('drzave') or die('Napaka!');
mysql_query("SET NAMES 'utf8'");
$ime = $_POST['drzava'];
$opis = $_POST['opis'];
if($ime != '')
{
$sql = "INSERT INTO DRZAVA (NAZIV, OPIS ,STATUS) VALUES('$ime', '$opis', 1)";
mysql_query($sql);
echo 'Državo si vnesel uspešno!';
}
else
echo 'Potrebno je vnesi ime države.';
Izvorna koda 13: Vnos podatkov v bazo
3.6. Prednosti podatkovne baze MySQL
Predstavil bom prednosti MySQL podatkovne baze, ki je zelo razširjena in jo
uporablja veliko aplikacij:[23]
o Je enostaven za razumevanje in učenje.
o Podpira zelo veliko podatkov z več kot 50 milijoni vrstic.
o Združljiva je z večino operacijskih sistemov (Unix, Windows …).
o Je prosta za uporabo pod licenčnimi pogoji GNU GPL. Lahko je prilagojena,
da ustreza individualnim zahtevam, in osebno prilagojena v skladu s pogoji uporabe.
o Ima močno skupnost uporabnikov.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 22
3.7. Slabosti podatkovne baze MySQL
Kot vsaka tehnologija ima tudi MySQL nekaj slabosti, ki jih bomo navedli. Slabosti
MySQL podatkovne baze:[24]
o Pomanjkanje nekaterih SQL funkcij.
o Pomanjkanje temeljitega testiranja na nekaterih platformah.
o Težavnost dela z izvorno kodo.
3.8. Konkurenca MySQL podatkovne baze
Razvijalec se lahko, glede na potrebe in izkušnje, odloči za primerno. Glavni
konkurenti MySQL podatkovnih bazi so:
o MsSql,
o Oracle,
o PostgreSQL,
o DB2,
o Microsoft Access.
MsSql in Oracle sta plačljivi razli čici, PostgreSQL pa je, tako kot MySQL, brezplačen.
4. OPIS TEHNOLOGIJE AJAX
AJAX (Asynchronous JavaScript and XML) je skupina medsebojno povezanih
spletnih razvojnih tehnik, uporabljenih za ustvarjanje interaktivnih spletnih aplikacij. Z
AJAX-om si lahko spletne aplikacije izmenjujejo podatke s strežnikom asinhrono v ozadju,
brez potrebe po ponovnem nalaganju strani. S tem je mogoče tekoče in hitrejše spremljanje ter
spreminjanje vsebine na spletni strani. Podatki se prenašajo s pomočjo XMLHttp objektov ali
pa s pomočjo Remote Scripting-a (v starejših brskalnikih, ki ne podpirajo Ajax tehnologije).
Uporaba AJAX tehnologij je značilna za WEB 2.0. Kljub imenu uporaba tehnologij Javascript
in XML ni pogoj za izvajanje Ajax-a.[8]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 23
Ajax aplikacije dajejo vtis, kot da v celoti tečejo na računalniku uporabnika. Običajna
spletna aplikacija za vsako spremembo na strani pošlje HTTP zahtevo, strežnik pa kot
odgovor pošlje celotno stran. Brskalnik mora zato osvežiti celotno stran, s tem pa pride do
motečega obnavljanja strani. Spletna aplikacija je zato počasna in ni podobna namiznim
aplikacijam. Grafični primer je na Sliki 8. [8]
Ajax aplikacije so prirejene za generiranje poizvedb za strežnik, tako da pošljejo samo
tiste podatke, ki jih dejansko potrebujejo. Klic se opravi kot asinhrona komunikacija, torej
medtem ko aplikacija čaka na podatke iz strežnika, lahko uporabnik spletno stran nemoteno
uporablja. Ko so podatki pripravljeni, določena JavaScript funkcija prikaže podatke na strani,
brez potrebe po ponovnem nalaganju. Grafični primer je prikazan na Sliki 9. [8]
Posledica tega je uporabniški vmesnik, ki se veliko hitreje odziva na vnose uporabnika.
Razlog za vpeljavo te tehnologije je tudi, da se med odjemalcem (brskalnikom) in strežnikom
prenese veliko manj podatkov in da poteka nalaganje podatkov asinhrono. Poleg tega se
zmanjša obremenitev spletnega strežnika, ker se veliko obdelave lahko naredi na strani
odjemalca. [8]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 24
Slika 8: Standardna komunikacija brskalnik /
strežnik
Slika 9: Asinhrona komunikacija brskalnik /
strežnik
4.1. Tehnologija AJAX in tehnologija WEB 2.0
WEB 2.0 je izraz, ki se pogosto uporablja za opisovanje najbolj "modernih" spletnih
strani. Vendar to ne sme biti nov koncept za spletne razvijalce. WEB 2.0 je dejansko
konsolidacija številnih obstoječih tehnologij, ki nam omogočajo bogate interaktivne
uporabniške izkušnje preko spleta. Primeri WEB 2.0 tehnologije vključujejo naslednja
področja (vendar niso omejeni nanje):
o Bogate internetne aplikacije (RIA), ki vključujejo AJAX, Adobe Flash,
Silverlight in Moonlight
o Spletne storitve
o Bloge
o Wikije
o Socialno mreženje
o Socialne zaznamke (Social Bookmarking)
o RSS/Atom
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 25
Pred začetkom uporabe WEB 2.O na internetu so bile spletne strani pogosto
osredotočene samo na zagotavljanje podatkov uporabnikom. Uporabnik preprosto zahteva
stran, si jo ogleda, odpre drugo stran in si jo ogleda itd.
V nasprotju z vzorci in tehnikami za WEB 2.0 so vse o uporabniški izkušnji z
interneta: AJAX in spletne storitve za bogate, učinkovite uporabniške izkušnje, spletni
dnevniki, wikiji, socialna omrežja in socialni zaznamki za sodelovanje in RSS/Atom, tako da
se lahko uporabniki "naročijo" na podatke.
Ker se tehnologije, kot so AJAX, razvijajo in so sprejete v velikem obsegu na spletu,
postaja WEB 2.0 tehnologija hitro pričakovana uporabniška izkušnja na internetu. Dober
primer je, kako Google vključuje AJAX - aplikacije, kot so zemljevidi, dokumenti, koledarji,
prav tako mu sledi Microsoft s svojimi aplikacijami, kot so hotmail, windowos live aplikacije
itd. Ko bodo uporabniki začeli uporabljati tovrstne aplikacije v polni meri, bodo pričakovali,
da se bodo tudi ostale aplikacije razvile s takimi/podobnimi funkcionalnostmi.[27]
4.2. Zgodovina
Pojem Ajax je leta 2005 skoval in prvič omenil Jesse James Garrett v svojem članku
Ajax: A New Approach to Web Aplications. Tehnologije, na katerih temelji, so se začele
razvijati že v letu 1996, ko je podjetje Microsoft v svojem spletnem brskalniku Internet
Explorer predstavilo konstrukt IFrame. V letu 1998 Microsoft predstavi Remote Scripting,
kjer podatke bere javanski Applet, s katerim komunicira odjemalec s pomočjo programskega
jezika JavaScript. Leta 1999 Microsoft ustvari XMLHttpRequest objekt kot kontrolnik
ActiveX v brskalniku Internet Explorer 5.0, čemur so kmalu sledili ustvarjalci brskalnikov
Mozilla in Safari. Aprila 2006 pa je konzorcij W3C (World Wide Web Consortium) pripravil
prvi osnutek specifikacije Ajax z željo ustvariti uradni standard za spletne strani. [9]
Microsoft je prvi implementiral XMLHttpRequest objekt v Internet Explorerju 5 za
Windows kot ActiveX objekt. Inženirji na Mozilla projektu so implementirali kompatibilno
verzijo za Mozilla 1.0 (in Netscape 7). Apple je naredil isto s Safari 1.2. Podobna
funkcionalnost je bila obravnavana in predlagana W3C standardom (Document Object Model
(DOM) Level 3 Load and Save Specification.). V tem času narašča podpora za
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 26
XMLHttpRequest objekt, kar pomeni, da je postal splošni standard, ki ga bo verjetno
potrebno podpreti tudi po W3C specifikaciji. Postal bo dokončen in začel se bo
implementirati v vseh brskalnikih. [15]
Značilno zaporedje operacij ob delu z XMLHttpRequest: [16/str42/2/Using the
XMLHttpRequest Object]
o z JavaSriptom ustavimo nov XMLHttpRequest objekt,
o uporabi XMLHttpRequest objekt, da vstavi asinhron klic do strežnika, definira
klice funkcij, ki se bodo izvršili avtomatično, ko bo strežnik sprejel odziv,
o ukvarjajo se s strežnikom in klicnimi funkcijami,
o vrne se na korak 2.
Izraz Ajax je skupek spletnih tehnologij, ki se lahko uporabljajo za izvajanje spletnih
aplikacij, ki komunicira s strežnikom v ozadju, brez poseganja v trenutno stanje na stran. V
članku Jesseja Jamesa Garretta je pojasnjeno, da so potrebne naslednje tehnologije:[10]
o XHTML in CSS za predstavitev,
o Document Object Model(DOM) za dinamičen izpis in interakcijo s podatki,
o XML in XSLT za izmenjavo, manipulacije in izpis podatkov,
o XMLHttpRequest objekt za asinhrono komunikacijo,
o JavaScript, ki povezuje vse te tehnologije.
Nabor združljivih tehnologij s tehnologijo AJAX je prikazan na Sliki 10.
Slika 10: Nabor združljivih tehnologij
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 27
4.3. Document Object Model (DOM)
Document Object Model (DOM) omogoča dostop do poljubnega upravljanja -
dodajanja, brisanja in premikanja - vseh slogov, lastnosti in elementov v dokumentu. Dostop
je mogoč prek vseh programskih jezikov v brskalniku, tudi Java, Javascript / ECMAScript /
JScript in VBScript (MSIE samo). DOM je bil podprt na začetku v IE 5, NS6 in Firefox. [11]
Deluje na podlagi vozlišč in ne omogoča principa »zamenjaj tretjo besedo xxx v 2. odstavku z
drugo besedo yyyy v 3. odstavku« . Primer DOM strukture je prikazan na Sliki 11.
Slika 11: Primer DOM strukture
Do elementov v DOM strukturi lahko dostopamo z Javascriptom na način
document.getElementById (ime elementa) ali pa document. getElementsByName (ime
elementa) in mu nastavljamo poljubne sloge, elemente ... Primer je prikazan v izvorni kodi 14.
function showHide(povejP) {
if (document.getElementById(povejP)) {
if (document.getElementById(povejP+'-pokaz').style.display != 'none') {
document.getElementById(povejP+'-pokaz').style.display = 'none';
document.getElementById(povejP).style.display = 'block';
document.getElementById(povejP+'_pokaz').style.display = 'none';
}
else {
document.getElementById(povejP+'-pokaz').style.display = 'inline';
document.getElementById(povejP).style.display = 'none';
document.getElementById(povejP+'_pokaz').style.display = 'inline';
}
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 28
}
}
Izvorna koda 14: Spreminjanje slogov preko DOM
4.4. Tehnologija XML in tehnologija XSLT
XSLT jezik je bil podan s strani World Wide Web Consortium (W3C). Prva verzija je
bila predstavljena 16. novembra 1999. XSL določa opredelitev jezika XML za predstavitev
podatkov in transformacijo. Podatke predstavi na enak način (v istem formatu z istimi stili).
Transformacija pomeni razčlenjevanje vhodnega dokumenta (XML) v drevo vozlišč in nato
preveri izvorni drevo v rezultat. Transformacija je preoblikovanje podatkov v želeno obliko.
Zaradi teh funkcij služi dvema ločenima namenoma, XSLT je bila predlagana in kasneje
sprejeta kot samostojni standard za transformacijo XML-jev. [12]
4.4.1 XSLT Procesor
XSLT procesor kot vhodni podatek dobi drevesno strukturo in generira novo drevesno
strukturo kot izhodni podatek. Operacije XLT procesorja so prikazane na Sliki 12.
Slika 12: Operacije XSLT procesorja [34]
Vhodna struktura se pogosto proizvaja z razčlenjevanjem XML dokumentov in izhodna
struktura bo pogosto serializirana v drug XML dokument. XSLT procesor sam manipulira
drevesno strukturo, ne pa tudi XML znakovni niz. Ta koncept je ključnega pomena za
razumevanje izvajanja bolj zapletene preobrazbe. To pomeni, da razlikovanje vira dokumenta,
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 29
ki je nepomemben za drevesno strukturo, ni dostopno XSLT procesorju. Na primer, ni
mogoče uporabiti različne obdelave, glede na to, ali so atributi zaprti z enojnim ali dvojnim
narekovajem, ker se štejejo za različne predstavitve istega osnovnega dokumenta. [12]
Vhodna datoteka XML (primer izvorna koda 15) za XSLT obdelavo uporabi kot primer
izvorno kodo 16. Rezultat XSLT procesiranja pa je primer izvorne kode 17. Na primeru se
vidi, da lahko s XSLT transformacijo prikažemo na poljuben način s poljubnimi dodatki
(izgledom, vključitvijo xhtml-ja ...).
<Rezultati skupina="A">
<tekma>
<datum> 10-Jun-1998 </ datum>
<ekipa igralci="2"> Brazilija </ ekipa>
<ekipa igralci="1"> Škotska </ ekipa>
</ tekma>
<tekma>
<datum> 10-Jun-1998 </ datum>
<ekipa igralci="2"> Maroko </ ekipa>
<ekipa igralci="2"> Norveška </ ekipa>
</ tekma>
<tekma>
<datum> 16-Jun-1998 </ datum>
<ekipa igralci="1"> Škotska </ ekipa>
<ekipa igralci="1"> Norveška </ ekipa>
</ tekma>
<tekma>
<datum> 16-Jun-1998 </ datum>
<ekipa igralci="3"> Brazilija </ ekipa>
<ekipa igralci="0"> Maroko </ ekipa>
</ tekma>
<tekma>
<datum> 23-Jun-1998 </ datum>
<ekipa igralci="1"> Brazilija </ ekipa>
<ekipa igralci="2"> Norveška </ ekipa>
</ tekma>
<tekma>
<datum> 23-Jun-1998 </ datum>
<ekipa igralci="0"> Škotska </ ekipa>
Rezultat skupine A
Brazilja proti Škotski
Igrano dne: 10-jun-1998
Rezultat: Brazilija 2 , Škotska 1
Maroko proti Norveška
Igrano dne: 10-jun-1998
Rezultat: Maroko 2 , Norveška 2
Škotska proti Norveška
Igrano dne: 16-jun-1998
Rezultat: Škotska 1 , Norveška 1
Maroko proti Norveška
Igrano dne: 16-jun-1998
Rezultat: Brazilija 3, Maroko 0
Izvorna koda 16: Rezultat procesiranja XML-ja z
XSLT-jem [34]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 30
<ekipa igralci="3"> Maroko </ ekipa>
</ tekma>
</ Rezultati>
Izvorna koda 15: Vhodni podatek (XML
struktura) [34]
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template tekma="rezultat">
<html>
<head><title>
Rezultat skupine <xsl:value-of select="@skupina"/>
</title></head>
<body><h1>
Rezultat skupine <xsl:value-of select="@skupina"/>
</h1>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template tekma="rezultat">
<h2>
<xsl:value-of select="team[1]"/> proti <xsl:value-of
select="team[2]"/>
</h2>
<p>Igrano dne: <xsl:value-of select="datum"/></p>
<p>Rezultat:
<xsl:value-of select="team[1] "/>
<xsl:value-of select="team[1]/@igralci"/>,
<xsl:value-of select="team[2] "/>
<xsl:value-of select="team[2]/@igralci"/>
</p>
</xsl:template>
</xsl:transform>
Izvorna koda 17: XSLT tranformacija [34]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 31
4.5. XMLHttpRequest
4.5.1 XMLHttpRequest (XHR) zahteva
XMLHttpRequest (XHR) je DOM API, ki ga lahko uporabljajo JavaScript in drugi
brskalniki skriptnega jezika za prenos XML in drugih besedilnih podatkov med spletnim
strežnikom in brskalnikom. Podatki vrnjeni iz XMLHttpRequest so pogosti klici, ki
komunicirajo z bazo. XMLHttpRequest se lahko, poleg XML, uporablja za prenos podatkov
še v druge formate, kot so HTML, JSON ali golo besedilo. XMLHttpRequest je pomemben
del AJAX web razvoja tehnike in ga uporablja veliko spletnih mest za izvajanje odzivne in
dinamične spletne aplikacije. Primeri spletnih aplikacij, ki uporabljajo XMLHttpRequest, so
Google Maps, Windows Live's Virtual Zemlje, MapQuest dinamični zemljevid vmesnik,
Facebook in mnogi drugi. [14]
XMLHttpRequest je objekt, ki omogoča JavaScriptu, da izvaja asinhrone zahtevke s
HTTP strežnikih zahtev. Ta funkcija nam omogoča, da naredimo HTTP zahtevek, prejet
odgovor pa ne osveži celotne strani, ampak se izvede povsem v ozadju, s čimer uporabnik ne
vidi novega nalaganja celotne strani, ampak le vsebino, ki smo jo želeli prikazati/spremeniti.
To je zelo pomembno, saj s tem zagotovimo, da je uporabniški del odziven in uporabniku ni
potrebno čakati zaradi nalaganja novih podatkov. [16] Primer AJAX interakcije z
XMLHttpRequest objektom je prikazan na Sliki 13.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 32
Slika 13: XMLHttpRequest [35]
4.5.2 Ustvarjanje XMLHttpRequest objekta
Za ustvarjanje XMLHttpRequest objekta je potrebno najprej preveriti, če ga brskalnik
podpira. Obstajata 2 vrsti XMLHttpRequest objektov: ActivX in XHR. Razlika je v tem, da je
ActiveX podprt s strani Internet Explorer-ja od različice 5 naprej, XHR pa uporablja lasten
JavaScript XHR objekt in je podprt s strani sledečih brskalnikov:
o Mozilla,
o Firefox,
o Netscape,
o Opera,
o Safari.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 33
Primer ustvarjanja XMLHttpRequest objekta je prikazan v izvorni kodi 18.
function ustvariObjekt()
{
var xhp;
try
{
//ustvarjen objekt za vse ostale razen IE
xhp = new XMLHttpRequest(); //ustvarjen objekt
}
catch(e)
{
try{
//ustvarjen objekt za IE
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
catch(e)
{}
}
if(xhp == null)
alert('Objekt ni ustvarjen');
else
alert('Objekt je ustvarjen');
}
Izvorna koda 18: Ustvarjanje objekta XMLHttpRequest
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 34
4.5.3 Metode objekta XMLHttpRequest
V Tabeli 4.1 so prikazane metode, ki jih podpirajo Mozilla, Safari in Windows IE 5 ali
novejši brskalniki.
Tabela 4.1. XMLHttpRequest metode[16] Metode Opis
abort() Prekinitev trenutne zahteve.
getAllResponseHeaders() Vrne vrednost vseh HTTP zaglavij
(Headers).
getResponseHeader(»headerName«) Vrne vrednosti izbranega HTTP zaglavja.
open("method", "URL"[, asyncFlag[,
"userName"[, "password"]]])
Vzpostavitev povezave s strežnikom.
Metode so lahko: "GET", "POST" ali
"PUT". Url je lahko relativen ali absoluten.
send(content) Pošlje HTTP zahtevo do strežnika, opcijsko
DOM objekt ali besedilo.
setRequestHeader(label, value) Doda vrednost Labele v http zaglavje
(glavo).
Od metod v Tabeli 4.1 sta najbolj uporabni metodi open() in send(). Open() postavlja
temelje, ki jih potrebujemo za prihajajoče delovanje. Dva zahtevana parametra za HTTP način
delujeta na zahtevo in URL povezavo. Za metode parametra uporabimo "GET", v primeru da
želimo, da se prenesejo podatki preko Url-ja. "POST" pa uporabimo v zaglavju. Preko metode
"POST" lahko pošljemo neomejeno število podatkov, preko "GET" pa le do 512 bajtov. URL
je lahko popoln ali pa relativen. Tretji parameter je logična vrednost, ki nadzoruje, ali bo
prihodnja transakcija uporabila asinhroni način. Privzeta vrednost je »true«, kar pomeni, da se
skripta za obdelavo izvaja takoj po send() metodi, brez čakanja na odziv. Če se nastavi
vrednost na »false«, skripta počaka na zahtevo, ki je bila poslana na strežnik. Čeprav se zdi
dobro, da počaka na odgovor pred nadaljevanjem obdelave, se je potrebno zavedati tveganja v
primeru, če skripta "obvisi". Pojavijo se lahko težave z omrežjem ali pa strežnikom. V tem
primeru se transakcija prepreči oz. se ne izvede. Varnejši način je, da se pošlje asinhrono in
vključi dogodek »onreadystatechange« za zahtevo objekta. [16/str42/2/Using the
XMLHttpRequest Object]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 35
4.5.4 Lastnosti XMLHttpRequest
V Tabeli 4.2 so prikazane lastnosti, ki jih vsebuje XMLHttp zahteva.
Tabela 4.2. XMLHttpRequest lastnosti [16] Lastnosti Opis
onreadystatechange Lovilec izjem, ki se sproži ob vsaki spremembi Request objekta.
readyState Stanja zahtev (Request):
0 - objekt ni inicializiran (neaktiven), uninitialized
1 - objekt se nalaga
2 - objekt je naložen
3 - objekt je interaktiven
4 - objekt je inicializiran
responseText Odziv s strežnika kot string.
responseXML Odziv s strežnika kot DOM XML objekt.
status Številčna oznaka, ki jo vrne strežnik, kot je 404 za "Not Found" ali
200 za "OK"
statusText Tekstovna verzija HTTP statusne kode.
4.6. Konkuren čne tehnologije
Tehnologija AJAX ima kar nekaj konkurence, vendar pa je glede na razširjenost in
uporabnost na prvem mestu. Konkurenčne tehnologije AJAXU so:[28]
o FLASH,
o SVG,
o XUL,
o XAML,
o Java applet.
AJAX tehnologiji oz. skupku teh tehnologij resno sledi le FLASH, saj ga ima
nameščenega že velik odstotek spletnih uporabnikov. Je multimedijska platforma, ki jo razvija
in distribuira Adobe Systems.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 36
o SVG - Scalable Vector Graphics pomeni usmerljiva vektorska grafika. W3C jo
je že sprejel za standard, vendar pa še vedno ni podprta v vseh brskalnikih. Zato je
potrebno namestiti dodatke, katere pa ponujata Adobe SVG Viewer ali Corel SVG
Viewer. [29]
o XUL - XML User Interface Language je označevalni jezik, ki je bil razvit s
strani Mozille. Njegov namen je, da se na hiter način izdela grafični vmesnik oz.
spletno aplikacijo. [30]
o XAML - Extensible Application Markup Language temelji na jeziku XML, ki
ga je razvil Microsoft, vključen pa je že v NET Framwork 3.0. [31]
o Java applet je dostavljen uporabniku v obliki Java bytecode. Java applets lahko
vodijo spletni brskalniki, ki uporabljajo Java Virtual Machine (JVM) ali
AppletViewer. [32]
4.7. Prednosti in slabosti tehnologije AJAX
Predstavil bom prednosti in slabosti tehnologije AJAX.
Prednosti so: [27]
o zmanjšan prenos podatkov,
o nalaganje strani na zahtevo,
o storitev temelji na spletnem razvoju,
o bogate uporabniške izkušnje.
Slabosti so: [27]
o neupoštevane brskalnikove funkcionalnosti (ko uporabnik klikne na gumb
nazaj ali osvežitev),
o poslovna logika lahko obstaja v JavaScript,
o otežen test z avtomatiziranimi orodji.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 37
5. OPIS TEHNLOGIJE XML
Jezik XML (Extensible Markup Language) je izpeljanka jezika SGML (Standard
Generalized Markup Language), ki se uporablja za kreiranje in označevanje tehnične (in tudi
druge) dokumentacije. Iz jezika SGML so na primer izvedeni tudi CML (Chemical Markup
Language), VML(Vector Markup Language), MathML(Mathematical Markup Language) in
še vrsta drugih sorodnih jezikov. XML je metajezik - jezik, s pomočjo katerega se definira
konkreten označevalni jezik, neposredno uporaben za označevanje določene vrste
dokumentov. Dokumenti XML imajo vlogo vsebnikov, v katetre se shranjujejo podatki. Po tej
plati so podobni tablama v relacijski podatkovni bazi in objektom v objektno usmerjeni
podatkovni bazi. Metajezik obsega množico sintaktičnih pravil za kreiranje konkretnega
označevalnega jezika. Po svoji obliki je XML samoopisen jezik, ki z uporabo oznak
pojasnjuje pomene podatkov v dokumentu. Oznake, s katerimi se dokument označi, se smejo
izbrati poljubno. Smiselno pa je, da hkrati odražajo tudi pomen podatka, tako da ga lahko
hkrati razumeta človek in tudi računalnik oz. programska oprema. [17]
5.1. Oznake
Vrednost podatka, ki ga želimo zapisati v dokument, se mora nahajati med dvema
oznakama - začetno oznako in končno oznako (tag). Par oznak, med katerima se nahaja
vrednost, imenujemo element:
<Ime>Peter</Ime>
<priimek>Kovač</priimek>
Tako predstavljata <Ime> in </Ime> začetno iz končno oznako, Peter pa je vrednost
elementa. XML razlikuje med velikimi in malimi črkami, zato mora biti začetna in končna
oznaka zapisana na enak način. Sintaktično pravilno zapisane oznake so tudi:
<ime>Petar</ime>
<PRIImek>Kovač</PRIImek>
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 38
V dokumentu se razni elementi lahko shranjujejo tudi kot atributi. Če naj bo v
dokumentu shranjen element (npr. knjiga), ki mu pripada eden ali več atributov (npr: ISBN,
leto izdaje), je zapis naslednji:
<Knjiga ISBN="961.6046-02-0" leto="1995" />
V zgornjem zapisu je knjiga element, ISBN in leto izdaje pa sta atributa. Omenjeni
razpored vrednosti in atributov v oznake se imenuje tudi "prazna oznaka", ker ne obsega tudi
vrednosti elementa. Atribut je sestavljen iz para ime-vrednost, med njima pa stoji enačaj.
Pri poimenovanju oznak veljajo naslednja pravila:
o imena elementov se smejo pričeti s poljubno črko ali podčrtanjem;
o po prvem znaku lahko sledijo črka, številke, pike, pomišljaji, podčrtaji ali
dvopičja;
o imena elementov ne smejo vsebovati kontrolnih znakov (kot so npr. white
space, carige return, line feed, form feed);
o imena elementov se ne smejo pričeti z imenom XML ali xml, ker je to ključna
beseda, ki se uporablja le v posebnih primerih, npr. pri deklaracijah
dokumenta. [17]
5.2. Deklariranje dokumenta
Dokument se prične z deklaracijo XML, ki obsega verzijo dokumenta XML, podatek o
samostojnosti dokumenta ter način kodiranja:
<?xml version="1.0" encoding="UTF-8" standaolne="yes" ?>
Za naše kraje je primerno npr. kodiranje ISO-8859-2, ki je prava podmnožica
kodiranja UTF-8. Določili standalone in encoding sta praviloma opcijski, vendar ju je v
nekaterih primerih potrebno uporabiti. Določilo »standalone="yes"« pomeni, da je dokument
povsem samostojen, določilo »standalone="no"« pa pomeni, da je dokument vezan na kakšen
drug dokument, npr. na pripadajoči DTD (Document Type Defination). Iz predhodno opisanih
fragmentov se lahko sestavi samostojen dokument po imenu Revija. Revija je hkrati tudi
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 39
korenski element, ki zajema vse druge elemente v dokumentu. [17] Struktura XML
dokumenta je prikazana v izvorni kodi 19.
<?xml version="1.0" encoding="UTF-8" standaolne="yes" ?>
<Revija>
<avtor>
<Ime>Peter</Ime>
<Priimek>Kovač</Priimek>
<knjiga ISBN="961-6046-02-0" leto="1995"/>
</avtor>
<avtor>
<Ime>Miha</Ime>
<Priimek>Perač</Priimek>
<knjiga ISBN="0-6046-02-0" leto="1995"/>
</avtor>
</Revija>
Izvorna koda 19: Struktura XML dokumenta
5.3. Dobro oblikovan dokument
Dokument sodi med dobro oblikovane, če v njem ni sintaktičnih napak. Nekaj
poglavitnih napotkov, ki omogočajo kreiranje dobro oblikovanih dokumentov:
o dokument se mora pričeti z deklaracijo XML;
o elementu, ki vsebuje podatke (vrednost), morata pripadati začetna in končna
oznaka;
o element, ki ne vsebuje podatkov (vrednosti) pač pa le atribute, se nahaja v
posamični oznaki, ki se pričnejo z »<« in končajo z »/>« v tem primeru
govorimo o prazni oznaki ali o elementu brez podatkov;
o dokument mora obsegati natanko en element, ki vsebuje vse ostale elemente -
tak element se imenuje korenski element;
o element je lahko ugnezden v drug element;
o vrednost atributa se mora nahajati v dvojnih narekovajih;
o obstajajo naslednje znakovne entitete, ki lahko po potrebi nadomestijo osnovne
simbole:
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 40
Entiteta Simbol Pomen
> > Večji
< < Manjši
& & Konjunkcija
' ' Apostrof
" '' dvojni narekovaj
Ker imata začetna in končna oznaka »< >« svoj rezerviran pomen, ki se uporablja pri
zapisovanju oznake, je potrebno v primeru uporabe simbolov "večji" in "manjši" znotraj
oznake nadomestiti simbol "večji" z znakovno entiteto ">" in simbol "manjši" z znakovno
entiteto "<". Podobna pravila veljajo tudi za enojni in dvojni narekovanj ter konjunkcijo.
[17]
5.4. Komentarji
XML podpira tudi komentarje, podobne kot so HTML komentarji. Relevantna oblika
komentarja, je prikazana v izvorni kodi 20. [18/225/Comments]
<!-- To je komentar v XML-ju -->
Izvorna koda 20: Komentar v XML-ju
Nerelevantna oblika komentarja pa je prikazana v izvorni kodi 21.
<!---- To je nerelevanten komentar v XML-ju ---->
Izvorna koda 21: Komentar v XML-ju
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 41
5.5. XML imenski prostor (Namespace)
XML v osnovni uporablja preprosta imena, kot smo prikazali pri prejšnjih primerih.
Problem s preprostimi imeni izvira iz potencialne dvoumnosti. Na primer, če Alice ustvari
nov element, ga bo poimenovala knjiga. Če pa Bob ustvarja različne elemente, se lahko prav
tako zgodi, da bo uporabil element knjiga. V tem primeru lahko pride do zmede, še posebej v
primeru, da se bosta elementa kdaj združila. Odgovor na tovrsten problem je W3C rešil z
uporabo imenskega prostora v XMl-ju, ki omogoča elemente in imena atributov. Identifikator
izgleda ravno tako kot URI. Z dodatnim imenom, Alice in Bob predpono, ni več nobenih
nejasnosti. Uporaba tovrstne rešitve lahko prinese vrsto nejasnosti ob implementaciji in
izvedbi. [18/225/ XML Namespace]
V XML je v okviru določen z imenskim prostorom URI. Ljudje pogosto uporabljajo
HTTP URI z logičnimi imeni, ki vključujejo ime domene, ki določa organizacijo in logičen
potek strukture. Na primer http://example.org/xml/alice/2006/knjige je veljaven imenski
prostor URI. To ne pomeni, da mora biti dokument, ki je na voljo na URL naslovu, to je le
identifikator, čeprav se začne s http:. Kadar delamo z imenskimi prostori, jih je potrebno
sprva vključiti in jim dodeliti predpono, ki se uporablja kot bližnjica XML dokumenta.
Izberemo lahko katerokoli predpono, vendar ne sme biti enaka drugi predponi, ki je že
uporabljena.
Na primer, lahko izberemo:
o anim,
o Alice
o drugo.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 42
Uporaba predpone zahteva posebno sintakso: xmlns:prefix:="uri".
Primer imenskega prostora v XML je prikazan v izvorni kodi 22.
<?xml version=”1.0” encoding=”UTF-8”?>
<knjige xmlns:alice=”http://example.org/xml/alice/2006/knjige”>
<knjiga>
<naslov>Vrba</naslov >
<avtor >France Prešeren</ avtor >
</ knjiga >
</ knjige>
Izvorna koda 22: Imenski prostor v XML
Ta primer ne prikazuje nobene uporabnosti imenskih prostorov. Prikaz uporabnega
primera uporabe imenskega prostora (z uporabo predpone Alice) je prikazan v izvorni kodi
23.
<?xml version=”1.0” encoding=”UTF-8”?>
<alice: knjige xmlns:alice=”http://example.org/xml/alice/2006/knjige ”>
<alice: knjiga >
<alice:naslov> Vrba</alice: naslov >
<alice:avtor > France Prešeren </alice:avtor >
</alice: knjiga>
</alice: knjige >
Izvorna koda 23: Imenski prostor v XML
V tem primeru je možno združiti Bobove elemente v istem dokumentu (Alicinem), brez
zmede, na način, ki je prikazan v izvorni kodi 24.
<?xml version=”1.0” encoding=”UTF-8”?>
<alice: knjige xmlns:alice=http://example.org/xml/alice/2006/knjige
xmlns:bob=”http://example.org/xml/bob /2005/knjige ”>
<alice: knjiga >
<alice:naslov> Vrba </alice:naslov>
<alice:avtor> France Prešeren </alice:avtor>
</alice: knjiga >
<bob: knjiga naslov=”Podvodni mož ”/>
</alice: knjige >
Izvorna koda 24: Imenski prostor v XML
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 43
Imenski prostor je možno uporabiti na kateremkoli elementu, vendar je enostavneje,
da to naredimo na korenskem elementu dokumenta, kar hkrati zagotavlja, da je uporaba vidna
povsod v dokumentu. To je pomembno, ker ni možno uporabiti imenskega prostora z
predpono, razen če obstaja preslikava predpone na elementu, kjer se predpona prikaže na
enem izmed njegovih prednjih elementov.
5.6. Unicode in znakovni nabor
Unicode je standard za računalnike, ki omogoča dosledno manipuliranje z znaki v
vseh jezikih. Unicode predstavlja besedilo kot števila - poznana pa so tudi kot šifrirne točke.
Obstaja točno ena šifrirna točka za znakovni tip - z več kot 1.113.112 šifrirnimi točkami.
Trenutno jih je več kot 96.000 dodeljenih znakov. V teoriji Unicode zahteva 21 bitov, da
zastopa vse njene možne znake, kar v praksi pomeni, da vsak znak zavzema 32 bitov, kar pa
se zdi nekaterim preveč.
XML 1,0 priporoča, da izvajalci podpirajo Unicode, predvsem zadnje dva, UTF-8 in
UTF-16. To zagotavlja, da je z XML mogoče predstaviti podatke v večjezičnosti. Primer je
prikazan v izvorni kodi 25.
<?xml version=”1.0” encoding=”UTF-8”?>
<jeziki>
<jezik xml:lang=”si-sl”>Ta vikend je zelo vroče.</ jezik >
<jezik xml:lang=”en-us”>It’s really hot this weekend.</ jezik >
< jezik xml:lang=”zh-cn”> </ jezik >
< jezik xml:lang=”fr”>Il fait vraiment très chaud ce weekend.</ jezik >
</ jeziki>
Izvorna koda 25: Namespece XML
Uporaba posebnih xml:lang atribut je običajna za določitev človeškega jezika v XML.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 44
5.7. Uporaba XML-ja v praksi
Uporabnost XML-ja v praksi je zelo velika, saj omogoča izpis podatkov v standardno
obliko, ki je neodvisna od platforme in programskega jezika, s katerim se lahko potem ta
XML obdeluje. XML se generira ob določenih urnih intervalih z namenom izpisa podatkov v
naprej dogovorjeno obliko. S tem si zagotovimo vmesni nivo med podatkovno bazo in
uporabnikom, ki želi dostopati do podatkov, ki so v podatkovni bazi. Z XML-jem pa mu
posredujemo samo zanj relevantne/uporabne podatke. XML se lahko nahaja na naslovu, ki je
zaščiten z uporabniškim imenom in geslom. Lahko pa se nahaja tudi na naključnem naslovu,
ki ga ve le uporabnik, kateremu je dostop dodeljen. S takim načinom zaščite se izognemo
nepotrebnim težavam, do katerih bi lahko prišlo, če bi lahko vsi dostopali do podatkov, ki se
nahajajo v XML strukturi.
5.8. Prednosti in slabosti XML-ja
Predstavil bom prednosti in slabosti XML-ja glede na njegovo uporabnost.
Prednosti XML-ja so:
- Učenje XML-ja je še lažje kot pri HTML-ju, z ustreznimi orodji celo ni
potrebno. [25]
- XML omogoča ločitev vsebine od podatkov. Tako ni potrebno spreminjati
obstoječih datotek. [25]
- Iskanje in osnovni zbiri so možni že z eno datoteko. Iskanje je tudi zelo
usmerjeno. [25]
- Podpira Unicode, kar omogoča, da lahko shranjujemo podatke v vseh jezikih.
[26]
- Sprejet je bil na podlagi standardov in je po vsem svetu enak. [26]
- Omogoča validacijo z uporabo shem kot so XSD in Schematron. [26]
- Hierarhična struktura je primerna za večino (vendar ne vse) dokumentov. [26]
- Neodvisna je od platforme in s tem relativno imuna na spremembo tehnologij.
[26]
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 45
Slabosti XML-ja pa so: [26]
- XML sintakse je preveč ali pa zelo veliko glede na binearno predstavitev
podobnih podatkov.
- Podatkovni tipi niso podprti. XML ne določena nobenega posebnega pojma za
"integer", "string", "boolean", "datum" …
- Redundanca lahko vpliva na učinkovitost uporabe shranjevalnih enot, prenosa in
časa izvedbe.
6. SPLETNI PORTAL www.potovalka.si
Za praktičen primer diplomske naloge smo želeli razviti portal, na katerem bi bile
združene turistične ponudbe na enem mestu. Ideja za spletni portal www.potovalka.si se nam
je porodila, ko smo se odpravljali na morje in smo zbirali ponudbe po turističnih agencijah,
kar pa nam je vzelo veliko časa. Zapravljanje časa se je nadaljevalo, ko smo iskali podatke o
razmerah na cestah, o vremenu, kakšno bo tistega dne/tedna, kje se ta kraj sploh nahaja, kako
najhitreje priti do tja .... Tako smo prišli do ideje, da bi naredili portal, kjer bi združili
turistične ponudbe in koristne informacije na enem mestu. S to idejo smo se prijavili na
»Najpodjetniško idejo«, ki jo je organizirala Tovarna Podjemov, in se uvrstili v finale, vendar
nismo zmagali.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 46
6.1. Diagram primerov uporabe
6.1.1 Diagram primerov uporabe uporabnika
Na Sliki 14 so prikazani primeri uporabe, ki jih ima uporabnik, ko obišče portal. Vsak
uporabnik se lahko registrira in s tem pridobi funkcionalnosti, ki jih ima registriran uporabnik.
Slika 14: Diagram primerov uporabe za uporabnika
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 47
6.1.2 Diagram primerov uporabe ponudnika
Ponudnik ima vse funkcionalnosti, ki jih ima uporabnik in še dodatne, katere mu
omogoči administrator. Ponudnik lahko upravlja s svojimi namestitvami, uporabniki in
podatki, ki se navezujejo nanj. Vse to je razvidno iz Slike 15.
Slika 15: Diagram primerov uporabe za ponudnika
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 48
6.1.3 Diagram primerov uporabe administratorja
Administrator ima vse funkcionalnosti, ki jim ima uporabnik in še dodatne možnosti
preverjanja vnosov registriranih uporabnikov, statistike in upravljanje s ponudniki.
Omogočeno mu je tudi ročno zaganjanje skript za obdelavo podatkov ter vnos ponudb preko
XML-jev. Vsi primeri uporabe so razvidni iz Slike 16.
Slika 16: Diagram primerov uporabe za administratorja
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 49
6.2. Arhitekturni na črt
Do spletnega portala www.potovalka.si lahko dostopajo vsi uporabniki, ki imajo
internet. Na portal se lahko povežejo s stacionarnim računalnikom, prenosnikom ali
telefonom. Edini pogoj je, da imajo nameščen spletni brskalnik. Komunikacija med
uporabnikom in spletnim portalom poteka preko HTTP strežnika, ki ima požarni zid. Na
strežniku je nameščen linux operacijski sistem z apache strežnikom in PHP 5. Glede na to, da
je portal potovalka.si napisan v skriptnem jeziku PHP, ga ta strežnik prevede v HTML kodo s
pomočjo podatkov, ki se nahajajo v MySQL podatkovni bazi. V ozadju se izvajajo skripte, ki
se povezujejo z MySQL podatkovno bazo in obdelujejo podatke. Arhitekturni načrt je opisan
na spodnji Sliki 17.
Slika 17: Arhitekturni načrt
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 50
6.3. Načrt izdelave portala
6.3.1 Izbira tehnologij in ponudnika spletnega pros tora
Za izdelavo takega portala smo se morali odločiti, katero tehnologijo bomo uporabljali,
morala pa je biti hitra in finančno ugodna. Programski jeziki, ki so bili v ožjem izboru:
o .Net,
o Php,
o Java.
Baze:
o MsSql,
o Oracle,
o MySQL.
Glede na to, da je bila prioriteta razviti spletni portal na že obstoječem (zakupljenem)
strežniku, je bilo potrebno izdelati analizo, kateri ponudnik ponuja najugodnejšo in najbolj
stabilno kombinacijo. Po forumih smo šli še preverjati, kakšne izkušnje imajo ostali razvijalci
z zakupi prostorov. Po analizi pa smo se odločil za razvoj v Php5, MySQL 5.xxx, strežnik pa
smo najeli pri ponudniku spletnega prostora hitrost.com.
6.3.2 Struktura datotek
Za hiter in učinkovit razvoj je potrebno definirati logično drevesno strukturo map, kjer
se nahajajo datoteke. Datoteke, ki se bodo vključile večkrat, je potrebno umestiti na tako
mesto, do katerega imajo vse strukture in podstrukture možnost dostopa. Razmisliti smo
morali, kakšno bo ime mape/datoteke, da bi čim bolj pripomoglo k boljši uvrstitvi v
iskalnikih.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 51
6.3.3 Umestitev tehnologij v portal
Generiranje spletnih strani se izvaja na zahtevo uporabnika. Uporabnik ob kliku ali
prihodu na stran pošlje zahtevek za PHP stran, poizvedba se lahko sproži sinhrono ali
asinhrono (AJAX). V primeru, da gre za dinamično stran, se pošlje povpraševanje v obliki sql
stavka v MySQL podatkovno bazo, kjer se podatek zapiše, posodobi ali pa ga vrne. Strežnik
nato generira html vsebino in JavaScript, ki se prenese na uporabnikov brskalnik, lahko se
naloži celotna stran ali pa le del strani ob uporabi AJAX tehnologije.
Dodatno delo se izvaja v ozadju, kjer skripta iz vnaprej znanega naslova prenese XML
datoteko s ponudbami in ostalimi informacijami na strežnik. Nato se izvedejo povpraševanja v
MySQL podatkovno bazo, kjer se izve, ali gre za novo informacijo ali pa za že obstoječ
podatek. V primeru, da gre za novo informacijo, se vstavi v ustrezne tabele, drugače pa se
posodobi ali pa ne naredi ničesar, če ni bila zaznana nobena sprememba. Skripta se izvaja ob
določenih intervalih in poskrbi tudi za konsistentnost podatkov, saj nekateri XML-ji nosijo
podatke, ki so v bazi že zavedeni, vendar na nekoliko drugačen način. Te podatke je potrebno
znati ločiti, da ne pride do težav pri kasnejšem prikazu podatkov. Prikaz uporabljenih
tehnologij je na Sliki 18.
Slika 18: Uporaba tehnologij na portalu
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 52
6.4. Specifikacija
Specifikacijo smo izdelali na podlagi analize spletnih strani, ki jih imajo turistične
agencije, in forumov, po katerih so uporabniki spraševali za različne nasvete in informacije.
Zapisovali smo si funkcionalnosti, ki so nas pritegnile in predstavljale dodatno informacijo ob
odločitvi za izbrano ponudbo. Na koncu smo imeli spisek funkcionalnosti, ki bi bile primerne
za portal. Dodali smo še svoje ideje, nekatere obstoječe funkcionalnosti pa smo spremenili.
Na podlagi teh podatkov smo izdelali specifikacijo za portal.
6.4.1 Funkcije za uporabnike
Funkcije portala www.potovalka.si, ki so namenjene uporabniku:
o izpis hotelskih namestitev,
o izpis apartmajskih nastanitev,
o izpis vil,
o izpis hostlov,
o izpis plovil,
o izpis koristih informacij,
o iskanje nastanitev,
o iskanje plovil,
o rezervacija letalskih kart,
o ogled galerij,
o registracija uporabnikov,
o možnost komentiranja vseh ponudb/plovil (registracija),
o objava fotografij (registracija),
o pisanje/branje foruma (registracija),
o pregled vremenskih napovedi,
o prilagojen portal za slabovidne,
o klepet med uporabniki.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 53
6.4.2 Funkcije za ponudnike
Funkcije portala www.potovalka.si, ki so namenjene ponudnikom namestitev/plovil:
o dodajanje/urejanje/brisanje/izpis njihovih namestitev/plovil,
o dodajanje/urejanje/brisanje/izpis uporabnikov, ki imajo dostop do administracije,
o pregled števila klikov na »Podrobnejši ogled turistične ponudbe in rezervacija« po
mesecih/letih,
o urejanje podatkov ponudnika.
6.4.3 Funkcije za administracijo
Funkcije portala www.potovalka.si, ki so namenjene administratorju:
o dodajanje/urejanje/brisanje/izpis ponudnika,
o dodajanje/urejanje/brisanje/izpis uporabnika,
o statistika ob kliku na »Podrobnejši ogled turistične ponudbe in rezervacija« po
mesecih/letih (vse, od izbranega uporabnika),
o izpis/urejanje/brisanje komentarjev in slik,
o statistika obiska,
o urejanje/brisanje/dodajanje reklam,
o ročno poganjanje skript za generiranje XML-jev in obdelavo.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 54
6.5. Podrobnejši opis funkcionalnosti
V nadaljevanju diplomske naloge bomo podrobneje opisali uporabniške
funkcionalnosti. Ponudnikove in administrativne funkcionalnosti pa ne bomo podrobneje
opisovali.
Za realizacijo takega portala je bilo potrebno izdelati specifikacijo, kaj bo portal vseboval:
6.5.1 Prva stran
o Glava:
• logo s sloganom
o Sredina:
• Modul Potovalka.si:
� Po Sloveniji,
� Najem hotelske sobe,
� Poceni letalske karte,
� Hostli,
� Zdravilišča,
� Potovanja po državah,
� Last minute,
� Iskalnik ponudb,
� Kontaktirajte nas.
Smučanje 2008/2009;
� Ponudbe smučanja,
� Smučanje – Francija,
� Smučanje – Avstrija,
� Smučanje – Italija,
� Smučanje – Slovenija,
� Smučanje – Apartmaji.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 55
Najem plovil;
� Seznam plovil za najem,
� Iskanje plovil,
� Jahte,
� Gliserji,
� Jadrnice,
� Katamarani.
Zanimive kategorije;
� Najbolj popularne,
� Apartmaji – Hrvaška,
� Last minute (iz tujine),
� All inclusive.
• Modul Priporočamo – reklama
• Modul Forum z izpisom zadnjih 7 objav
• Modul Iskanje: uporabnik lahko izbere splošni niz ali pa se odloči za napredno
iskanje
• Modul Zanimivo – reklama
• Modul Galerija – uporabnik lahko izbere državo, iz katere si želi ogledati slike,
ki so jih objavile turistične agencije, in se na podlagi le-tega odloči za
počitnikovanje na želeni destinaciji
• Modul vreme - Vreme v Sloveniji za naslednje 3 dni
• Modul povezave:
� Izmenjava povezav,
� Seznam prijateljev,
� Koristne informacije,
� Skrij podrobnosti,
� Nastavi velike črke.
• Sredinski modul:
� Nagovor obiskovalcem,
� Izpis aktualnih ponudb glede na letni čas (smučanje/zadnje ta hip),
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 56
� Zadnje dodane ponudbe,
� Potovanje po državah,
� Apartmaji Hrvaška,
� Plovila - jahte, jadrnice, gliserji, katamaran.
• Desni aktualni modul (smučanje/prvi maj/zadnje ta hip).
• Desni modul z naključnimi slikami s povezavo do ponudbe, pod katero spada
slika.
• Desni modul Klepet, kjer se izpisujejo zadnji dodani klepeti, katere lahko
dodajajo uporabniki.
• Desni modul, ki vsebuje 3 zadnje dodane ponudbe.
o Noga:
• podatki o lastniku, portalu in pogojih uporabe
6.5.2 Prva podstran
Prva podstran vsebuje:
o kratek naziv s tipom ponudbe (hotel/apartma/vila/potovanje),
o država/kraj,
o termin letovanja od/do,
o cena,
o slika,
o povezava do želene ponudbe,
o možnost urejanja ponudb po ceni in terminu;
6.5.3 Druga podstran (podrobnejši opis ponudbe)
Druga podstran vsebuje:
o Naziv ponudbe,
o Sezono in tip počitnikovanja,
o Državo,
o Mesto,
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 57
o Turistično agencijo, ki ta aranžma ponuja,
o Nastanitev (hotel/apartma/vila),
o Število zvezdic,
o Datum vpisa ponudbe,
o Skrit opis obširne ponudbe z možnostjo prikaza le-te,
o Povezava na podroben opis ponudbe in rezervacijo.
o Termini počitnikovanja:
• Zaporedna številka,
• Datum od,
• Datum do,
• Število dni,
• Število oseb,
• Tip sobe,
• Cena.
o Oglasni prostor,
o Video vsebine kraja/države,
o Modul Prva pomoč, ki vsebuje:
• Vreme za izbrano državo/kraj s povezavo na slikovni prikaz vremena ali pa le
opis vremena,
• Plačilno sredstvo v državi,
• Banke s povezavami do tečajnih list,
• Povezave do cen klicev različnih mobilnih ponudnikov,
• Nasveti pri potovanju z avtomobilom, letalom in vlakom,
• Povezava do wikipedije, kjer je opisana država,
• Pomoč pri zdravstvu, kjer so povezave do različnih zavarovalnic in inštitucij,
ki priporočajo specifične ukrepe za izbrano državo.
o Fotografije s strani agencij (uporabnik mora biti prijavljen),
o Fotografije s strani uporabnikov (uporabnik mora biti prijavljen),
o Možnost pošiljanja izbrane ponudbe na e-naslov z vpisom varnostne kode,
o Modul za oglaševanje.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 58
6.5.4 Napredno iskanje
Napredno iskanje omogoča uporabniku ožji izbor ponudb, ki so mu na voljo, da lažje
najde sebi primerno. Ob končanem iskanju jih lahko ureja po ceni in terminu odhoda. V
naprednem iskalniku lahko uporabnik izbere:
o Iskanje po nastanitvah:
• Prvi sklop:
� Izbira države,
� Izbira sezone,
� Tip počitnikovanja.
• Drugi sklop:
� Izbira države,
� Termin od/do,
� Termin najema od/do/točno,
� Cena od/do,
� Izbira nastanitve,
� Storitve,
� Turistične agencije.
o Iskanje po plovilih:
• Prvi sklop:
� Tip plovila,
� Država najema,
� Izdelovalec.
• Drugi sklop:
� Kraj najema,
� Model plovila,
� Termin najema od/do,
� Termin najema od/do/točno,
� Cena od/do.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 59
6.5.5 Forum
Forum vsebuje kategorije, ki imajo podteme, pri vsaki podtemi pa se na prvem nivoju
izpiše zadnji objavljen prispevek.
Ob kliku na:
o kategorijo, se izpišejo vse podteme,
o podtemo, se izpišejo vsi prispevki, ki so znotraj podteme,
o prispevek, se izpišejo vsi prispevki, katere lahko dodajo tudi drugi uporabniki,
o nov vnos, se odpre forma, kjer lahko uporabnik napiše naslov in sporočilo,
avtomatično pa se ga doda v podtemo, v kateri se je nahajal.
Dodatne funkcionalnosti:
o uporabnik je obveščen o novem vpisu na njegov prispevek preko e-pošte,
o vsi uporabniki so obveščeni o novem vpisu na prvotni prispevek preko e-pošte.
6.6. Podatkovna baza
Podatkovna baza je strukturirana zbirka zapisov ali podatkov, ki so shranjeni v
računalniškem sistemu. Struktura je dosežena s posredovanjem podatkov v skladu z modelom
podatkovne zbirke. [33]
Pomemben faktor pri zasnovi spletne aplikacije je podatkovna baza, ki mora biti dobro
zastavljena, da potem ne pride do težav pri razvoju samega portala/aplikacije. Za načrtovanje
podatkovne baze smo izbirali med dvema orodjema DB Designer 4 (Slika 19) in
PowerDesigner 11 (Slika 20). Prvi je brezplačen, pri drugem pa je potrebno plačati licenco.
Pri DB Designer-ju nas je zmotilo to, da vedno spremeni prvi dve črki v malo začetnico, kar
je lahko problem pri pisanju sql-ov. PowerDesigner ima več dodatkov, eden izmed njih je
generiranje naključnih podatkov, katere lahko potem uvozimo v podatkovno bazo in nato
testiramo hitrost sql-ov. Hitrost je potrebno vsekakor zagotoviti, je eden izmed
najpomembnejših faktorjev, če želimo, da bodo uporabniki uporabljali našo aplikacijo. S hitro
odzivnostjo si zagotovimo, da se bodo uporabniki vračali na naš portal.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 60
Podatkovno bazo smo načrtovali zelo obsežno, saj je vsebovala kar 68 tabel, v končni
verziji pa 75. S tem smo zagotovili veliko možnosti za vsebinske nadgradnje, ki bodo lahko
realizirane na portalu brez posega v podatkovni model oz. njegove dopolnitve. Relacija do
povezave med uporabnikom in stranko je prikazana na Sliki 21. Uporabnik ima ključ od tipa,
kjer se definira, kakšen je tip uporabnika (admin., urednik …) in strankin ključ, ki pove, kateri
stranki pripada uporabnik. Stanka pa ima ključ od tipa stranke, ki nam pove ali gre za:
- turistično agencijo,
- posameznika, ki ponuja storitev,
- izposojevalnico jaht/jadrnic/gliserjev/gumenjakov,
- odprte možnosti.
Slika 19: Designer 4
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 61
Slika 20: PowerDesigner 11
Slika 21: Del podatkovnega modela
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 62
6.7. Ogrodje aplikacije
Ogrodje aplikacije je prikazano na Sliki 22.
Slika 22: Ogrodje spletne portala www.potovalka.si
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 63
6.8. Moduli
Spletni portal www.potovalka.si je sestavljen iz modulov, ki so razporejeni na:
o levi modul,
o desni modul,
o glava modul,
o noga modul.
6.8.1 Levi modul
Levi modul vsebuje:
o turistične ponudbe in ima podkategorije:
• potovalka.si (Po Sloveniji, Najem hotelske sobe, Poceni letalske karte, Hostli,
Zdravilišča, Potovanja po državah, Iskalnik ponudb, Kontaktirajte nas),
• Smučanje 2008/2009 (Ponudbe smučanja, Smučanje otvoritev sezone 2009,
Smučanje - Francija, Smučanje - Avstrija, Smučanje - Italija, Smučanje -
Slovenija, Smučanje - Apartmaji),
• Najem plovil (Seznam plovil za najem, Iskanje plovil, Jahte, Gliserji, Jadrnice,
Katamarani),
• Zanimive kategorije (Najbolj popularne, Apartmaji - Hrvaška, Last minute (iz
tujine), All inclusive)
o Priporočamo (modul, ki je namenjen oglaševanju),
o Forum (predstavljene so zadnje teme, ki so jih napisali uporabniki),
o Iskanje – v osnovi je enostavno, poleg pa je povezava do naprednega iskanja, kjer
lahko uporabniki izberejo želene omejitve,
o Zanimiva povezava do strani, s katerimi si izmenjamo povezave, ali pa reklamna
pasica,
o Galerija omogoča izbiro države, o kateri si želi uporabnik ogledati slike,
o Tridnevna vremenska napoved
o Povezave do:
• izmenjava povezav (prikazane so oglasne pasice, ki jih lahko uporabniki
namestijo na svojo stran/portal),
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 64
• Seznam prijateljev (povezave do strani, s katerimi smo si izmenjali povezave),
• Koristne informacije (izpis koristnih informacij o državah, ki so predstavljene
na portalu),
• Skrij podrobnosti (uporabniku lahko skrije vse podrobnosti, ki so prikazane pri
posamezni ponudbi, in si ogleda zgolj ponudbo in termine),
• Nastavi velike črke (na portalu smo poskrbeli tudi za slabovidne, saj jim
omogočamo večjo pisavo in odstranitev grafične podobe). Prikaz uporabe te
funkcionalnosti na Sliki 23.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 65
Slika 23: Portal primeren tudi za slabovidne
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 66
6.8.2 Desni modul
Desni modul vsebuje:
o Aktualne ponudbe (trenutno je to prvi maj, naslednji bo last minute),
o Utrinki (prikaže se naključna slika s povezavo do konkretne ponudbe, kjer se nahaja),
o Klepet, uporabniki si lahko izmenjajo mnenja o tekočem dogajanju,
o Zadnje dodane – izpišejo se zadnje 3 dodane ponudbe,
o Agencije – želimo sodelovati s čim več agencijami in to tudi nazorno prikazujemo v
tem modulu.
6.8.3 Glava modul
Prikazan je logotip z možnostjo registracije/prijave na portal, ki uporabnikom
omogoča dodajanje ponudb pod priljubljene, primer je viden na Sliki 24 in izpis le-teh ter
urejanje svojega profila, pa je prikazan na Sliki 25.
Slika 24: Dodajanje ponudbe pod priljubljene
Slika 25: Izpis priljubljenih povezav
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 67
6.8.4 Noga modul
Vsebuje napis, kdo je lastnik in kdo ima pravice nad portalom.
6.9. Forum
Forum je namenjen izmenjavi mnenj uporabnikov o potovanjih, hotelih, apartmajih,
prijaznosti osebja in druženju preko spleta. Vsak uporabnik lahko pove svoje mnenje in se ga
ne cenzurira, dokler ni žaljiv. Razdeljen je na poglavja:
o Plaža in morje,
o Destinacije, hoteli, apartmaji, bungalovi ...
o Dogaja se,
o Smučanje,
o Navtika,
o Klepet ob koktejlu,
o Potovalka.si.
V vsakem poglavju lahko uporabnik piše o svoji izkušnji. Primer pregleda foruma je
na Sliki 26.
Slika 26: Pregled foruma
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 68
6.10. Namen portala
Spletni portal www.potovalka.si zagotavlja naslednje:
o predstavlja ponudbe turističnih agencij v Sloveniji na enem mestu,
o izpostavljene zadnje dodane ponudbe, aktualne ponudbe, vroče ta hip, last minute/first
minute ponudbe,
o pri iskanju ponudbe imajo uporabniki možnost izbora po naslednjih kriterijih;
• obdobje počitnikovanja,
• dolžina počitnikovanja,
• država/mesto,
• cena,
• tip nastanitve,
• število zvezdic nastanitve,
• oddaljenost od obale/centra,
• turistična agencija,
o omogoča dodajanje fotografij uporabnikov,
o omogoča obveščanje prijateljev o turistični ponudbi,
o na osnovi iskalnih kriterijev izpiše ponudbe, s kratkim opisom, in ponudi direktno
povezavo do spletne strani turistične agencije, ki organizira ponudbo,
o koristne informacije in napotki o državi, v katero potujemo (vremenske napovedi,
tečajnice bank, osnovni podatki o državi, osnovni izrazi v tujem jeziku, zdravstveni
nasveti, povezava na zavarovalnice, letalske ponudnike, mobilne operaterje ...),
o možnost podajanja mnenja in predstavitev mnenj ter ocen posameznih dopustnikov,
o možnost prijave na e-novice v skladu z izbranimi iskalnimi kriteriji,
o zagotavljanje aktualnosti ponudb:
• z dostopom do aplikacije, ki je enostavna za uporabo,
• storitev vnosa novih ponudb na splet.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 69
6.11. Kratek opis ponudbe
Portal je narejen po načelu hitrega dostopa, z največ dvema klikoma uporabnik pride
do ponudbe, ki si jo želi ogledati. Ob kliku na »Po Sloveniji« se izpišejo osnovne značilnosti
in ponudbe s sledečimi podatki. Primer je prikazan na Sliki 27:
o naziv,
o tip ponudbe,
o število zvezdic,
o država,
o kraj,
o termin,
o najnižja cena.
Slika 27: Klik na »Po Sloveniji«
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 70
6.12. Podroben opis ponudbe
Ob kliku na »Poglej ponudbo« se izpišejo podatki, ki vsebujejo podroben opis
ponudbe, primer je na Sliki 28:
o ime države in povezava do države na maps.google.com,
o ime kraja in povezava do kraja na maps.google.com,
o naziv agencije in povezava do spletne strani agencije,
o tip nastanitve,
o oddaljenost od obale/centra,
o ocena nastanitve,
o datum vpisa ponudbe,
o obširen opis ponudbe,
o povezava do točnega opisa ponudbe
o termini počitnikovanja, ki vsebujejo:
• datum od,
• datum do,
• število dni,
• tip sobe,
• cena
o videi države/kraja, ki so jo/ga predstavili uporabnik na youtube,
o prva pomoč:
• plačilno sredstvo v državi, v katero uporabnik potuje,
• vreme v slikovni ali opisni obliki,
• povezave do mobilnih operaterjeve, kjer so predstavljene cene klicev v/iz
tujine,
• nasveti pri potovanju z:
i. avtomobilom:
* Izračun poti do želene destilacije;
* pregled razmer na cestah;
* predstavljene so omejitve hitrosti v posameznih državah;
ii. letalom:
* povezava do letališča Jožeta Pučnika;
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 71
* povezava do pravic potnikov pri zamudi letal;
* povezava do pravil na letališčih;
iii. vlakom:
* povezava do mednarodnih voznih redov vlakov;
* povezava do ponudnika potovanja z InterRail;
o povezava do Wikipedije posamezne države, kjer si lahko uporabnik prebere vse
osnovne značilnosti države,
o povezava do zdravil, ki jih je priporočljivo vzeti na pot (posebna priporočila za
eksotične države),
o povezava do aktualnih bolezni v državi, v katero potuje uporabnik,
o povezava do zavarovalnic:
• Zavod za zdravstveno zavarovanje,
• CORIS,
• Triglav,
• Generali,
• Adriatic Slovenica,
• Zavarovalnica Maribor,
• Vzajemna
o fotografije, ki jih objavijo agencije/ponudniki,
o pregled fotografij, ki jih objavijo obiskovalci,
o komentarji uporabnikov,
o možnost pošiljanja ponudbe prijatelju.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 72
Slika 28: Izbrana destinacija
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 73
6.13. Administracija
Administracija je namenjena turističnim agencijam ali posameznim ponudnikom, ki
želijo imeti pregled nad podatki, ki so jih vpisali na portal, primer je viden na sliki 29. V
administraciji imajo možnost:
o Urejati ponudbo:
• izpisati ponudbe,
• dodajati ponudbe,
• urejati ponudbe,
• brisati ponudbe,
• urediti aktivne/neaktivne ponudbe,
• dodajati sponzorske ponudbe.
o Pregledati podatke o podjetju/posamezniku:
• mesečni račun,
• statistko,
• podatke o podjetju,
• dodati uporabnika, ki se mu omogoči vstop v administracijo,
• brisanje uporabnikov.
o Uporabnik si lahko:
• pregleda osebne podatke,
• spreminja geslo,
• odjavi.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 74
Slika 29: Pregled v administraciji
Uporabnik lahko ročno dodaja ponudbo, kar poteka v štirih korakih. »Čarovnik« ga
vodi skozi vse vprašalnike, ki jih uporabnik izpolni in na koncu potrdi. Povsem enak postopek
poteka pri urejanju ponudbe. Uporabniku je omogočen tudi pregled klikov, na preusmeritvijo
na njihovo konkretno ponudbo in to v realnem času. Poleg je tudi cena, koliko mora plačati za
tekoči mesec, če je izbral določen paket sodelovanja.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 75
6.14. Galerija
Namen prikaza galerije je v tem, da lahko obiskovalec pregleduje slike
apartmajev/hotelov in se na podlagi tega odloči, kam bo odšel. Tak način izbire je primeren,
ko uporabniku ni pomembno, kam bo šel, izbrati mora le državo (primer je prikazan na Sliki
30) in kraj (primer je prikazan na Slika 31). Ob kliku na sliko pa se odpre podrobna ponudba,
kjer si lahko ogleda vse podrobnosti, vključno s ceno.
Slika 30: Izpis mest glede na izbrano državo
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 76
Slika 31: Izpis slik glede na izbrano mesto
6.15. Napredno iskanje
Napredno iskanje ponuja natančno iskanje po vseh ponudbah na portalu. Sestavljeno je
iz dveh sklopov.
6.15.1 1. Sklop
Uporabnik lahko izbere med (primer je prikazan na Sliki 32):
o državami,
o sezono (poletje/zima),
o tipom počitnikovanja (Počitnice, Last minute, Smučanje, Zdravilišča, Potovanja).
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 77
Slika 32: Prvi sklop pri naprednem iskanju
6.15.2 2. Sklop
Uporabnik lahko izbere med (primer je prikazan na Sliki 33) :
o mestom,
o terminom od/do,
o številom dni, od kdaj do kdaj si želi počitnikovati,
o omeji ceno,
o izbere nastanitev (Hotel, Apartma, Popotovanje, Vila, Izlet),
o storitvijo (Polpenzion, Poln penzion, Vse vključeno, Nočitev, Nočitev z zajtrkom,
Najem apartmaja, Paketna ponudba),
o turistično agencijo.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 78
Slika 33: Drugi sklop pri naprednem iskanju
Uporabnik lahko vse opcije pusti prazne, v tem primeru se prazno polje ne upošteva in
dobi samo tiste omejitve, ki jih je izbral.
6.16. Za turisti čne agencije
Turističnim agencijam je omogočeno:
o brezplačno dodatno oglaševanje agencije,
o plačilo le na klik,
o dvig prepoznavnosti in večja obiskanost njihove spletne strani,
o pridobivanje novih potencialnih strank,
o lažje oblikovanje naslednjih ponudb, saj omogočamo dostop do statistike portala in s
tem dostop do podatkov o interesih obiskovalcev,
o visoka raven storitev, portal bo neprestano prisoten v medijih, sprva predvsem na
spletu, radiu in v časopisih, kar ponovno predstavlja brezplačno dodatno oglaševanje.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 79
6.17. Oglaševanje
Na portalu www.potovalaka.si imajo oglaševalci možnost različnih načinov
oglaševanja. Zato obstaja tudi več opcij, kjer lahko oglaševalci zakupijo svoj prostor oz.
oddajo oglas:
o plačilo na kliku,
o zakup »Vroče ta hip« povezav,
o zakup oglasnega prostora na prvi strani,
o zakup oglasnega prostora pod ponudbami,
o zakup oglasnega prostora pod ponudbo,
o zakup oglasnega prostora na desni strani.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 80
6.17.1 Plačilo na kliku
Obiskovalcu strani se bodo ob iskanju počitnikovanja izpisali rezultati in kratek
opis želene destinacije, za rezervacijo ponudbe in podrobnejši opis pa bo ustvarjena
direktna povezava na spletno stran turistične agencije. Zabeleži se klik na to povezavo
(»Podrobnejši ogled turistične ponudbe«, primer je prikazan na Sliki 34).
Slika 34: Klik na Podrobnejši ogled ponudbe
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 81
6.17.2 Zakup »Vro če ta hip« povezav
Na zgornji desni strani spletnega portala so na voljo 3 sponzorske povezave, ki se
menjajo v določenem intervalu. Zabeleži se klik na to povezavo. Modul bo prisoten ves
čas. Primer modula sponzorskih ponudbe je prikazan na Sliki 36.
Slika 35: Sponzorske ponudbe
6.17.3 Zakup oglasnega prostora na prvi strani
Celoten modul Sponzorji se lahko oblikuje po želji. Opremi se lahko z lastnim
tekstom, sliko, flashem … Velikost prostora je do 160 x 160 pik. JavaScriptni jezik ni
dovoljen. Primer modula sponzorji je prikazan na Sliki 36.
Slika 36: Prikaz sponzorja
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 82
6.17.4 Zakup oglasnega prostora pod ponudbami
Obiskovalcem se oglasni prostor izpiše pod vsemi razpoložljivimi ponudbami.
Velikost dimenzije ni fiksna, je pa omejena na maksimalno velikost 523 x 150 pik. Primer
umestitve oglasnega prostora je prikazan na Sliki 37.
Slika 37: Izpis vseh razpoložljivih destinacij
6.17.5 Zakup oglasnega prostora pod ponudbo
Obiskovalcem se oglasni prostor izpiše pod vsako izbrano ponudbo. Velikost
dimenzije ni fiksna, je pa omejena na maksimalno velikost 523 x 150 pik. Primer
umestitve oglasnega prostora je prikazan na Sliki 38.
Slika 38: Izpis točno določene destinacije
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 83
6.17.6 Zakup oglasnega prostora na desni strani
Obiskovalcem se oglasni prostor izpiše na vseh straneh, razen na prvi. Velikost
dimenzije ni fiksna, je pa omejena na maksimalno velikost 215 x 796 pik. Prikaz
oglasnega prostora na desni je prikazan na Sliki 39.
Slika 39: Prikaz reklame na desni strani
6.18. Možnost vnašanja ponudb
Vnašanje ponudb poteka na 3 načine:
o uporabnik vnaša ponudbe sam preko uporabniškega vmesnika,
o uporabnik/agencija pripravi XML, le-ta se obdela in ponudbe se avtomatično vnašajo
v podatkovno bazo ob dogovorjeni uri,
o na željo uporabnika sami vnašamo ponudbe.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 84
6.19. Izkušnje ob razvoju portala
Pri razvoju omenjenega portala smo pridobili veliko izkušenj s strani razvoja v PHP,
delu s podatkovno bazo MySQL, pri pisanju Sql-ov, načrtovanju portala, uporabniških
izkušnjah, seznanjanja s tehnologijami, delu z veliko količino podatkov, obdelavo XML-jev,
AJAX tehnologijo, govornimi veščinami, navezovanju stikov in drugo. Integracija z ostalimi
storitvami, ki jih ponuja internet, se je izkazala za zelo pozitivno. Na portalu je kar nekaj
integracij z maps (google), translate (google) in google video, ki dajo portalu dodano vrednost
glede novih informacij, ki jih lahko uporabniku ponudi portal.
Zelo pomembno pri razvoju je načrtovanje, saj je pri dobro načrtovanem portalu manj
težav ob naraščanju podatkov in uporabnikov. V praksi smo se veliko seznanjali tudi s
tehničnimi problemi, s katerimi se srečujejo v drugih podjetjih, vendar na koncu smo
ugotovili, da je običajno največji problem človeški faktor, saj se s tehničnega vidika običajno
najde ustrezna rešitev.
S tehničnega vidika smo imeli težave pri:
o Omejitvi izvajanja skript. Glede na to, da je bil prostor najet, se je lahko skripta
izvajala največ 60 sekund, kar pa je povzročilo kar nekaj težav pri sami obdelavi
podatkov XML-ja, ki so se uvažali v podatkovno bazo. Rešil smo jih tako, da smo
napisal več skript, ki so se izvajale zaporedno.
o Veliko časa smo porabili za uredniški del, ki pa ga velika večina ponudnikov/agencij
sploh ne uporablja, ker nimajo časa za vpisovanje, ampak se vse uvaža preko XML-
jev.
o Večji del funkcij smo pisali v eno datoteko, kar se mi zdi manj primerno, bolje bi bilo,
da bi jo razdelil na vsaj štiri manjše.
o Večina destinacijskih slik se nahaja na ponudnikovih strežnikih in se na portalu
www.potovalka.si samo prikazujejo. Velikokrat se je pojavila težava, da njihov
strežnik ni deloval in se je s tem popačila celostna podobo portala. Veliko bolje bi
bilo, če bi bile slike na istem strežniku kot portal.
o Gostovanje na strežniku vsekakor ni optimalna rešitev, ker se pojavljajo tudi
nepričakovani izpadi in s tem izguba obiskovalcev.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 85
Težave ob zagonu portala:
o Poiskati smo morali potrebne partnerje, ki bodo prisotni na portalu, vendar turistične
agencije niso imele veliko posluha, saj so gledali na portal kot na nekaj »neresnega« in
»neuveljavljenega«.
o Preko e-pošte 99 % agencij/podjetij ne odgovarja na kakršno koli ponudbo/vprašanje.
Težko je tudi pridobiti odgovorno osebo za pogovor oz. sestanek.
o Pridobitev individualne reklame na portalu je zelo težka, veliko lažje se pridobi
izmenljivo oglasno pasico ali pa se podjetja raje odločajo za oglaševanje na
ADopartnerju in njemu podobnim. Vendar menim, da bi morala pristopati tudi
individualno, saj bi s tem pridobili obiskovalce/uporabnike na že namenskem portalu.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 86
7. SKLEP
V diplomski nalogi, smo v prvem delu, ki je nekoliko bolj teoretičen, prikazali
uporabo tehnologij PHP, MySQL, AJAX in XML na kratkih praktičnih primerih in opisali
njihove glavne značilnosti, ter konkurente. Najtežje je bilo najti konkurenco za tehnologijo
AJAX, saj je to skup tehnologij, ki je trenutno v trendu. Ugotovili smo, da je učenje
skriptnega jezika PHP zelo lahko dostopno, saj ga v ozadju podpira velika skupnost in mu s
tem omogoča rast prepoznavnosti. Zaradi skupnosti je veliko težav/problemov/nasvetov hitro
rešljivih, saj jih zelo hitro pridobi ob uporabi spletnih iskalnikov. Sintaksa skriptnega jezika
PHP je zelo preprosta, prav tako pa se jo da hitro naučiti. Uporaba MySQL podatkovne baze
je učinkovita, dokler ni potrebno izvajati obdelav podatkov. Zelo bi bilo koristno, če bi imel
MySQL možnost ustvarjanja procedur, katerim bi se dalo nastaviti čas zagona na nivoju
MySQL-a. S pomočjo tehnologije AJAX se lahko razvijajo tehnološko dovršene, hitre
(odzivne), privlačne in uporabniku prijazne aplikacije. Z uporabo tehnologije AJAX je
potrebno še znanje JavaScript-a, XML, DOM-a, CSS-ja, XSLT-ja … Integracijo podatkov iz
drugih aplikacij, lahko dosežemo enostavno z uporabo XML-jev, ki lahko služijo za
izmenjavo podatkov iz ene aplikacije v drugo. Prednost tega je, da se lahko uporabljajo
različne tehnologije, saj lahko vse tehnologije obdelajo ta format zapisa. Kreacija samega
XML-ja je zelo hitra in človeku berljiv format, dokler ni podatkov preveč, saj lahko pride do
težav zaradi prevelike datoteke, ker XML nosi še opis podatkov in s tem dodatne informacije,
ki le povečujejo velikost datotek. V drugem delu diplomske naloge smo predstavili praktičen
primer uporabe vseh tehnologij na portalu www.potovalka.si. Skupek vseh teh tehnologij je
pripomogel k temu, da se je portal razvil v razmeroma hitrem času. Za dobro zasnovano
aplikacijo je potrebno vložiti veliko časa v načrtovanje aplikacije, hkrati pa se je potrebno
zavedati omejitve tehnologij, s katerimi bomo v nadaljevanju razvijali.
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 87
8. VIRI
[1] PHP http://sl.wikipedia.org/wiki/PHP (24.1.2009)
[2] PHP http://en.wikipedia.org/wiki/PHP (24.1.2009)
[3] MySQL http://sl.wikipedia.org/wiki/MySQL (24.1.2009)
[4] MySQL http://en.wikipedia.org/wiki/MySQL (24.1.2009)
[5] MySQL - cenik
http://globalspecials.sun.com/store/mysql/ContentTheme/pbPage.categoryEnterprise
(24.1.2009)
[6] MySQL - Arhitektura
http://images.google.si/imgres?imgurl=http://dev.mysql.com/tech-
resources/articles/mysql_5.0_psea1.jpg&imgrefurl=http://dev.mysql.com/tech-
resources/articles/mysql_5.0_psea1.html&usg=__zTRwGYlXXiEHKghzrpqoOKOc6qw=&h
=413&w=572&sz=69&hl=sl&start=1&sig2=UPrCwDRdDV_-
I1F2LokW1Q&um=1&tbnid=01kKt6p-
tgLEkM:&tbnh=97&tbnw=134&ei=jyp8SeO3CIHEjAf7qoGzAQ&prev=/images%3Fq%3DE
ngine%2BArchitecture%2BMYSQL%2B5%26um%3D1%26hl%3Dsl%26client%3Dfirefox-
a%26rls%3Dorg.mozilla:sl:official%26sa%3DN (25.1.2009)
[7] AJAX - sinhrona komunikacija http://sitepointstatic.com/graphics/Fig-
TraditionalModel.png (8.2.2009)
[8] AJAX - asinhrona komunikacija http://sitepointstatic.com/graphics/Fig-
AsyncModel.png (8.2.2009)
[9] AJAX http://sl.wikipedia.org/wiki/AJAX_(programiranje) (8.2.2009)
[10] AJAX http://en.wikipedia.org/wiki/Ajax_(programming) (8.2.2009)
[12] XSLT http://www.ibm.com/developerworks/library/x-xslt/ (14.2.2009)
[13] XSLT http://www.ibm.com/developerworks/xml/library/x-xmlajaxpt2/ (14.2.2009)
[14] XMLHttpRequest http://en.wikipedia.org/wiki/XMLHttpRequest (22.2.2009)
[15] XMLHttpRequest http://developer.apple.com/internet/webcontent/xmlhttpreq.html
(22.2.2009)
[16] AJAX and PHP Building Responsive Web Applications
[17] XML http://amor.fri.uni-lj.si/dejan/delo/studenti/pvis2/gradivo/XML.pdf (28.2.2009)
[18] Eric van der Vlist, Alessandro Vernet, Erik Bruchez, Joe Fawcett, Danny Ayers-
Professional web 2.0 Programing
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 88
[19] PHP http://www.onlamp.com/pub/a/php/2001/02/22/php_foundations.html
(19.4.2009)
[20] PHP http://si2.php.net/reserved.variables 8.3.2009 (19.4.2009)
[21] PHP http://si2.php.net/manual/en/features.php (19.4.2009)
[22] PHP http://www.procata.com/blog/archives/2006/02/09/comparing-php-with-other-
languages/ (19.4.2009)
[23] MySQL http://www.ucl.ac.uk/web-services/web-technologies/php-mysql (19.4.2009)
[24] MySQL http://media.wiley.com/product_data/excerpt/20/04712692/0471269220.pdf
(19.4.2009)
[25] XML - prednosti/slabosti http://www.sinonim.com/iwa-
ljubljana/xml/XML%20v%20solstvu.html (27.4.2009)
[26] XML - prednosti/slabosti http://www.techmynd.com/advantages-disadvantages-of-
xml/ (27.4.2009)
[27] AJAX in WEB 2.0 http://www.webreference.com/programming/ajax_introduction/
(27.4.2009)
[28] AJAX - konkurenca http://www.oracle.com/technology/tech/standards/pdf/jsf.pdf
(27.4.2009)
[29] SVG http://sl.wikipedia.org/wiki/SVG (27.4.2009)
[30] XUL http://en.wikipedia.org/wiki/XUL (27.4.2009)
[31] XAML http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language
(27.4.2009)
[32] Java applet http://en.wikipedia.org/wiki/Java_applet (27.4.2009)
[33] Podatkovna baza http://en.wikipedia.org/wiki/Database (16.5.2009)
[34] XSLT http://www.ibm.com/developerworks/library/x-xslt/ (16.5.2009)
[35] XML HttpRequest
http://www.javareference.com/jrexamples/images/ajax_interaction.gif (16.5.2009)
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 89
9. PRILOGE
9.1. Seznam slik
Slika 1: Pregled verzij PHP skozi čas od leta 1995 do 2008 [2] ...................................... 2 Slika 2: Prikaz procesiranja PHP kode[19].......................................................................... 3 Slika 3: phpMySQLAdmin – brezplačna različica............................................................. 14 Slika 4: SQLyog – plačljiva različica ................................................................................... 15 Slika 5: Cenik podpore ob uporabi MySQL ....................................................................... 16 Slika 6: Delovanje MySQL strežnika[6].............................................................................. 17 Slika 7: Izpis podatkov iz tabele .......................................................................................... 20 Slika 8: Standardna komunikacija brskalnik / strežnik..................................................... 24 Slika 9: Asinhrona komunikacija brskalnik / strežnik ....................................................... 24 Slika 10: Nabor združljivih tehnologij.................................................................................. 26 Slika 11: Primer DOM strukture........................................................................................... 27 Slika 12: Operacije XSLT procesorja [34].......................................................................... 28 Slika 13: XMLHttpRequest [35] ........................................................................................... 32 Slika 14: Diagram primerov uporabe za uporabnika........................................................ 46 Slika 15: Diagram primerov uporabe za ponudnika ......................................................... 47 Slika 16: Diagram primerov uporabe za administratorja ................................................. 48 Slika 17: Arhitekturni načrt ................................................................................................... 49 Slika 18: Uporaba tehnologij na portalu ............................................................................. 51 Slika 19: Designer 4 .............................................................................................................. 60 Slika 20: PowerDesigner 11................................................................................................. 61 Slika 21: Del podatkovnega modela ................................................................................... 61 Slika 22: Ogrodje spletne portala www.potovalka.si ........................................................ 62 Slika 23: Portal primeren tudi za slabovidne ..................................................................... 65 Slika 24: Dodajanje ponudbe pod priljubljene................................................................... 66 Slika 25: Izpis priljubljenih povezav .................................................................................... 66 Slika 26: Pregled foruma ......................................................................................................67 Slika 27: Klik na »Po Sloveniji« ........................................................................................... 69 Slika 28: Izbrana destinacija ................................................................................................ 72 Slika 29: Pregled v administraciji ........................................................................................ 74 Slika 30: Izpis mest glede na izbrano državo.................................................................... 75 Slika 31: Izpis slik glede na izbrano mesto........................................................................ 76 Slika 32: Prvi sklop pri naprednem iskanju........................................................................ 77 Slika 33: Drugi sklop pri naprednem iskanju ..................................................................... 78 Slika 34: Klik na Podrobnejši ogled ponudbe.................................................................... 80 Slika 35: Sponzorske ponudbe............................................................................................ 81 Slika 36: Prikaz sponzorja .................................................................................................... 81 Slika 37: Izpis vseh razpoložljivih destinacij...................................................................... 82 Slika 38: Izpis točno določene destinacije ......................................................................... 82 Slika 39: Prikaz reklame na desni strani............................................................................ 83
Uporaba PHP5, XML, MySQL in AJAX za razvoj spletnih rešitev
Stran 90
9.2. Seznam preglednic
Tabela 4.1. XMLHttpRequest metode[16]............................................................................... 34 Tabela 4.2. XMLHttpRequest lastnosti [16] ............................................................................ 35
9.3. Naslov študenta
Dejan Kos Roje 2 8233 Mirna
Gsm: 040 937 602 e-mail: [email protected]
9.4. Kratek življenjepis
Rojen sem 16. 4. 1984, v Novem mestu, stanujoč na Mirni na Dolenjskem. Srednjo
šolo sem obiskoval na Mirni in zaključil prvih 7 razredov s prav dobrim uspehom, 8. razred
pa z dobrim. Že v srednji šoli me je veselilo delo z računalniki in sem tako že v mladosti
preživel veliko časa pred računalnikom. Velik del časa sem posvečal tudi športu, predvsem
košarki in badmintonu. V srednjo šolo sem hodil na Ekonomsko šolo Novo mesto, in jo
zaključil z dobrim uspehom. Za nadaljnje šolanje sem se odločil na Fakulteti za računalništvo
in informatiko, na katero sem se vpisal leta 2003/04.