40
UVOD Što je ASP? Jednostavno rečeno, ASP stranice (Active Server Pages) su mješavina HTML-a i programskog kôda koji daju ASP stranici karakter dinamičke stranice. ASP stranice su Microsoftovo rješenje za izvršavanje skripti na web serveru. Kod običnih HTML stranica klijent, koji može biti Internet Explorer, Netscape ili neki drugi, šalje zahtjev za web stranicom serveru (npr. www.neki-server.com) pomoću HTTP protokola. U većini slučajeva posao servera je jednostavan – on potraži stranicu i pošalje je klijentu takvu kakva jest, nakon čega je posao klijenta da je prikaže. U slučaju ASP stranica server može napraviti izmjene unutar stranice prije nego što je pošalje korisniku. Prilikom zahtjeva za datotekom koja ima ekstenziju .asp server prvo obrađuje ASP naredbe sadržane u toj stranici, a nakon što ih izvrši, stranicu šalje klijentu kao običan HTML. OSNOVE ASP-A ASP stranica sadrži tekst i HTML tagove baš kao i standardna HTML stranica, ali uz to ASP stranica može sadržavati i serverske skripte (niz naredbi u nekom od skriptnih jezika koje podržava ASP). Datoteka koja sadrži ASP skripte mora imati ekstenziju .asp da bi se naredbe u ASP skriptama izvršile. Korištenjem ASP-a možemo generirati cijelu HTML stranicu ili samo jedan njezin dio (u donjem primjeru to je samo jedan dio) Uključivanje ASP skripte u HTML dokument HTML tagovi se, kao što znamo, nalaze u zagradama oblika < … >, običan tekst je izvan njih, a ASP naredbe stavljamo u zagrade oblika <% … %>. Te zagrade govore serveru da njihov sadržaj ne ide korisniku već ga treba prvo izvršiti, a na njihovo mjesto uvrstiti izlazni rezultat skripte. Primjer: Naredba Response.Write generira tekst <HTML> <BODY> <% Response.Write ("Ovo je tekst ispisan naredbom Response.Write") %> </BODY> </HTML> HTML kôd koji je dobio web preglednik nakon izvršenja ASP skripte: <HTML> <BODY> Ovo je tekst ispisan korištenjem ASP-a. </BODY> </HTML> Skriptni jezici ASP može koristiti različite skriptne jezike, a uobičajeni (default) je VBScript. Ugrađena je podrška za jezike JavaScript i VBScript, dok je za ostale jezike potrebno instalirati odgovarajući interpreter. Ako se odlučimo za sintaksu VBScript-a onda moramo na početku kôda upisati liniju <% @ LANGUAGE="VBScript" %>, a ako radije želimo koristiti sintaksu JavaScript-a onda na početku kôda moramo upisati liniju: <% @ LANGUAGE="JavaScript" %> Komentari

ASP

Embed Size (px)

Citation preview

Page 1: ASP

UVOD

Što je ASP?

Jednostavno rečeno, ASP stranice (Active Server Pages) su mješavina HTML-a i programskog kôda koji daju ASP stranici karakter dinamičke stranice. ASP stranice su Microsoftovo rješenje za izvršavanje skripti na web serveru.

Kod običnih HTML stranica klijent, koji može biti Internet Explorer, Netscape ili neki drugi, šalje zahtjev za web stranicom serveru (npr. www.neki-server.com) pomoću HTTP protokola. U većini slučajeva posao servera je jednostavan – on potraži stranicu i pošalje je klijentu takvu kakva jest, nakon čega je posao klijenta da je prikaže. U slučaju ASP stranica server može napraviti izmjene unutar stranice prije nego što je pošalje korisniku. Prilikom zahtjeva za datotekom koja ima ekstenziju .asp server prvo obrađuje ASP naredbe sadržane u toj stranici, a nakon što ih izvrši, stranicu šalje klijentu kao običan HTML.

OSNOVE ASP-A

ASP stranica sadrži tekst i HTML tagove baš kao i standardna HTML stranica, ali uz to ASP stranica

može sadržavati i serverske skripte (niz naredbi u nekom od skriptnih jezika koje podržava ASP). Datoteka koja sadrži ASP skripte mora imati ekstenziju .asp da bi se naredbe u ASP skriptama izvršile.

Korištenjem ASP-a možemo generirati cijelu HTML stranicu ili samo jedan njezin dio (u donjem primjeru to je samo jedan dio)

Uključivanje ASP skripte u HTML dokument

HTML tagovi se, kao što znamo, nalaze u zagradama oblika < … >, običan tekst je izvan njih, a

ASP naredbe stavljamo u zagrade oblika <% … %>. Te zagrade govore serveru da njihov sadržaj ne ide korisniku već ga treba prvo izvršiti, a na njihovo mjesto uvrstiti izlazni rezultat skripte.

Primjer: Naredba Response.Write generira tekst

<HTML>

<BODY>

<%

Response.Write ("Ovo je tekst ispisan naredbom Response.Write")

%>

</BODY>

</HTML>

HTML kôd koji je dobio web preglednik nakon izvršenja ASP skripte:

<HTML>

<BODY>

Ovo je tekst ispisan korištenjem ASP-a.

</BODY>

</HTML>

Skriptni jezici

ASP može koristiti različite skriptne jezike, a uobičajeni (default) je VBScript. Ugrađena je podrška za jezike JavaScript i VBScript, dok je za ostale jezike potrebno instalirati odgovarajući interpreter. Ako se odlučimo za sintaksu VBScript-a onda moramo na početku kôda upisati liniju <% @

LANGUAGE="VBScript" %>, a ako radije želimo koristiti sintaksu JavaScript-a onda na početku kôda

moramo upisati liniju: <% @ LANGUAGE="JavaScript" %>

Komentari

Page 2: ASP

Za pisanje komentara unutar ASP kôda na početku retka upisujemo znak ' (apostrof), iza kojeg

slijedi tekst komentara. Za svaki novi red komentara ponovno upisujemo apostrof. Komentar nema nikakvog utjecaja na izvođenje ASP skripte.

Primjer: Pisanje komentara

<HTML>

<BODY>

<%

Response.Write ("neki tekst")

' Ovo je komentar.

%>

</BODY>

</HTML>

Objekti

ASP je zasnovan na objektima i sadrži pet ugrađenih objekata. To su Response, Request,

Application, Session i Server. Svaki od njih ima svoja svojstva i metode. Objekti Application i Session imaju i događaje (Events). Metode su ugrađene funkcije nekog objekta. Svojstva su varijable ili konstante karakteristične za neki objekt. Events su događaji koji pokreću određene procedure, a sadrže ih objekti Application i Session.

VARIJABLE, KONSTANTE I NIZOVI

Varijable

Varijable koristimo kako bismo neke podatke privremeno spremili negdje u memoriju računala. Vrijednost varijable se može mijenjati u tijeku izvođenja programa.

Deklariranje varijabli

Deklariranje varijabli u ASP-u je jednostavno, pošto su sve varijable po defaultu tipa Variant, odnosno mogu poprimiti bilo koju vrijednost. Varijabla tipa Variant može biti bilo što. Nije potrebno

deklarirati varijablu kao Integer, String ili Object. Kada varijablu deklariramo izvan funkcije tada je to globalna varijabla i dostupna je u cijelom programu. Ako ju deklariamo unutar nekog potprograma onda je to lokalna varijabla i dostupna je samo tom potprogramu. Za deklariranje neke varijable koristi se ključna riječ Dim iza koje se navodi ime varijable.

Primjer: Deklariranje jedne varijable

<%

Dim ime_varijable

%>

Ime varijable može početi s bilo kojim slovom ili povlakom, ali ne smije početi s brojem i ne smije

sadržavati razmake.

Ako deklariramo više varijabli odjednom, prvo pišemo ključnu riječ Dim, a iza nje varijable odvojene zarezom.

Primjer: Deklariranje više varijabli

<%

Dim varijabla_1, varijabla_2, varijabla_3

%>

Page 3: ASP

Iza varijable možemo staviti ključnu riječ As i navesti ime tipa varijable (Integer, String, Date,

Boolean, Currency...), a ako to ne učinimo varijabla je tipa Variant. Kod računanja s takvim

varijablama vrijednosti se automatski konvertiraju u tipove koji su određeni operatorima u izrazima gdje se varijable pojavljuju.

Primjer: Deklariranje varijable nekog tipa

<%

Dim varijabla_1 As String

%>

Deklariranje varijabli nije nužno, ali je dobra navika. Kada pišemo ASP skripte korisno je kao prvu naredbu na našoj stranici, odmah iza izbora sintakse, staviti liniju koda <% Option Explicit %>.

Ta naredba jednostavno zahtijeva da sve varijable prije korištenja budu deklarirane naredbom Dim. Uključivanjem ove opcije znatno ćemo olakšati otkrivanje grešaka u skripti, kao što su npr. krivo napisana imena varijabli.

Pridruživanje vrijednosti varijablama

Varijablama se vrijednosti pridružuju tako da se s lijeve strane piše ime varijable, zatim slijedi znak jednako (=), i nakon njega dolazi vrijednost ili izraz čiju vrijednost pridružujemo varijabli.

Primjer: Pridruživanje vrijednosti varijabli

<%

varijabla_1 = neka_vrijednost_ili_izraz

%>

Kako se izračunajvaju izrazi? Izrazi se izvršavaju po prioritetu operacija, najviše su funkcije, zatim množenje i dijeljenje, pa zbrajanje i oduzimanje. Prioritet može biti određen okruglim zagradama.

Konstante

Konstante su vrijednosti koje se jednom definiraju i više se ne mogu mijenjati u tijeku izvođenja programa.

Page 4: ASP

Definiranje konstante

Konstantu definiramo tako da upišemo ključnu riječ Const, zatim ime konstante, znak jednako (=) i nakon njega vrijednost konstante.

Primjer: Definiranje konstante

<%

Const PDV = 0.22

%>

Zašto koristiti konstante kad možemo jednostavno unijeti vrijednost koja nam treba na mjestu gdje nam treba? Ako koristimo neku vrijednost na više mjesta, i ona se jednom ipak promijeni, dovoljno je je tu vrijednost ispraviti samo na mjestu gdje smo definirali konstantu, a ne u svakoj liniji kôda gdje smo tu vrijednost koristili.

Nizovi (Array)

Nizovi su varijable u koje stane više podataka istovrsnog tipa. Da bismo mogli pohraniti više takvih podataka i kasnije doći do njih, nizovi imaju indeks. Indeks je redni broj podatka u nizu, a prvi član

niza ima indeks 0. Nizovi mogu biti i višedimenzionalni i tada se indeksi u zagradama odvajaju zarezima. Prvi indeks u dvodimenzionalnom nizu je indeks retka, a drugi je indeks stupca.

Definiranje niza

Niz definiramo tako da iza ključne riječi Array u zagradama navedemo njegove članove odvojene zarezom. Članu niza kasnije pristupamo tako da iza imena niza u zagradi navedemo indeks člana niza koji nam je potreban.

Primjer: Definiranje niza i zadavanje inicijalnih vrijednosti

neka_varijabla = Array ("prvi član", "drugi član", "treći član")

Primjer: Definiranje i korištenje niza

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim imena

' deklariranje varijable kojoj ćemo pridružiti niz

imena = Array ("Marko" , "Ivica" , "Goran" , "Ana" , "Nikola")

' definiranje inicijalnih vrijednosti niza

Response.Write imena (3)

' ispis 4. člana niza (jer prvi član ima indeks 0)

%>

</BODY>

</HTML>

RAD S OPERATORIMA

Matematički operatori

Matematički operateri služe nam za izvođenje matematičkih operacija. Kod izvođenja matematičkih operacija poštuju se matematičke zakonitosti koje vrijede i inače.

Page 5: ASP

Operacija Opis operacije Primjer

a + b Zbrajanje 5 + 7 daje 12

a - b Oduzimanje 12 – 7 daje 5 a * b Množenje 4 * 2 daje 8 a / b Dijeljenje 10 / 4 daje 2.5 a \ b Cjelobrojno dijeljenje 13 \ 3 daje 4 a Mod b Ostatak pri dijeljenju 13 Mod 3 daje 1 a ^ b Potenciranje 2 ^ 3 daje 8

Operacije uspoređivanja

Ponekad treba vrijednost neke varijable usporediti s nekom drugim vrijednosti. Tada koristimo operacije uspoređivanja koje kao rezultat daju vrijednosti True ili False.

Operator True daje ako je... False daje ako je... A = B A i B su jednaki A i B su različiti A > B A veće od B A manje ili jednako B

A < B A manje od B A veće ili jednako B

A >= B A veće ili jednako B A manje od B A <= B A manje ili jednako B A veće od B A <> B A različito od B A i B su jednaki

Logički operatori

Logički operateri također kao rezultat daju vrijednosti True ili False.

Operator True daje ako je... False daje ako je...

A AND B A i B su True A ili B je False A OR B A ili B je True A i B su False NOT A A je False A je True A XOR B A ili B je True, ali ne oboje Oboje su True ili oboje False A EQV B Oboje su True ili oboje False Jedan je False, a drugi True A IMP B A je False ili je B True A je True i B je False

Spajanje tekstova

Kada želimo više različitih podataka tipa string spojiti u jednu cjelinu onda se koristimo operatorom " & ". Npr. "Dobar " & "dan" postaje tekst "Dobar dan"

KONTROLA IZVOĐENJA PROGRAMA

Prilikom izvođenja programa, kôd se ne procesuira uvijek liniju po liniju, od početka prema kraju, tj. sljedno. Ponekad u kôdu imamo mjesta odlučivanja na kojima se, ovisno o postavljenom uvjetu, odlučuje kako će se dalje program izvoditi. Na raspolaganju imamo naredbe postavljana uvjeta (grananje), naredbe petlji (ponavljanje), te pozivanje potprograma.

Slijedno izvršavanje naredbi

Ako nema grananja i ponavljanja program se izvodi odozgo prema dolje naredbu po naredbu. Svaka naredba je u svojem redu. Ako zbog preglednosti lomimo naredbu u više redova, na krajevima svakog reda moramo upisati znak _ (podvlaka). To nije potrebno u zadnjem redu gdje je kraj naredbe.

Grananje

Kod uvjetnog odlučivanja (grananja) postavlja se određeni uvjet (logički izraz, npr. upotrebom relacija <,>,=,...) i na osnovu rezultata uvjeta odlučuje se kakav će biti daljnji tijek programa.

Page 6: ASP

If ... Then naredba

Naredba If ... Then jednostavan je primjer grananja. Ako je uvjet koji je naveden iza ključne riječi If ispunjen, onda se izvršava blok kôda između ključnih riječi Then i End If. Ako uvjet nije ispunjen

taj blok koda se preskače. Nakon izvršenja naredbe If ... Then ide se na sljedeću naredbu iza ključne riječi End If.

If uvjet Then

naredbe koje će se izvršiti ako je uvjet ispunjen

End If

Primjer: Korištenje If ... Then naredbe

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_broj

' deklaracija varijable

neki_broj = 15

' pridruživanje vrijednosti varijabli

If neki_broj > 10 Then ' postavljanje uvjeta

Response.Write ("Broj " & neki_broj & " je veći od 10")

End If

' ispitivanje uvjeta i izvršavanje naredbi ako je uvjet ispunjen

%>

</BODY>

</HTML>

If ... Then ... Else naredba

Način rada ove naredbe je da se izvršava blok kôda koji se nalazi iza ključne riječi Then ako je ispunjen uvjet koji je naveden iza ključne riječi If, odnosno da se izvršava blok kôda iza ključne riječi Else ako uvjet nije ispunjen. Zapravo to je izbor između kôda iza ključne riječi Then (ako je uvjet ispunjen) i koda iza ključne riječi Else (ako uvjet nije ispunjen).

If uvjet Then

naredbe koje će se izvršavati ako je uvjet ispunjen

Else

naredbe koje će se izvršavati ako uvjet nije ispunjen

End If

Primjer: Korištenje If ... Then ... Else naredbe

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_broj

' deklaracija varijable

neki_broj = 7

' pridruživanje vrijednosti varijabli

If neki_broj > 10 Then ' postavljanje uvjeta

Response.Write ("Broj " & neki_broj & " je veći od 10")

' kod koji će se izvršiti ako je uvjet ispunjen

Else

Response.Write ("Broj " & neki_broj & " nije veći od 10")

' kod koji će se izvršiti ako uvjet nije ispunjen

End If

%>

</BODY>

</HTML>

Page 7: ASP

ElseIf naredba

Ovaj tip naredbe olakšava višestruko grananje i smanjuje količinu teksta kojega treba unijeti za isto odlučivanje. Ako je prvi uvjet koji naveden iza ključne riječi If ispunjen, izvršava se blok kôda

iza ključne riječi Then. Ako je sljedeći uvjet koji je naveden iza ključne riječi ElseIf ispunjen izvršava se blok kôda iza sljedeće ključne riječi Then, itd. Od čitave ElseIf naredbe izvrši se samo jedan blok koda iza ključne riječi Then zavisno od toga koji je uvjet ispunjen. Ako je više uvjeta ispunjeno izvršava se samo kôd prvog po redu.

If uvjet_1 Then

blok kôda ako je uvjet_1 ispunjen

ElseIf uvjet_2 Then

blok kôda ako je uvjet_2 ispunjen

ElseIf uvjet_3 Then

blok kôda ako je uvjet_3 ispunjen

...

End If

Primjer: Korištenje naredbe ElseIf

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_broj

' deklariranje varijable

neki_broj = 3

' pridruživanje vrijednosti varijabli

If neki_broj < 5 Then ' postavljanje prvog uvjeta

Response.Write ("Broj " & neki_broj & " je manji od 5")

' kôd koji se izvršava ako je ispunjen prvi uvjet

ElseIf neki_broj = 5 Then ' postavljanje drugog uvjeta

Response.Write ("Broj " & neki_broj & " je jednak 5")

' kôd koji se izvršava ako je ispunjen drugi uvjet

ElseIf neki_broj > 5 Then ' postavljanje trećeg uvjeta

Response.Write ("Broj " & neki_broj & " je veći od 5")

' kôd koji se izvršava ako je ispunjen treći uvjet

End If

%>

</BODY>

</HTML>

Select Case naredba

Select Case naredba je još jednostavniji tip odlučivanja, s još reduciranijom sintaksom. Koristi se za višestruko grananje na temelju vrijednosti nekog izraza. Najprije se nekoj varijabli, koju

navodimo iza ključnih riječi Select Case (u ovom slučaju varijabla je odabir), pridruži neka vrijednost, a potom se ta vrijednost uspoređuje sa vrijednostima iza ključnih riječi Case. Kao rezultat se izvodi kôd slučaja u kojem je ta vrijednost pronađena.

odabir = neka_vrijednost

Select Case odabir

Case vrijednost1

kôd u slučaju kada izraz odgovara vrijednosti1

Case vrijednost2

kôd u slučaju kada izraz odgovara vrijednosti2

Case vrijednost3

kôd u slučaju kada izraz odgovara vrijednosti3

...

End Select

Page 8: ASP

Primjer: Korištenje naredbe Select Case

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim a, b, odabir

' deklaracija varijabli

a = 10

b = 3

odabir = "zbrajanje"

' pridruživanje vrijednosti varijablama

Select Case odabir

Case "zbrajanje"

Response.Write (a & " + " & b & " = " & (a + b))

' kôd u slučaju da je varijabla odabir = zbrajanje

Case "oduzimanje"

Response.Write (a & " - " & b & " = " & (a - b))

' kôd u slučaju da je varijabla odabir = oduzimanje

Case "mnozenje"

Response.Write (a & " * " & b & " = " & (a * b))

' kôd u slučaju da je varijabla odabir = množenje

Case "dijeljenje"

Response.Write (a & " / " & b & " = " & (a / b))

' kôd u slučaju da je varijabla odabir = dijeljenje

End Select

%>

</BODY>

</HTML>

Naredbe za ponavljanje (petlje)

Naredbe za ponavljanje ili petlje služe za uzastopno izvršavanje (ponavljanje) određenog kôda.

Do While ... Loop petlja

Kod ove petlje blok kôda se ponavlja sve dok je navedeni uvjet istinit. Prije dolaska na naredbu Do

While uvjet mora biti definiran (sve varijable iz uvjeta moraju imati pridružene vrijednosti). Uvjet

se mora mijenjati u bloku koji se ponavlja (barem jedna od varijabli iz uvjeta mora se promijeniti). Ako uvjet postane lažan prelazi se na naredbu iza ključne riječi Loop.

Do While uvjet

blok kôda koji se izvršava sve dok je uvjet istinit

Loop

Primjer: Korištenje Do While ... Loop petlje

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim x

' deklariranje varijable

x = 1

' pridruživanje vrijednosti varijabli

Do While x < 100 ' postavljanje uvjeta

Response.Write (x & "<br>")

' blok koda koji će se izvršavati sve dok je uvjet istinit

x = x + 1

' promjena varijable x – u svakom ponavljanju x se povećava za 1

Loop

' gornji kôd daje ispis brojeva od 1 do 99

' u svakom ponavljanju x se povećava za 1 sve dok je manji od 100

%>

Page 9: ASP

</BODY>

</HTML>

Do Until ... Loop petlja

Kod ove petlje blok kôda se vrši sve dok se ne zadovolji neki zadani uvjet. Prije dolaska na naredbu Do Until uvjet mora biti definiran (sve varijable iz uvjeta moraju imati pridružene vrijednosti). Uvjet se mora mijenjati u bloku koji se ponavlja (barem jedna od varijabli iz uvjeta mora se promijeniti). Ako se uvjet zadovolji prelazi se na naredbu iza ključne riječi Loop.

Do Until uvjet

blok kôda koji se izvršava sve dok uvjet ne postane istinit

Loop

Primjer: Korištenje petlje Do Until ... Loop

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim x

' deklariranje varijable

x = 1

' pridruživanje vrijednosti varijabli

Do Until x = 100 ' postavljanje uvjeta

Response.Write (x & "<br>")

' blok koda koji će se izvršavati sve dok uvjet ne postane istinit

x = x + 1

' promjena varijable x – u svakom ponavljanju x se povećava za 1

Loop

' gornji kôd daje ispis brojeva od 1 do 99

' u svakom ponavljanju x se povećava za 1 sve dok ne postane jednak 100

%>

</BODY>

</HTML>

For ... Next petlja

Služi za ponavljanje brojanjem. Za svako ponavljanje brojač iz For naredbe povećava se ili smanjuje za zadani korak. Odbrojavanje se vrši od početne vrijednosti definirane nekim izrazom do krajnje vrijednosti određenim korakom. Ako je krajnja vrijednost manja od početne mora se navesti negativan korak. U protivnom se For ... Next petlja neće ponoviti nijednom.

For brojac = pocetna_vrijednost to krajnja_vrijednost step korak

blok kôda koji se izvršava

Next

Primjer: Korištenje For ... Next petlje

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim x

' deklariranje varijable

For x = 1 to 99 step 1

Response.Write (x & "<br>")

Next

' For ... Next petlja ispisuje brojeve od 1 do 99 korakom 1

%>

</BODY>

</HTML>

Page 10: ASP

POTPROGRAMI I FUNKCIJE

Potprogrami

Potprogrami su blokovi kôda koji čine zasebne cjeline i koji se mogu pozvati iz bilo koje linije kôda glavnog programa. Potprograme je korisno koristiti kako bi modularizirali naš kod i omogućili ponovnu upotrebu već gotovog koda.

Ako imamo neku radnju koja će se izvoditi više puta, dobro ju je napisati u obliku potprograma, a zatim ju pozvati na svakom mjestu gdje nam je potrebna. Također ako je glavni program dugačak, zgodno ga je razdijeliti u cjeline (module) kako bi kôd glavnog programa bio čitljiviji.

Definiranje potprograma

Potprogram definiramo tako da iza ključne riječi Sub upišemo ime potprograma, a iza imena u

zagradama navodimo varijable koje ćemo koristiti u potprogramu. Nakon toga slijedi niz naredbi od kojih se potprogram sastoji. Blok naredbi završavamo ključnim riječima End Sub.

Sub ime_potprograma (argumenti)

niz naredbi

End Sub

Pozivanje potprograma

Za pozivanje potprograma potrebno je jednostavno upisati ime potprograma na mjestu gdje nam je potreban. U slučaju da mu trebamo prenijeti neke podatke (parametre), navedemo ih iza imena kao argumente, odvojene zarezom.

<%

ime_potprograma argument1, argument2, argument3

%>

Primjer: Korištenje potprograma

<%

Sub ispis_iz_baze (ime_baze, ime_tablice)

Dim objConn, putanja

putanja = Server.MapPath(ime_baze)

Set objConn = Server.CreateObject ("ADODB.Connection")

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

' konekcija na bazu

Dim objRS

Set objRS = Server.CreateObject ("ADODB.Recordset")

objRS.Open ime_tablice, objConn

' preuzimanje podataka iz baze

Do Until objRS.EOF

Response.Write (objRS ("ime") & "<BR>")

objRS.MoveNext

Loop

' ispis tablice

End Sub

' definiranje potprograma

Response.Write("<B>Popis učenika: </B>" & "<HR>")

ispis_iz_baze "baza.mdb", "ucenici"

' pozivanje potprograma koji će iz baze ispisati učenike

Response.Write("<BR>")

Response.Write("<B>Popis profesora: </B>" & "<HR>")

ispis_iz_baze "baza.mdb", "profesori"

' pozivanje potprograma koji će iz baze ispisati roditelje

Response.Write("<BR>") %>

Page 11: ASP

Objašnjenje: Kreirali smo potprogram koji ispisuje stupac «ime» iz zadane tablice i iz zadane baze.

Pozvali smo ga prvi put kada smo htjeli ispisati sadržaj tablice ucenici iz baze baza.mdb i pozvali

smo ga drugi put kada smo htjeli ispisati sadržaj tablice profesori iz baze baza.mdb. Imena baze i tablica prenijeli smo potprogramu dok smo ga pozivali, kao argumente.

Funkcije

Funkcije su slične potprogramima, ali kada se izvrše, u neki izraz vraćaju određenu vrijednost kao rezultat. Najčešće se pozivaju u sklopu nekog izraza.

Definiranje funkcije

Function ime_funkcije (argumenti)

niz naredbi

End Function

Pozivanje funkcije

Prilikom pozivanja funkcije upisujemo ime funkcije i niz argumenata, ako postoje, unutar zagrada.

x = y + ime_funkcije (argumenti)

Primjer: Korištenje funkcija

<%

Function racunanje (a, b, operacija)

Select Case operacija

Case "+"

racunanje = Cint(a) + Cint(b)

Case "-"

racunanje = Cint(a) - Cint(b)

Case "*"

racunanje = Cint(a) * Cint(b)

Case "/"

racunanje = Cint(a) / Cint(b)

End Select

End Function

' definiranje funkcije

Response.Write("Ako zbrojimo 8 i 4 i pomnožimo rezultat sa 10 dobivamo: ")

Response.Write (racunanje (8, 4, "+") * 10)

Response.Write("<BR>")

Response.Write("Ako podijelimo 8 sa 4 i rezultatu dodamo 10 dobivamo: ")

Response.Write (racunanje (8, 4, "/") + 10)

' pozivanje funkcije u sklopu izraza

%>

Ugrađene funkcije

Matematičke funkcije

Funkcija Značenje

Abs(broj) Apsolutna vrijednost Cos(broj) Kosinus kuta Fix(broj) Cjelobrojni dio broja Hex(broj) Pretvaranje broja u heksadekadski oblik Round(broj) Zaokruživanje broja na cjelobrojnu vrijednost Round(broj, dec) Zaokruživanje broja na određeni broj decimala

Sin(broj) Sinus kuta Sqr(broj) Drugi korijen broja Tan(broj) Tangens kuta

Page 12: ASP

Primjer: Korištenje matematičkih funkcija:

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_broj

' deklaracija varijable

neki_broj = -2.586

' pridruživanje vrijednosti varijabli

Response.Write("Apsolutna vrijednost broja " & neki_broj & " je: ")

Response.Write (Abs(neki_broj) & "<BR>")

' ispisivanje apsoluitne vrijednosti broja

Response.Write("Cjelobrojni dio broja " & neki_broj & " je: ")

Response.Write (Fix(neki_broj) & "<BR>")

' ispisivanje cjelobrojnog dijela broja

Response.Write("Broj " & neki_broj & " zaokružen na cjelobrojnu vrijednost: ")

Response.Write (Round(neki_broj) & "<BR>")

%>

</BODY>

</HTML>

Datumske funkcije

Ako želimo doznati vrijeme ili datum, imamo na raspolaganju funkcije Time i Date. U slučaju da želimo dobiti oba podatka odjednom koristimo funkciju Now.

Funkcija Značenje Date daje ispis trenutnog datuma Time daje ispis trenutnog vremena Now daje ispis datuma i vremena

Da bismo datum rastavili na pojedine elemente na raspolaganju imamo nekoliko funkcija.

Funkcija Značenje Year(Date) daje godinu navedenog datuma

Month(Date) daje mjesec navedenog datuma Day(Date) daje dan navedenog datuma

MonthName(Month(Date)) daje ime mjeseca navedenog datuma WeekdayName(Weekday(Date)) daje ime dana navedenog datuma

Primjer: Korištenje datumskih funkcija

<% Option Explicit %>

<HTML>

<BODY>

<%

Response.Write ("Datum: " & Date & "<br>" )

' ispisuje današnji datum

Response.Write ("Vrijeme: " & Time & "<br>" )

' ispisuje trenutno vrijeme

Response.Write ("Godina: " & Year(Date) & "<br>" )

' ispisuje godinu

Response.Write ("Mjesec: " & Month(Date) & "<br>" )

' ispisuje mjesec u godini

Response.Write ("Ime mjeseca: " & MonthName(Month(Date)) & "<br>" )

' ispisuje ime mjeseca

Response.Write ("Dan u mjesecu: " & Day(Date) & "<br>" )

' ispisuje dan u mjesecu

Response.Write ("Ime dana: " & WeekdayName(Weekday(Date)) )

' ispisuje ime dana

%>

</BODY>

</HTML>

Page 13: ASP

Tekstualne funkcije

Tekstualne funkcije pružaju nam mogućnost promjene određene tekstualne varijable, te mogućnost mijenjanja i izvlačenja dijela teksta.

Funkcija Značenje UCase(tekst) pretvara sva slova teksta u velika slova

LCase(tekst) pretvara sva slova teksta u mala slova LTrim(tekst) uklanja sva prazna mjesta s lijeve strane teksta. Tako bi npr. " Danas je nedjelja" postalo "Danas je nedjelja" RTrim(tekst) uklanja sva prazna mjesta s desne strane teksta. Tako bi npr. "Danas je nedjelja " postalo "Danas je nedjelja" Trim(tekst) uklanja sve prazna mjesta s obje strane teksta Space(broj) vraća određeni broj razmaka. Mora se pisati u unutar <PRE> ... </PRE> tagova jer

HTML prihvaća samo jedno prazno mjesto. String(broj, znak) vraća zadani broj zadanih znakova. Tako npr. String (3, #) daje ### Len(tekst) vraća broj znakova teksta unutar zagrada. Tako bi rezultat funkcije Len("Nesto") bio broj 5

Primjer: Korištenje tekstualnih funkcija

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_tekst

' deklaracija varijable

neki_tekst = "ovo je običan tekst"

' pridruživanje vrijednosti varijabli

Response.Write("Tekst glasi: " & neki_tekst & "<BR>")

' početni tekst

Response.Write("Velikim slovima: " & UCase(neki_tekst) & "<BR>")

' tekst pisan velikim slovima

Response.Write("Broj znakova koje tekst sadrži: " & Len(neki_tekst))

' ispis broja znakova koje tekst sadrži

%>

</BODY>

</HTML>

Konverzija vrijednosti varijabli

Ponekad je potrebno promijeniti vrijednost određenoj varijabli iz jednog tipa u drugi. Ako je npr.

neka varijabla tipa String, a u njoj je pohranjen neki broj s kojim trebamo izvršiti neku matematičku operaciju, prvo moramo vrijednost te varijable konvertirati u tip Integer.

Funkcija Značenje Cint(varijabla) pretvara varijablu u tip Integer Clng(varijabla) pretvara varijablu u tip Long Cstr(varijabla) pretvara varijablu u tip String Cdbl(varijabla) pretvara varijablu u tip Double Csng(varijabla) pretvara varijablu u tip Single

Page 14: ASP

Primjer: Konverzija vrijednosti varijabli

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim prvi_broj, drugi_broj, rezultat

' deklariranje varijabli

prvi_broj = "1214"

drugi_broj = "6475"

' pridruživanje vrijednosti varijablama

rezultat = Cint(prvi_broj) + Cint(drugi_broj)

' konverzija vrijednosti iz tipa String u tip Integer i računanje rezultata

Response.Write("Zbroj brojeva je: " & rezultat)

' ispis rezultata

%>

</BODY>

</HTML>

Ugrađene funkcije

Matematičke funkcije

Funkcija Značenje Abs(broj) Apsolutna vrijednost Cos(broj) Kosinus kuta

Fix(broj) Cjelobrojni dio broja Hex(broj) Pretvaranje broja u heksadekadski oblik Round(broj) Zaokruživanje broja na cjelobrojnu vrijednost Round(broj, dec) Zaokruživanje broja na određeni broj decimala Sin(broj) Sinus kuta Sqr(broj) Drugi korijen broja Tan(broj) Tangens kuta

Primjer: Korištenje matematičkih funkcija:

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_broj

' deklaracija varijable

neki_broj = -2.586

' pridruživanje vrijednosti varijabli

Response.Write("Apsolutna vrijednost broja " & neki_broj & " je: ")

Response.Write (Abs(neki_broj) & "<BR>")

' ispisivanje apsoluitne vrijednosti broja

Response.Write("Cjelobrojni dio broja " & neki_broj & " je: ")

Response.Write (Fix(neki_broj) & "<BR>")

' ispisivanje cjelobrojnog dijela broja

Response.Write("Broj " & neki_broj & " zaokružen na cjelobrojnu vrijednost: ")

Response.Write (Round(neki_broj) & "<BR>")

%>

</BODY>

</HTML>

Page 15: ASP

Datumske funkcije

Ako želimo doznati vrijeme ili datum, imamo na raspolaganju funkcije Time i Date. U slučaju da želimo dobiti oba podatka odjednom koristimo funkciju Now.

Funkcija Značenje Date daje ispis trenutnog datuma

Time daje ispis trenutnog vremena Now daje ispis datuma i vremena

Da bismo datum rastavili na pojedine elemente na raspolaganju imamo nekoliko funkcija.

Funkcija Značenje Year(Date) daje godinu navedenog datuma

Month(Date) daje mjesec navedenog datuma Day(Date) daje dan navedenog datuma MonthName(Month(Date)) daje ime mjeseca navedenog datuma WeekdayName(Weekday(Date)) daje ime dana navedenog datuma

Primjer: Korištenje datumskih funkcija

<% Option Explicit %>

<HTML>

<BODY>

<%

Response.Write ("Datum: " & Date & "<br>" )

' ispisuje današnji datum

Response.Write ("Vrijeme: " & Time & "<br>" )

' ispisuje trenutno vrijeme

Response.Write ("Godina: " & Year(Date) & "<br>" )

' ispisuje godinu

Response.Write ("Mjesec: " & Month(Date) & "<br>" )

' ispisuje mjesec u godini

Response.Write ("Ime mjeseca: " & MonthName(Month(Date)) & "<br>" )

' ispisuje ime mjeseca

Response.Write ("Dan u mjesecu: " & Day(Date) & "<br>" )

' ispisuje dan u mjesecu

Response.Write ("Ime dana: " & WeekdayName(Weekday(Date)) & "<br>" )

' ispisuje ime dana

%>

</BODY>

</HTML>

Tekstualne funkcije

Tekstualne funkcije pružaju nam mogućnost promjene određene tekstualne varijable, te mogućnost mijenjanja i izvlačenja dijela teksta.

Funkcija Značenje UCase(tekst) pretvara sva slova teksta u velika slova

LCase(tekst) pretvara sva slova teksta u mala slova LTrim(tekst) uklanja sva prazna mjesta s lijeve strane teksta. Tako bi npr. " Danas je nedjelja"

postalo "Danas je nedjelja" RTrim(tekst) uklanja sva prazna mjesta s desne strane teksta. Tako bi npr. "Danas je nedjelja " postalo "Danas je nedjelja" Trim(tekst) uklanja sve prazna mjesta s obje strane teksta Space(broj) vraća određeni broj razmaka. Mora se pisati u unutar <PRE> ... </PRE> tagova jer

HTML prihvaća samo jedno prazno mjesto. String(broj, znak) vraća zadani broj zadanih znakova. Tako npr. String (3, #) daje ### Len(tekst) vraća broj znakova teksta unutar zagrada. Tako bi rezultat funkcije Len("Nesto") bio broj 5

Page 16: ASP

Primjer: Korištenje tekstualnih funkcija

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim neki_tekst

' deklaracija varijable

neki_tekst = "ovo je običan tekst"

' pridruživanje vrijednosti varijabli

Response.Write("Tekst glasi: " & neki_tekst & "<BR>")

' početni tekst

Response.Write("Velikim slovima: " & UCase(neki_tekst) & "<BR>")

' tekst pisan velikim slovima

Response.Write("Broj znakova koje tekst sadrži: " & Len(neki_tekst))

' ispis broja znakova koje tekst sadrži

%>

</BODY>

</HTML>

Konverzija vrijednosti varijabli

Ponekad je potrebno promijeniti vrijednost određenoj varijabli iz jednog tipa u drugi. Ako je npr. neka varijabla tipa String, a u njoj je pohranjen neki broj s kojim trebamo izvršiti neku matematičku operaciju, prvo moramo vrijednost te varijable konvertirati u tip Integer.

Funkcija Značenje Cint(varijabla) pretvara varijablu u tip Integer Clng(varijabla) pretvara varijablu u tip Long

Cstr(varijabla) pretvara varijablu u tip String Cdbl(varijabla) pretvara varijablu u tip Double Csng(varijabla) pretvara varijablu u tip Single

Primjer: Konverzija vrijednosti varijabli

<% Option Explicit %>

<HTML>

<BODY>

<%

Dim prvi_broj, drugi_broj, rezultat

' deklariranje varijabli

prvi_broj = "1214"

drugi_broj = "6475"

' pridruživanje vrijednosti varijablama

rezultat = Cint(prvi_broj) + Cint(drugi_broj)

' konverzija vrijednosti iz tipa String u tip Integer i računanje rezultata

Response.Write("Zbroj brojeva je: " & rezultat)

' ispis rezultata

%>

</BODY>

</HTML>

KORIŠTENJE VANJSKIH DATOTEKA

Ubacivanje datoteke u kôd

Isti kôd koji koristimo na više mjesta ne moramo svaki put iznova pisati. Dovoljno je spremiti ga u zasebnu datoteku i kasnije ga ubaciti na mjestu gdje nam je potreban.

Tamo gdje želimo da se kod pojavi upišemo ovo:

<! - - #include file="ime_datoteke" - - >

Page 17: ASP

Ako datoteka koju ubacujemo nije u istoj mapi onda moramo napisati njezinu putanju. Ako je datoteka koju ubacujemo u korjenskom direktoriju web servera onda pišemo:

<! - - #include virtual="ime_datoteke" - - >

Ovom tehnikom se ne može napraviti ubacivanje s odlučivanjem jer se odluka o tome hoće li datoteka biti ubačena ne može provesti prije ubacivanja same datoteke.

Izvršavanje druge ASP stranice

Kad želimo izvršiti kôd neke druge ASP stranice koristimo Server.Execute metodu. Prvo se izvršavaju naredbe iz prve ASP stranice (do mjesta predaje kontrole drugoj stranici), zatim se kontrola predaje drugoj stranici i nakon izvršenja njezinog kôda kontrola se vraća prvoj stranici. Ona nastavlja izvršavati svoj kôd od onog mjesta gdje je kontrola predana drugoj stranici.

Primjer: Poziv aplikacije metodom Execute

Prva stranica (prva.asp)

<HTML>

<BODY>

<%

Response.Write ("Sada se nalazimo na stranici prva.asp <BR>")

Server.Execute ("druga.asp")

Response.Write ("Opet smo se vratili na stranicu prva.asp <BR>")

%>

</BODY>

</HTML>

Druga stranica (druga.asp)

<HTML>

<BODY>

<%

Response.Write ("Sada se nalazimo na stranici druga.asp <BR>")

%>

</BODY>

</HTML>

Objašnjenje: Prvo se izvršio kod na stranici "prva.asp" koji je generirao tekst "Sada se nalazimo na

stranici prva.asp <BR>", zatim je pozvana stranica "druga.asp" koja je generirala tekst "Sada se nalazimo na stranici druga.asp <BR>". Nakon izvršenja stranice "druga.asp", vratili smo se na prvu stranicu koja je generirala tekst "Opet smo se vratili na stranicu prva.asp <BR>"

Predaja kontrole drugoj ASP stranici

Razlika ove metode u odnosu na prethodnu je u tome što se nakon predaje kontrole drugoj stranici

više ne vraćamo na prvu stranicu koja je izvršila predaju kontrole. Predaja kontrole se vrši pomoću Server.Transfer metode. Ovom metodom zapravo dvije različite stranica generiraju jedan HTML dokument.

Primjer: Predaja kontrole drugoj stranici metodom Transfer

Prva stranica (prva.asp)

<HTML>

<BODY>

<%

Response.Write ("Sada se nalazimo na stranici prva.asp <BR>")

Server.Transfer ("druga.asp")

Page 18: ASP

%>

</BODY>

</HTML>

Druga stranica (druga.asp)

<HTML>

<BODY>

<%

Response.Write ("Sada se nalazimo na stranici druga.asp <BR>")

%>

</BODY>

</HTML>

Objašnjenje: Prva stranica je generirala tekst "Sada se nalazimo na stranici prva.asp <BR>", zatim je kontrola predana drugoj stranici koja je generirala tekst "Sada se nalazimo na stranici druga.asp <BR>". Za razliku od prethodnog primjera, ovdje nema povratka opet na prvu stranicu.

RESPONSE OBJEKT

Jedan od najvažnijih objekata u ASP-u je Response objekt. Response objekt koristimo za slanje podataka prema klijentu.

Generiranje HTML kôda (Response.Write)

Kad god želimo generirati dio HTML dokumenta koji ide do klijentovog web preglednika, koristimo se metodom Write objekta Response. Ona generira HTML i šalje ga klijentovom web pregledniku.

Primjer: Generiranje teksta metodom Write

<%

Response.Write ("neki tekst")

%>

Umjesto pisanja Response.Write, možemo koristiti i kraći način: znak jednako (=) i iza njega ono što bismo obično stavili u zagradu kada bismo koristili puni oblik naredbe Response.Write.

Primjer: Generiranje teksta (skraćeni oblik)

<%= "neki_tekst" %>

Ako npr. želimo ispisati <HR Width=50%> i napišemo Response.Write ("<HR Width=50%>") došlo bi do pogreške jer bi server znakove %> interpretirao kao završetak ASP koda. Da bi to izbjegli pišemo ovo: Response.Write ("<HR Width = 50%\>"). Ista je situacija i s navodnicima. Dvostruke navodnike koji se nalaze unutar teksta kojeg želimo ispisati moramo koristiti u parovima.

Primjer: Generiranje HTML taga metodom Write

Response.Write ("<IMG SRC=""slika.jpg"">")

Ukoliko želimo prikazati neki tekst koji sadrži HTML tagove, a pritom ne želimo da ih web

preglednik interpretira kao HTML, nego prikaže kao običan tekst, moramo koristiti HTML enkodiranje.

Primjer: Prikaz HTML tagova u pregledniku

Response.Write (Server.HTMLEncode("<IMG SRC=""slika.jpg"">"))

Page 19: ASP

Rad sa bufferom (Response.Buffer)

Prilikom slanja stranice prema klijentu možemo odabrati način na koji će ona biti poslana. Ako koristimo buffer onda se cijela stranica šalje tek kada server izvrši cijelu skriptu. Bez upotrebe

buffera sadržaj se ispisuje postepeno tako da klijent ne mora dugo čekati da bi dobio informaciju. (korisno ako je za izvršenje kôda potrebno dosta vremena)

Primjer: Uključivanje buffera

Response.Buffer = True

Response.Buffer je svojstvo koje služi za uključivanje ili isključivanje buffera postavljanjem njegove vrijednosti na True ili False. Inicijalno je postavljen na True.

Redirekcija stranice (Response.Redirect)

Ponekad želimo klijenta poslati na drugu adresu prije nego se otvori stranica čiji je URL klijent

upisao. To se naziva redirekcija. Redirekcija se obavlja metodom Response.Redirect URL tako da se unese URL one stranice na koju se želi poslati klijent.

Primjer: Redirekcija stranice metodom Redirect

Response.Redirect "nova_stranica.asp"

REQUEST OBJEKT

Obrasci

Obrasci služe za dobivanje informacija izravno od korisnika. Mogu imati različite elemente: tekstualna polja, padajuće liste, gumbe za selektivni odabir, gumbe za višestruki odabir, gumbe za izvršenje određenih akcija... Svi elementi koji pripadaju obrascu moraju biti sadržani unutar tagova <FORM> i </FORM>. Tag <FORM> ima dva bitna parametra: METHOD (određuje način na koji se prikupljne informacije šalju serveru i ACTION (određuje kojoj se aplikaciji šalju prikupljene informacije.

Primjer: HTML tag za obrazac

<FORM METHOD=POST ACTION="neka_stranica.asp">

...

</FORM>

Method osobina: Ako METHOD osobinu postavimo kao GET onda se informacije sakupljene obrascem prenose tekstualnim upitom (QueryString) i biti će vidljive u adresnom polju web preglednika, što nije

prikladno za lozinke i povjerljive podatke. Ako METHOD osobinu postavmo kao POST, informacije su sakrivene od klijenta i prenose se putem HTTP zaglavlja (header) koja šalje klijentov web preglednik prilikom postavljanja zahtjeva za novom stranicom.

Action osobina: Koristi se da bismo naveli adresu aplikacije kojoj šaljemo informacije prikupljene obrascem.

Page 20: ASP

Preuzimanje informacija iz obrasca

Da bismo obradili informacije iz nekog obrasca prvo ih trebamo pročitati. Za to nam služi Request objekt.

Ako smo prilikom slanja koristili metodu GET onda za čitanje upotrebljavamo ovu sintaksu:

neka_varijabla = Request.QueryString ("ime_polja_iz obrasca")

Ako smo prilikom slanja koristili metodu POST onda za čitanje upotrebljavamo ovu sintaksu:

neka_varijabla = Request.Form ("ime_polja_iz obrasca")

U slučaju da ne znamo koju smo metodu upotrebljavali, jednostavno upišemo:

neka_varijabla = Request ("ime_polja_iz obrasca")

Elementi obrazaca

Tekstualno polje (TextField)

Primjer: HTML tag za tekstualno polje

<INPUT TYPE=TEXT SIZE=20 VALUE="neki_tekst" NAME=ime_polja>

Čitanje informacija iz tekstualnog polja: kod Request naredbe navodimo ime polja (NAME), a kao rezultat dobivamo ono što je korisnik upisao u tekstualno polje (VALUE).

Primjer: Preuzimanje vrijednosti iz tekstualnog polja

<%

Dim str_tekst

str_tekst = Request ("ime_polja")

%>

Skrivena tekstualna polja (Hidden TextField)

Ako želimo prenositi neke informacije bitne za funkcioniranje aplikacije kojoj ih šaljemo, a ne

želimo da one budu vidljive, koristimo skrivena tekstualna polja: Primjer: HTML tag za skriveno polje

<% INPUT TYPE=HIDDEN VALUE="neki_tekst" NAME=ime_skrivenog_polja>

Čitanje informacija iz skrivenog tekstualnog polja: Kod Request naredbe navodimo ime skrivenog polja (NAME), a kao rezultat dobivamo ono što je upisano kao VALUE.

Primjer: Preuzimanje vrijednosti iz skrivenog polja

<%

Dim str_tekst

str_tekst = Request ("ime_skrivenog_polja")

%>

Page 21: ASP

Tekstualna polja za veće količine teksta (TextArea)

Primjer: HTML tag za tekstualno polje za veće količine teksta

<TEXTAREA NAME="ime_polja" COLS="30" ROWS="3">neki tekst</TEXTAREA>

Čitanje informacija iz tekstualnog polja za veće količine teksta: Kod Request naredbe navodimo ime polja (NAME), a rezultat je ono što je korisnik upisao u tekstualno polje.

Primjer: Preuzimanje vrijednosti iz tekstualnog polja za veće količine teksta

<%

Dim str_tekst

str_tekst = Request ("ime_polja")

%>

Padajuće liste

Primjer: HTML tag za padajuće liste

<SELECT NAME="ime_liste">

<OPTION VALUE="opcija_1">tekst_1

<OPTION VALUE="opcija_2">tekst_2

</SELECT>

Čitanje informacija iz padajućih lista: Kod Request naredbe navodimo ime izbornika (NAME), a rezultat je vrijednost one opcije koju je korisnik odabrao (OPTION VALUE).

Primjer: Preuzimanje vrijednosti iz padajućih lista

<%

Dim str_tekst

str_tekst = Request ("ime_izbornika")

%>

Gumbi za višestruki odabir (CheckBox)

Primjer: HTML tag za gumb za višestruki odabir

<INPUT TYPE=CHECKBOX NAME=ime_polja VALUE="neka_vrijednost">

Čitanje informacija iz gumba za višestruki odabir: Ako svim poljima koja čine grupu damo isto ime (NAME), informacije prikupljamo preko atributa VALUE. Tada informacija prenesena do ASP stranice ima format zarezom odvojene liste.

Primjer: Preuzimanje vrijednosti iz gumba za višestruki odabir

<%

Dim str_tekst

str_tekst = Request ("ime_polja")

%>

Gumbi za jednostruki odabir (Radiobutton)

Gumbi za jednostruki odabir nam omogućuju odabir samo jedne opcije unutar određene grupe. Zato je važno da svima u grupi pridružimo isto ime. Kako jedan gumb mora biti inicijalno označen, koristimo se atributom CHECKED.

Page 22: ASP

Primjer: HTML tag za gumbe za jednostruki odabir

<INPUT TYPE=RADIO NAME=ime_grupe VALUE="vr_1" CHECKED>

...

<INPUT TYPE=RADIO NAME=ime_grupe VALUE="vr_2">

Čitanje informacija iz gumba za jednostruki odabir: Kod Request naredbe navodimo ime grupe

(NAME), a vrijednost koju dobivamo kao rezultat zapravo je vrijednost pohranjena u atributu VALUE označenog gumba.

Primjer: Preuzimanje vrijednosti iz gumba za jednostruki odabir

<%

Dim str_tekst

str_tekst = Request ("ime_grupe")

%>

Primjer: Kalkulator

Prva stranica sadrži obrazac u kojem se upisuju brojevi i odabire računska operacija koju želimo izvršiti.

<FORM name="obrazac1" method="get" action="kalkulator.asp">

Prvi broj:

<INPUT name="txtPrvi" type="text" size="12" maxlength="4">

<BR>

Drugi broj:

<INPUT name="txtDrugi" type="text" size="12" maxlength="4">

<BR>

Operacija:

<SELECT name="selOperacija">

<OPTION value="+" selected>zbrajanje</OPTION>

<OPTION value="-">oduzimanje</OPTION>

<OPTION value="*">množenje</OPTION>

<OPTION value="/">dijeljenje</OPTION>

</SELECT>

<BR>

<INPUT type="submit" name="Submit" value="Izračunaj">

<INPUT type="reset" name="Reset" value=" Poništi ">

</FORM>

Druga stranica sadrži kôd koji obrađuje podatke prikupljene obrascem i ispisuje rezultat.

<%

Dim prvi_broj, drugi_broj, operacija, rezultat

' deklariranje varijabli

prvi_broj = Request.QueryString("txtPrvi")

drugi_broj = Request.QueryString("txtDrugi")

operacija = Request.QueryString("selOperacija")

' dobivanje vrijednost iz obrasca

Select Case operacija

Case "+"

rezultat = Cint(prvi_broj) + Cint(drugi_broj)

Case "-"

rezultat = Cint(prvi_broj) - Cint(drugi_broj)

Case "*"

rezultat = Cint(prvi_broj) * Cint(drugi_broj)

Case "/"

rezultat = Cint(prvi_broj) / Cint(drugi_broj)

End Select

' odabir operacije i računanje rezultata

Response.Write ("Rezultat je: " & rezultat)' ispis rezultata

%>

Page 23: ASP

Upotreba QueryStringa za prijenos informacija

Osim prenošenja informacija putem obrasca, imamo i mogućnost prenošenja putem adrese (QueryStringa).

QueryString je dodatak na URL kojim možemo prenijeti informaciju, a od URL-a je odvojen znakom upitnika. Sam QueryString sastoji se od parova ime=vrijednost međusobno povezanih znakom &.

Primjer: Parametri u adresi

?ime=Pero&prezime=Perić&zanimanje=profesor

Možemo i kreirati link s QueryStringom koji će prenijeti informaciju nekoj ASP aplikaciji.

Primjer: Link sa parametrima u adresi

<a href="get.asp?odgovor=da" > DA </a>

<a href="get.asp?odgovor=ne" > NE </a>

Request objekt – HTTP zaglavlja i Environment varijable

Osim za prikupljanje informacija iz polja obrasca, Request objekt nam služi i za dobivanje podataka o klijentu (preko HTTP zaglavlja).

Čitanje HTTP zaglavlja:

<%

Dim str_tekst

str_tekst = Request.ServerVariables ("ime_zaglavlja")

%>

Ime HTTP zaglavlja Značenje ALL_HTTP sva zaglavlja

REMOTE_HOST klijentova IP adresa HTTP_USER_AGENT tip OS-a i ime web preglednika HTTP_REFERER URL linka s kojeg je pristupljeno stranici

HTTP zaglavlja su korisna za dobivanje informacija o trenutačnom posjetitelju stranice, ali ako želimo dobiti informacije o web serveru ili o traženoj ASP stranici, koristimo Environment varijable.

Čitanje Environment varijabli:

<%

Dim str_tekst

str_tekst = Request.ServerVariables ("ime_zaglavlja")

%>

Ime Environment varijable Značenje PATH_INFO URL PATH_TRANSLATED Puna (fizička) adresa trenutačne ASP stranice APPL_PHYSICAL_PATH Fizička adresa korjenskog direktorija web servera.

SERVER_NAME Ime web servera

UPOTREBA COOKIEJA

Cookieji su male tekstualne datoteke u koje se mogu pohranjivati neke informacije koje klijent jednom upiše na nekoj stranici (npr. u obrascu), a da ih kasnije ne bi trebao ponovno upisivati. Kod upotrebe cookieja postoji jedan problem, a to je da web preglednici omogućuje klijentu da ne prihvaća cookije. Kad neki web site kreira cookie na klijentovom računalu, samo taj dotični web site može pročitati taj cookie.

Page 24: ASP

Postoje dva tipa cookieja: obični cookie u kojem je zapisana jedna informacija i cookie s ključem u koji možemo unijeti više informacija koje se poslije prepoznaju po jedinstvenom ključu.

Čitanje cookieja

Da bi pročitali sadržaj cookieja koristimo se Request objektom.

Ako želimo pročitati sve cookieje pišemo:

<%= Request.ServerVariables("HTTP_COOKIE") %>

Ako čitamo cookie određenog imena onda pišemo:

Request.Cookies("ime_cookieja")

Ako taj cookie ima i jedinstvene ključeve onda informaciju pohranjenu u cookieju dobivamo na sljedeći način:

Request.Cookies("ime_cookieja")("ime_kljuca")

Pisanje Cookieja

Kad želimo upisati neku informaciju u cookie i to pohraniti na klijentovo računalo koristimo Response objekt.

Ako cookie nema ključeva onda neku vrijednost pohranjujemo na sljedeći način:

Response.Cookies("ime_cookieja") = "vrijednost"

Ako cookie ima ključeve onda se informacije pohranjuju u njega na sljedeći način:

Response.Cookies("neki_cookie")("kljuc_1") = "vrijednost_1"

Response.Cookies("neki_cookie")("kljuc_2") = "vrijednost_2"

Response.Cookies("neki_cookie")("kljuc_3") = "vrijednost_3"

Cookieji se zadržavaju na korisnikovom računalu neko vrijeme, što je moguće podesiti osobinom Expires koja određuje kad se cookie briše sa računala. Ako tu osobinu ne definiramo onda se cookie briše čim klijent napusti web site.

Vrijeme brisanja Cookija možemo odrediti tako da navedemo koliko će dana ostati na na korisnikovom računala (u ovom slučaju to je 7 dana).

Response.Cookies("ime_cookieja").Expires = Date + 7

Vrijeme brisanja Cookija možemo odrediti i tako da navedemo točan datum kada će Cookie biti obrisan.

Response.Cookies("ime_cookieja").Expires = #25/6/2004

Primjer: Korištenje Cookieja

U obrazac upisujemo vrijednosti koje se šalju ASP stranici "cookie.asp" koja te vrijednosti upisuje u Cookie. Kôd obrasca izgleda ovako:

<FORM name="obrazac1" method="post" action="cookie.asp">

Ime: <INPUT name="txtIme" type="text" size="16"> <BR>

Prezime: <INPUT name="txtPrezime" type="text" size="16"> <BR>

<INPUT type="submit" name="Submit" value=" Pošalji ">

<INPUT type="reset" name="Reset" value=" Poništi ">

</FORM>

Page 25: ASP

Ovako izgleda kôd ASP stranice koja prihvaća podatke iz obrasca i upisuje ih u Cookie. Uključen je i kôd koji čita vrijednosti iz Cookieja i prikazuje ih u web pregledniku.

<%

Response.Cookies("podaci").Expires = Date + 7

Response.Cookies("podaci")("ime") = Request ("txtIme")

Response.Cookies("podaci")("prezime") = Request ("txtPrezime")

Response.Cookies("podaci")("datum") = Date

' pisanje Cookieja

Response.Write("U Cookie je upisano: <BR>")

Response.Write("Ime: " & Request.Cookies("podaci")("ime") & "<BR>")

Response.Write("Prezime: " & Request.Cookies("podaci")("prezime") & "<BR>")

Response.Write("Datum: " & Request.Cookies("podaci")("datum") & "<BR>")

' čitanje Cookieja

%>

SESSION OBJEKT

Rad sa Session objektom sličan je upotrebi Cookieja. Kada se klijent logira na stranicu koja koristi

Session objekte onda se svakom klijentu pridruži njegov session u koji možemo staviti niz varijabli. Session objekt se za svakog klijenta stvara na strani servera, a ne na strani klijenta kao što je to slučaj kod Cookieja. Session objekti drže podatke o klijentu za vrijeme dok je on na siteu koji mu je pridjelio Session objekt. Oni se gase nakon što klijent nije aktivan određeni broj minuta što se određuje parametrom Timeout (jedinica je minuta). Postoji i mogućnost zatvaranja pojedinih session objekata upotrebom metode Abandon (korisno za LogOff klijenta).

Da bi se podaci iz pojedinih sessiona mogli pridjeljivati pravim korisnicima, na strani klijenta i servera se stvaraju unikatni ključevi, nazvani SessionID. Postavljanje vremena trajanja sessiona (u minutama):

Session.Timeout = 5

Ako želimo trenutno zatvoriti session onda moramo upisati ovo:

Session.Abandon

Da bismo nešto upisali u session koristimo sintaksu:

Session.Contents ("ime_varijable") = vrijednost

Da bi pojedinu vrijednost pročitali koristimo sintaksu:

vrijednost = Session.Contents ("ime_varijable")

Primjer: Korištenje sessiona

U obrazac upisujemo vrijednosti koje se šalju ASP stranici "session.asp" koja te vrijednosti upisuje u session. Kôd obrasca izgleda ovako:

<FORM name="obrazac1" method="post" action="cookie.asp">

Ime: <INPUT name="txtIme" type="text" size="16"> <BR>

Prezime: <INPUT name="txtPrezime" type="text" size="16"> <BR>

<INPUT type="submit" name="Submit" value=" Pošalji ">

<INPUT type="reset" name="Reset" value=" Poništi ">

</FORM>

Page 26: ASP

Ovako izgleda kôd ASP stranice koja prihvaća podatke iz obrasca i upisuje ih u session. Uključen je i kôd koji čita vrijednosti iz sessiona i prikazuje ih u web pregledniku.

<%

Session.Timeout = 30

' postavljanje vremena trajanja sessiona

Session.Contents("ime") = Request ("txtIme")

Session.Contents("prezime") = Request ("txtPrezime")

' upisivanje podataka u session

Response.Write("U session je upisano: <BR>")

Response.Write(Session.Contents("ime") & " " & Session.Contents("prezime"))

' čitanje podataka iz sessiona

%>

APPLICATION OBJEKT

Za razliku od Session objekta koji se kreira pojedinačno za svakoga klijnta Application objekt se

kreira na nivou servera i predstavlja jedan globalni objekt za sve korisnike (sadržane informacije su dostupne svim klijentima).

Za pridruživanje neke vrijednosti nekoj varijabli Application objekta koristimo sintaksu:

Application ("ime_varijable") = vrijednost

Da bi pojedinu vrijednost pročitali koristimo sintaksu:

vrijednost = Application("ime_varijable")

Kako Application objekt vrijedi za sve klijente, prilikom unosa vrijednosti u neku od njegovih

varijabli moramo spriječiti situaciju istovremenog pristupa više korisnika toj varijabli. Zbog toga je spremanje podataka u Application objekt bolje izvesti ovako:

Application.Lock

Application ("ime_varijable") = vrijednost

Application.Unlock

Prvo Application objekt zaključamo za ostale korisnike, zatim upišemo u njega ono što želimo i na kraju ga opet otključamo da bi i drugi mogli u njega pohranjivati podatke.

Primjer: Korištenje Application objekta - brojač posjeta serveru

Datoteka global.asa

<script language="vbscript" runat="server">

Sub Application_OnStart

Application("broj_posjeta")=0

End Sub

Sub Application_OnEnd

Application("broj_posjeta") = Application("broj_posjeta") - 1

End Sub

</script>

Page 27: ASP

Stranica koja koristi Application objekt:

<!--#include file="global.asa"-->

<%

Application.Lock()

Application.Contents("ime") = "Nikola"

Application.Contents("prezime") = "Mikulec"

Application.Contents("broj_posjeta") = Application.Contents("broj_posjeta") +1

Application.UnLock()

' upisivanje u application objekt

Response.Write (Application.Contents("ime") & "<BR>")

Response.Write (Application.Contents("prezime") & "<BR>")

Response.Write("Broj posjeta: " & Application.Contents("broj_posjeta"))

' ispisivanje iz application objekta

%>

Inicijalizacija Application i Session varijabli

Application i Session objekti su na početku prazni. Ako određene varijable moraju imati unaprijed

zadane vrijednosti prije nego klijent pristupi stranici onda moramo inicijalizirati varijable.

Inicijalizacija se izvodi događajima OnStart. Događaj Session_OnStart će se izvršiti svaki put kad pristupi novi klijent, dok će se događaj Application_OnStart ostvariti prilikom pokretanja prvog Session_OnStart događaja. Taj kôd se sprema u zasebnu datoteku Global.asa i stavljamo ga obavezno u korjenski direktorij našeg servera.

Primjer: Inicijalizacija Aplication i Session varijabli

<SCRIPT LANGUAGE="VBScript" RUNAT=Server>

Sub Application_OnStart ()

Application("varijabla_1") = neka_vrijednost_1

End Sub

Sub Session_OnStart ()

Session("varijabla_1") = neka_vrijednost_1

End Sub

</SCRIPT>

SERVER OBJEKT

Ovaj objekt najčešće koristimo za kreiranje ostalih objekata. Tome služi CreateObject metoda. Nakon što kreiramo neki objekt pomoću CreateObject metode, možemo koristiti njegova svojstva i metode.

Primjer: Kreiranje ADO connection objekta

<% Set conn = Server.CreateObject("ADODB.Connection") %>

ScriptTimeout svojstvo služi za određivanje koliko vremena server smije najviše potrošiti na obradu

pojedine ASP stranice. Upisuje se na početku ASP stranice. Inicijalno je 90 sekundi.

Primjer: Maksimalno vrijeme obrade stranice

<% Server.ScriptTimeout = 90 %>

Page 28: ASP

HTMLEncode je su vrlo korisna metoda koja u stringovima pronalazi znakove koji se u HTML-u

koriste kao kontrolni znakovi i enkodira ih u odgovarajući format tako da iz web preglednik može prikazati kao tekst.

Primjer: Kodiranje HTML znakova

<%

Response.Write (Server.HTMLEncode("<IMG SRC=""slika.gif"">"))

%>

Objašnjenje:Primjena metode HTMLEncode u gornjem primjeru uvjetuje da web preglednik ispiše tekst koji je u zagradama, a ne da prikaže sliku.

Metoda MapPath pretvara zadani URL u fizičku lokaciju neke datoteke, na primjer Server.MapPath("www.neki-server.com/default.htm") će nam dati izlaz C:\inetpub\wwwroot\default.htm.

Primjer: Putanja do datoteke

<%

putanja = Server.MapPath ("default.htm")

%>

RAD S TEKSTUALNIM DATOTEKAMA

Pristup datotekama i mapama

Da bismo radili s datotekama ili mapama prvo se moramo uvjeriti da one postoje. Ako ne postoje, a mi im želimo pristupiti, dobivamo poruku o pogrešci. Da bismo saznali postoji li neka datoteka ili mapa koristimo se dvjema metodama objekta FileSystemObject (FSO): FileExists (za određivanje postojanja datoteka) i FolderExists (za utvrđivanje postojanja mapa).

Primjer: Utvrđivanje postojanja mapa i datoteka

<& Option Explicit %>

<HTML>

<BODY>

<%

Dim objFSO

Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")

' kreiranje objekta FSO

If objFSO.FolderExist (Server.MapPath ("neki_folder")) Then

Response.Write ("Tražena mapa postoji <br>")

Else

Response.Write ("Traženi mapa ne postoji <br>")

EndIf

' utvrdjivanje postojanja mape

If objFSO.FileExists (Server.MapPath ("neka_datoteka.txt")) Then

Response.Write ("Tražena datoteka postoji <br>")

Else

Response.Write ("Tražena datoteka ne postoji <br>")

EndIf

' utvrdjivanje postojanja datoteke

Set objFSO = Nothing

%>

</BODY>

</HTML>

Objašnjenje: Prvo smo definirali varijablu objFSO, a zatim smo joj pridružili vrijednost sistemskog objekta datoteka – FSO. U prvoj If ... Then naredbi ispitali smo postoji li neki_folder u korjenskom

Page 29: ASP

direktoriju web servera (Server.MapPath). Na isti smo način ispitali postoji li i neka_datoteka.txt. Na kraju koda izvršili smo pražnjenje objekta kako bi oslobodili resurse na serveru.

Određivanje osobina datoteka i mapa

Kad želimo saznati nešto više o osobinama datoteke ili mape koristimo metodu GetFile objekta FSO-a.

Osnovne osobine objekta datoteke:

Osobina Značenje DateCreated daje datum i vrijeme nastanka datoteke DateLastAccessed daje datum i vrijeme posljednjeg pristupa datoteci DateLastModified daje datum i vrijeme posljednje modifikacije datoteke

Path daje putanju do datoteke Size daje veličinu datoteke u byteovima Type daje informacije o tipu datoteke

Primjer: Svojstva datoteke

<& Option Explicit %>

<HTML>

<BODY>

<%

dim objFSO, objDat

' definiranje varijabli

Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")

Set objDat = objFSO.GetFile (Server.MapPath ("primjer.htm"))

' pristupanje datoteci

Response.Write ("Datoteka je kreirana ")

Response.Write (objDat.DateCreated & "<BR>")

' ispis datum i vremena nastanka datoteke

Response.Write ("Datoteka je zadnji put otvorena ")

Response.Write (objDat.DateLastAccessed & "<BR>")

' ispis datuma i vremena posljednjeg pristupa datoteci

Response.Write ("Datoteka je modificirana ")

Response.Write (objDat.DateLastModified & "<BR>")

' ispis datuma i vremena posljednje modifikacije datoteke

Response.Write ("Putanja datoteke je ")

Response.Write (objDat.Path & "<BR>")

' ispis putanje do datoteke

Response.Write ("Veličina datoteke je ")

Response.Write (objDat.Size & "Bytes" & "<BR>")

' ispis veličine datoteke

Response.Write ("Tip datoteke je ")

Response.Write (objDat.Type & "<BR>")

' ispis tipa datoteke

Set objDat = Nothing

Set objFSO = Nothing

' oslobađanje memorije

%>

</BODY>

</HTML>

Otvaranje datoteka

Da bismo pročitali podatke iz datoteke, unijeli nove ili ih dodali na kraj određene datoteke, prvo moramo otvoriti datoteku. To se radi upotrebom metode OpenTextFile sistemskog objekta datoteka (FSO)

<%

Ime_objekta.OpenTextFile (ime_datoteke, mod, stvaranje, format)

%>

Page 30: ASP

Metoda OpenTextFile sistemskog objekta datoteka ima 4 argumenta, od kojih su zadnja tri

neobavezna.

Prvi argument određuje ime datoteke koju otvaramo, odnosno fizičku putanju do datoteke, pa ćemo ovdje najčešće koristiti metodu Server.MapPath koja nam pretvara zadani URL u fizičku lokaciju. Drugi argument određuje mod otvaranja datoteke (1 za čitanje, 2 za pisanje, 8 za dodavanje) Ako datoteka koju otvaramo ne postoji automatski možemo kreirati novu praznu datoteku postavljanjem atributa "stvaranje" na True. Ako pokušavamo otvoriti nepostojeću datoteku s

atributom "stvaranje" postavljenim na False, dobivamo poruku o pogrešci. Zadnji atribut određuje hoće li se datoteka otvoriti u ASCII kodu ili Unicodu (-2 za sistemski kod, 0 za ASCII kod, -1 za Unicod).

Primjer: Otvaranje datoteke

<%

dim objFSO, objDat, putanja

putanja = Server.MapPath ("datoteka.txt")

Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")

Set objDat = objFSO.OpenTextFile (putanja, 1)

%>

Zatvaranje datoteka

Nakon korištenja datoteku moramo zatvoriti kako bismo oslobodili memoriju servera.

Primjer: Zatvaranje datoteke

<%

objDat.Close

Set objDat = Nothing

Set objFSO = Nothing

%>

Čitanje sadržaja datoteke

Za čitanje postoje 3 metode. Prva metoda služi za čitanje određenog broja znakova.

objDat.Read (broj_znakova)

Uzmimo da imamo npr. datoteku u kojoj piše "abcdefgh" i ona ima 8 znakova. Naredba Response.Write objDat.Read (3) dala bi ispis "abc", odnosno prva 3 znaka. Ako bi tu naredbu ponovili još jednom dobili bi "def".

Druga metoda služi za čitanje liniju po liniju teksta.

objDat.ReadLine

Page 31: ASP

Primjer: Prikaz kôda neke ASP stranice:

<%

dim objFSO, objDat, putanja

putanja = Server.MapPath ("datoteka.asp")

Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")

Set objDat = objFSO.OpenTextFile (putanja, 1)

Do Until objDat.AtEndOfStream

Response.Write (Server.HTMLEncode (objDat.ReadLine))

Response.Write ("<BR>")

Loop

objDat.Close

Set objDat = Nothing

Set objFSO = Nothing

%>

Treća metoda, koju koristimo kad želimo pročitati cjelokupni sadržaj datoteke, je ReadAll.

objDat.ReadAll

Utvrđivanje kraja datoteke

Ako bismo pokušali pročitati više znakova nego li ih datoteka sadrži dobili bismo poruku o pogrešci. Zato da bi utvrdili kraj datoteke koristimo osobinu AtEndOfStream objekta FSO.

Primjer: Čitanje podataka iz datoteke dok ne dođemo na njen kraj

<%

Do Until objDat.AtEndOfStream

Response.Write (objDat.Read (1))

Loop

%>

Upisivanje u datoteku

Pisanje izvodimo korištenjem metode Write objekta FSO. Prilikom otvaranja datoteke moramo koristiti mod za pisanje (vrijednost atributa mod je 2). Kad na taj način otvorimo datoteku prethodni sadržaj se briše.

Sintaksa pisanja je:

objDat.Write("tekst")

Osim te metode možemo i koristiti metodu WriteLine koja nakon upisivanja željenog teksta dodaje Enter na kraj linije.

objDat.WriteLine ("tekst")

Metodom WriteBlankLines (broj) možemo upisati određeni broje praznih linija.

objDat.WriteBlankLines (3)

Primjer: Pohranjivanje teksta u datoteku

<%

If objFSO.FileExist (putanja) Then

Set objDat = objFSO.OpenTextFile (putanja, 2)

Page 32: ASP

objDat.WriteLine ("Ovo je početak datoteke")

objDat.WriteBlankLines (3)

objDat.Write ("Ovo je kraj datoteke")

objDat.Close

Set objDat = Nothing

Set objFSO = Nothing

%>

Dopisivanje u datoteku

Kada želimo dodati neki tekst na već postojeću datoteku, procedura je slična kao i kod pisanja na praznu datoteku, jedino se kod definiranja objekta datoteke koristi vrijednost moda 8, a to znači da će se novi tekst dodavati na kraj datoteke.

Primjer: Dopisivanje u datoteku

<%

If objFSO.FileExist (putanja) Then

Set objDat = objFSO.OpenTextFile (putanja, 8)

objDat.WriteLine ("neki tekst")

objDat.Close

Set objDat = Nothing

Set objFSO = Nothing

%>

Primjer: Brojač posjeta stranici

<%

Dim objFSO, objDat, ime_datoteke, brojac

' deklariranje varijabli

ime_datoteke = Server.MapPath (Request.ServerVariables("SCRIPT_NAME") & ".txt")

' dodjeljivanje imena datoteke

' (naredbom Request.ServerVariables dobili smo ime trenutne ASP stranice i

' dodali mu nastavak .txt)

Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")

Set objDat = objFSO.OpenTextFile (ime_datoteke, 1, True)

' otvaranje datoteke za čitanje, ako datoteka ne postoji stvorit će se prazna

' datoteka

If NOT objDat.AtEndOFStream Then

brojac = Cint(objDat.ReadAll)

Else

brojac = 0

End If

' čitanje vrijednosti iz datoteke

objDat.Close

Set objDat = Nothing

' zatvaranje datoteke

brojac = brojac + 1

' povećanje varijable "brojac" za 1

Set objDat = objFSO.OpenTextFile (ime_datoteke, 2, True)

' otvaranje datoteke za pisanje

objDat.Write brojac

' upisivanje vrijednosti varijable "brojac" u datoteku

objDat.Close

Set objDat = Nothing

Set objFSO = Nothing

' zatvaranje datoteke i FSO objekta

Response.Write ("Ova stranica je do sada učitana " & brojac & " puta.")

' ispisivanje broja posjeta stranici

%>

Page 33: ASP

RAD SA BAZAMA PODATAKA

Baze podataka su najefikasniji način u slučaju pohrane velike količine podataka. Kod ASP-a najčešće se koriste Access baze podataka (.mdb)

Za komunikaciju s bazom podataka putem ASP-a potrebna nam je ActiveX Data Objects (ADO) komponenta, koja posjeduje niz objekata za komunikaciju s bazom.

Rad s podacima iz baze izvodi se u 4 koraka: - uspostavljanje veze s bazom podataka - postavljanje upita za informaciju koju tražimo - obrada i ispis rezultata upita - prekid veze s bazom i oslobađanje memorije od varijabli koje čuvaju podatke

Spajanje na bazu

Prije nego što počnemo raditi sa podacima, moramo se spojiti na bazu podataka.

Connection objekt

Na bazu se spajamo Connection objektom. On sadrži podatke o bazi kojoj želimo pristupiti.

Opći način kreiranja Connection objekta:

Dim objConn

Set objConn = Server.CreateObject ("ADODB.Connection")

Nakon što smo kreirali Connection objekt, potrebno je otvoriti vezu s bazom, a to se radi s Open metodom Connection objekta.

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

Kada sve to stavimo zajedno dobivamo proceduru za otvaranje veze.

<%

dim objConn, putanja

putanja = Server.MapPath ("baza.mdb")

Set objConn = Server.CreateObject ("ADODB.Connection")

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

%>

Na bazu se možemo spojiti i preko DSN-a (Data Source Name). Sistemski DSN sadrži podatke o

različitim bazama. Da bismo kreirali DSN neke baze moramo otvoriti Control Panel i odabrati opciju ODBC Data Source. Kada napravimo DSN neke baze onda joj možemo pristupiti tako da kod otvaranja Connection objekta upišemo:

objConn.Open ("DSN=ime_baze.dsn")

Zatvaranje veze i oslobađanje memorije

Nakon korištenja baze, potrebno ju je zatvoriti vezu da bismo ispraznili dio memorije koju je Connection objekt zauzimao.

objConn.Close

Set objConn = Nothing

Page 34: ASP

Preuzimanje podataka iz baze

Recordset objekt

Nakon uspostavljanja veze s bazom potreban nam je još jedan objekt koji će u sebi držati podatke iz baze. Taj objekt je Recordset. Recordset objekt nam služi kao spremnik podataka iz baze. Može sadržavati cijelu tablicu ili samo dio zapisa iz tablice.

Recordset objekt kreiramo na slijedeći način:

Dim objRS

Set objRS = Server.CreateObject ("ADODB.Recordset")

Open metoda

Recordset objekt se ispunjava podacima pomoću Open metode. Ona ima argumenta od kojih su poslijednja 2 kod čitanja neobavezna.

Opći oblik Open metode:

objRS.Open izvor_podataka, veza, vrsta_čitanja, vrsta_pristupa

Izvor podataka može biti ime tablice ili SQL izjava. Ime tablice koju navodimo mora biti pod navodnicima. Argument veza je tekst koji sadrži informacije o vezi, zapravo ono što smo upisali kod otvaranja veze. Dovoljno je upisati ime varijable koja sadržava informacije o vezi (objConn).

Argument vrsta_čitanja označava način na koji se krećemo kroz zapise. Inicijalno je postavljen na adOpenFowardOnly, što znači da se možemo kretati samo prema naprijed. Argument vrsta_pristupa određuje može li se zapisivati u bazu i na koji način. Inicijalno je postavljen na adLockReadOnly, što znači da je baza otvorena samo za čitanje. Konstante adOpenFowardOnly, adLockReadOnly i druge nisu ugrađene u ASP. Zato moramo koristiti datoteku adovbs.ins u kojoj su pohranjene vrijednosti tih konstanti. Ta datoteka se nalazi u mapi C:\Program Files\Common Files\System\ado i potrebno ju je kopirati u korjenski direktorij

web servera te ju kasnije uključiti u ASP stranicu koja koristi te konstante. Ako ne želimo koristiti te konstante onda možemo umjesto njih pisati njihove vrijednosti. Tada nije potrebno uključivati datoteku adovbs.ins.

Konstanta Vrijednost adOpenFowardOnly 0 adLockOptimistic 3 adLockReadOnly 1

Primjer: Stvaranje veze do izvora podataka iz baze

objRS.Open "ucenici", objConn, adOpenFowardOnly, adLockReadOnly

Objašnjenje: Pristupamo tablici ucenici iz baze koju smo naveli u objektu veze objConn. Cjelokupni sadržaj tablice ucenici kopira se u Recordset objekt.

Čitanje i prikazivanje sadržaja tablice

Kako bismo se kretali kroz zapise Recordset objekt ima niz metoda za pomicanje od jednog do drugog zapisa. Ako smo vrstu čitanja definirali kao adOpenFowardOnly onda se možemo kretati samo prema naprijed.

Metode: MoveNext, MovePrevious, MoveFirst, MoveLast, Move broj_zapisa

Page 35: ASP

Da bismo pristupili podatku koji je pohranjen u određenom polju zapisa koristimo se sintaksom:

ObjRS.Fields("ime_stupca").Value

Podatku možemo pristupiti i navođenjem rednog broja stupca umjesto imena.

ObjRS.Fields(broj_stupca).Value

Ime nekog stupca možemo saznati pozivanjem svojstva Name.

ObjRS.Fields(broj_stupca).Name

Testiranje ima li zapisa u recordsetu

U slučaju da pokušamo dobiti podatke iz praznog Recorseta pojavila bi se poruka o pogrešci. Zato je potrebno provjeriti je li Recordset prazan.

If objRS.EOF Then

Response.Write "Nije pronađen traženi podatak"

Else

' kod za obradu podataka

EndIf

Obrada podataka

Ako želimo proći kroz sve vrijednosti u tablici i napraviti neku obradu nad podacima onda kôd te obrade stavljamo u Do Until ... Loop petlju. Na sljedeći se zapis pomićemo metodom MoveNext.

<%

Do Until objRS.EOF

' neka obrada (najčešće samo ispis)

objRS.MoveNext

Loop

%>

Objašnjenje: Do … Until petlja ponavlja izvođenje kôda za obradu podataka dok se ne dođe do zadnjeg zapisa, a objRS.MoveNext metoda uvjetuje prelaženje na sljedeći zapis.

Primjer: Ispis pojedinih stupaca iz tablice (prikaz u obliku izvješća)

<%

Do Until objRS.EOF

Response.Write (objRS ("stupac_1") & "<BR>")

Response.Write (objRS ("stupac_2") & "<BR>")

Response.Write (objRS ("stupac_3") & "<BR>")

Response.Write ("<HR>")

objRS.MoveNext

Loop

%>

Page 36: ASP

Objašnjenje: Ovo je pogodno kada se podaci iz svakog stupca posebno oblikuju (kod izvješća, kod ne-tabličnog prikaza itd…)

Primjer: Ispis određenih stupaca iz tablice (tablični prikaz)

<TABLE BORDER=1 WIDTH=100%>

<TR>

<TD>ime_prvog_stupca</TD>

<TD>ime_drugog_stupca</TD>

<TD>ime_trećeg_stupca</TD>

</TR>

<%

Do Until objRS.EOF

Response.Write ("<TR>"

Response.Write ("<TD> & objRS("stupac_1") & "</TD>")

Response.Write ("<TD> & objRS("stupac_2") & "</TD>")

Response.Write ("<TD> & objRS("stupac_3") & "</TD>")

Response.Write ("</TR>")

objRS.MoveNext

Loop

%>

Objašnjenje: Ovo je tablični ispis. Ovdje također treba poznavati imena stupaca.

Može se napisati algoritam koji će ispisati sve zapise iz tablice, a da nije potrebno znati koliko stupaca tablica ima i koja su njihova imena.

Primjer: Ispis svih stupaca iz tablice

<%

Dim objConn, objRS, putanja, i

putanja = Server.MapPath("baza.mdb")

Set objConn = Server.CreateObject ("ADODB.Connection")

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

' konekcija na bazu

Set objRS = Server.CreateObject ("ADODB.Recordset")

objRS.Open "tablica_1", objConn

' preuzimanje podataka iz baze

Response.Write ("<TABLE border= 1 width=100%\>")

Response.Write ("<TR>")

For i = 0 to (objRS.Fields.Count - 1)

Response.Write ("<TD><B>")

Response.Write (ObjRS.Fields(i).Name)

Response.Write ("</B></TD>")

Next

' ispis imena stupaca

Response.Write ("</TR>")

Do Until objRS.EOF

Response.Write ("<TR>")

For i = 0 to (objRS.Fields.Count - 1)

Response.Write ("<TD>")

Response.Write (ObjRS.Fields(i).Value)

Response.Write ("</TD>")

Next

Response.Write("</TR>")

objRS.MoveNext

Loop

' ispis sadržaja tablice

set objRS = Nothing

set objConn = Nothing

' oslobađanje memorije

Response.Write ("</TABLE>")

%>

Page 37: ASP

Ubacivanje novog zapisa u tablicu

Otključavanje baze

Ako želimo dodavati, brisati ili mijenjati podatke u bazi potrebno je promijeniti vrstu pristupa i otključati bazu (što nije bilo potrebno kod čitanja). Vrsta pristupa koju moramo koristiti je adLockOptimistic (ili vrijednost 3).

Da bismo napravili promjene u bazi potrebne su nam dvije metode objekta Recordset: AddNew koja kreira novi zapis i Update koja potvrđuje taj zapis. Zapis nije upisan sve dok ne pozovemo metodu Update.

Primjer: Ubacivanje novog zapisa metodom AddNew

<%

objRS.Open "neka_tablica", objConn, 1, 3

objRS.AddNew

objRS ("ime") = "Pero"

objRS ("prezime") = "Perić"

objRS.Update

%>

Primjer: Upis podataka u bazu preko obrasca - metoda Addnew

Prva stranica sadrži obrazac u koji će korisnik upisati svoje podatke. Nakon što ih upiše šalje ih stranici "upis_u_bazu.asp" koja će ih spremiti u bazu podataka.

<FORM name="obrazac1" method="post" action="upis_u_bazu.asp">

Ime: <INPUT name="txtIme" type="text" size="16"> <BR>

Prezime: <INPUT name="txtPrezime" type="text" size="16"> <BR>

Razred: <INPUT name="txtRazred" type="text" size="16"> <BR>

<INPUT type="submit" name="Submit" value=" Pošalji ">

<INPUT type="reset" name="Reset" value=" Poništi ">

</FORM>

Kôd stranice koja prihvaća podatke i sprema ih u bazu izgleda ovako:

<%

Dim objConn, ObjRS, putanja

putanja = Server.MapPath("baza.mdb")

Set objConn = Server.CreateObject ("ADODB.Connection")

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

' konekcija na bazu

Set objRS = Server.CreateObject ("ADODB.Recordset")

objRS.Open "ucenici", objConn, 1, 3

' kreiranje i otvaranje recordseta za pisanje u bazu

ObjRS.AddNew

objRS ("ime") = Request ("txtIme")

objRS ("prezime") = Request ("txtPrezime")

objRS ("razred") = Request ("txtRazred")

objRS.Update

' upisivanje u bazu

Response.Write ("Podaci su upisani u bazu.")

Set objRS = Nothing

Set objConn = Nothing

' oslobađanje memorije

%>

Page 38: ASP

Mijenjanje postojećeg zapisa

Da bismo promijenili vrijednost nekih od polja u postojećem zapisu koristimo se metodom Update.

Primjer: Mijenjanje vrijednosti nekog polja metodom Update

<%

objRS ("ime") = "Ivo"

objRS.Update

%>

Brisanje zapisa

Kada želimo izbrisati neki od zapisa koristimo se metodom Delete. Nakon što pronađemo odgovarajući zapis upišemo:

objRS.Delete

Upotreba SQL-a kod rada s bazama podataka

SQL (Structured Query Language) je standardni jezik za komunikaciju s bazama podataka. Pomoću SQL-a možemo kreirati Recordset koji će u sebi imati samo dio tablice po potrebi sortiran po određenom kriteriju.

Kreiranje SQL izjave: - kreiranje i otvaranje veze s bazom podataka - kreiranje tekstualne varijable koja će držati SQL izjavu - pridjeljivanje SQL izjave tekstualnoj varijabli - kreiranje instance Recordset objekta - izvršavanje Open metode Recordset objekta

Kreiranje i otvaranje veze s bazom podataka izvodi se isto kao i prije dok nismo koristili SQL.

Otvaranje Recordset objekta: Dok smo prije kao izvor podataka navodili ime tablice, sada umjesto

toga navodimo SQL upit. Možemo kreirati neku varijablu koja će držati taj upit da bi kasnije naveli tu varijablu kao izvor podataka.

Primjer: Izvor podataka je zadan upitom

Dim strSQL

strSQL = "neki_upit"

objRS.Open strSQL, objConn, vrsta_čitanja, vrsta_pristupa

SELECT naredba

Select naredba služi za izdvajanje podataka iz tablica. Opća sintaksa je:

SELECT izbor FROM ime_tablice

Kada želimo izabrati sve zapise iz tablice onda pišemo zvjezdicu (*) iza ključne riječi SELECT.

SELECT * FROM ime_tablice

Page 39: ASP

Kada želimo odabrati samo pojedine stupce iz tablice pišemo ih iza ključne riječi SELECT odvojene zarezom.

SELECT stupac1, stupac2 FROM ime_tablice

Primjer: Ispis podataka iz baze uz upotrebu SQL-a

<%

Dim objConn, ObjRS, putanja

putanja = Server.MapPath("baza.mdb")

Set objConn = Server.CreateObject ("ADODB.Connection")

objConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & putanja)

' konekcija na bazu

Dim strSQL

strSQL = "SELECT ime, prezime FROM ucenici"

' kreiranje SQL izjave

Set objRS = Server.CreateObject ("ADODB.Recordset")

objRS.Open strSQL, objConn

' kreiranje i otvaranje recordseta

Do Until objRS.EOF

Response.Write (objRS.Fields("ime").Value & " ")

Response.Write (objRS.Fields("prezime").Value & "<BR>")

objRS.MoveNext

Loop

' ispis podataka iz recordseta

Set objRS = Nothing

Set objConn = Nothing

' oslobađanje memorije

%>

WHERE ključna riječ

WHERE ključna riječ služi nam da smanjimo broj zapisa Recordseta na osnovu nekog kriterija

(filtriranje). Prilikom definiranja kriterija možemo se koristiti logičkim (AND, OR, NOT) i komparativnim operatorima (<, >, <=, >=, <>)

Primjer: Filtriranje uz upotrebu SQL naredbi

SELECT * FROM tblPodaci WHERE Godiste<1980 AND Grad='Zagreb'

(tražimo osobe koje su se rodile prije 1986. i koje žive u Zagrebu)

Možemo se koristiti i nekim univerzalnim simbolima za pretraživanje. Oni se moraju koristiti uz ključnu riječ LIKE.

Znak Objašnjenje % nadomješta bilo koji niz znakova proizvoljne duljine _ nadomješta točno jedan znak [ ] nadomješta bilo koji znak unutar nekog raspona

Primjer: Filteri kod SQL-a sa ključnom riječi LIKE

SELECT * FROM tblPodaci WHERE ime LIKE 'M%'

(imena osoba koja počinju sa slovom M)

SELECT * FROM tblPodaci WHERE Ime LIKE 'A_A'

(imena osoba koja počinju sa slovom A, završavaju slovom A i koja sadrže 3 slova)

SELECT * FROM tblPodaci WHERE Ime LIKE '[K, M, N]%'

(imena osoba koja počinju sa slovim K, M ili N)

Page 40: ASP

ORDER BY ključna riječ

ORDER BY ključna riječ služi za sortiranje pronađenih zapisa po određenom kriteriju. Iza ključne riječi ORDER BY dolazi ime stupca na temelju kojeg vršimo sortiranje.

Sintaksa sortiranja:

SELECT * FROM ime_tablice ORDER BY stupac1 [ASC]

ASC – uzlazno sortiranje DESC – silazno sortiranje

INSERT naredba

Insert naredba koristi se za dodavanje novog reda u tablicu, tj. za unos podataka u tablicu.

Sintaksa:

INSERT INTO ime_tablice (stupac1, stupac2) VALUES (vrijednost1, vrijednost2)

DELETE naredba

Delete naredba služi za brisanje podataka iz tablice.

Sintaksa:

DELETE * FROM tablica

(briše cijelu tablicu)

DELETE * FROM tablica WHERE uvjet

(briše retke iz tablice koji zadovoljavaju određeni uvjet)

UPDATE naredba

Update naredba služi za mijenjanje vrijednosti podataka iz tablice.

Sintaksa:

UPDATE tablica SET stupac1=vrijednost1, stupac2=vrijednost2 WHERE uvjet