You are on page 1of 27

Chng 1

GII THIU ASP


Mc tiu
Gii thiu ngn ng ASP Ci t v chy ng dng ASP trn server IIS Cc c php cn bn VBScript Cc i tng c sn Thao tc vi Database trong ASP

1.1 Gii thiu ngn ng lp trnh web ng ASP


Cc website thu ban u ch bao gm cc trang web tnh di dng cc file HTML, tt c nhng g cn hin th trn trang web th ngi thit k phi to sn trn trang . Cc trang web tnh c ui l .htm hoc .html Chng hn mun to mt trang web c hin th ch Hello vi mu ch ngi ta vit file index.html vi ni dung nh sau: <html> <head> <title>index</title> </head> <body> <p><font color="red">Hello</font></p> </body> </html> Trang web sau s c lu trn Web Server. Khi ngi dng mun xem trang web ny h s dng trnh duyt gi mt yu cu n server bng cch g vo a ch URL v d : http://localhost/index.html Lc ny Web Server nhn c yu cu s tm trong kho d liu ca n trang web index.html tng ng ri gi v cho client, sau trang web ny s c hin th ra bi trnh duyt. l cch hot ng ca web tnh.

Hnh 1.1 Cch hot ng ca web tnh

Chng 1: Gii thiu ASP

Trang web tnh tuy rt tin li nhng khng th p ng c mi nhu cu ca ng dng web, c bit l nhng yu cu tng tc gia client v web server. C nhiu tnh hung m ni dung trang web khng phi lc no cng c th son tho v lu tr sn c m i khi n cn c sinh ra mt cch t ng ty thuc vo ng cnh; hoc c nhng x l phc tp hn vic server ch n gin tr v trang html khi nhn c yu cu t ngi dng, v d nh phi thu thp thng tin m ngi dng gi ln qua URL hay form, hoc truy cp d liu trong database. Ly v d nu chng ta mun xy dng mt trang web Login.htm yu cu ngi s dng nhp tn username, sau khi submit web server s gi v ngi dng trang web Result.html c ni dung : Welcome username! D dng thy rng trang Result.htm khng th son tho sn c v ng vi mi username m ngi dng nhp vo, trang ny c ni dung khc nhau.

Hnh 1.2 Trang Result.html c ni dung khc nhau ty vo tng tc gia client v webserver. N khng th son tho sn! Ngha l cc trang web tnh khng c kh nng tng tc vi ngi dng. Trong thc t c rt nhiu trng hp chng ta thng gp trong th gii web i hi s tng tc m web tnh khng th gii quyt c ( chat, forums, web mail, trang tin tc, gi hng, thng tin thi tit tng ngy, t gi ngoi t hng ngy) gii quyt vn ny ngi ta s dng cc ngn ng lp trnh web h

ASP

tr s tng tc gia client v server. Chng l nhng file c cha cc m lp trnh, c th to ra cc trang web ng, cho php tr v cho client trang web c ni dung c th thay i mt cch linh ng ng vi nhng ng cnh c th, thu thp v phn hi vi thng tin m ngi dng gi ln server (thng qua form hay URL), truy cp d liu trong database... Mt s ngn ng lp trnh web ng ph bin gm ASP, PHP, Java, .net ... ASP (Active Server Pages) l ngn ng lp trnh web c vit bi hng Microsoft, rt ph bin trn h iu hnh Microsoft Windows. Cc trang web vit bng ngn ng ny c phn m rng l .asp (v d HelloWorld.asp) thay v .htm hay .html. Ni dung file ASP v c bn rt ging file Html bnh thng, n bao gm cc c php html trn ln cc m lp trnh ASP (cn gi l cc script, c vit bng VBScript hay JavaScript). Cc Script trong ASP thc thi trn server. C th ni trang ASP l s kt hp cc th html, cc script v cc ActiveX Component. Script c th trn ln gia cc th html v nm trong cp du <% %>

1.2 Web Server IIS


Thng thng ngi ta dng ASP vi Web Server c tn l Internet Information Services (IIS) ca Microsoft. y l thnh phn c sn trong h iu hnh Windows 2000 hoc XP. Nu my tnh cha ci t th chng ta c th vo Control Panel => Add/remove programs=> Add/remove Windows Components=>Internet Information Services (IIS) v chn ci t thnh phn ny

Chng 1: Gii thiu ASP

1.3 Ci t v chy ng dng ASP u tin


bt u chy mt website vit bng ngn ng ASP u tin chng ta thc hin cc bc sau: Ci t web server IIS ( phn trn) v start IIS Cu hnh cho website bng cch to Virtual Directory trn Web Server Vit cc file ASP v save vo th mc c cu hnh cho website trn server Dng trnh duyt (nh Internet Explorer) trn client yu cu file ASP v hin th kt qu tr v.

Sau khi start IIS mc nh web server s phc v a ch http://localhost (a ch trn my local, cng ging nh mt a ch website kiu nh http://www.yahoo.com trn Internet) Chng ta to mt th mc o (Virtual Directory) trn web server cha ng dng web, v d http://localhost/test y test cn c gi l Alias ca Virtual Directory ny. Vy lu tr cc trang ASP trn server trc ht ta s to mt Virtual Directory vi mt Alias v th mc tng ng ri upload cc file ASP vo th mc ny, sau truy cp cc trang ASP ny thng qua a ch http://localhost/Alias Cch to mt Virtual Directory trong IIS: Vo Web Server t Control Panel=> Administrative Tools=>Internet Services Manager (hoc Computer Management)=> Default Website (nu thy n ang stop th start n ln) => New=> Virtual Directory (lm theo wizard, chn cc tham s Alias: tn Virtual Directory ca mnh v d test, Directory: th mc cha Website v d C:\Web)

1.3.1 Cu hnh cho Website trn IIS

ASP

Hnh 1.4 To Virtual Directory trn IIS Sau khi kt thc wizard ny chng ta c mt Virtual Directory sn sng trn web server. Hy save cc trang asp vo th mc c:\Web. a ch truy cp vo website trong trng hp ny s l: http://localhost/test/ Mt cch khc cng tng t v d thao tc hn l nhn chut phi vo th mc C:\web, chn Properties => Web sharing => Share this folder=> Add Alias.

1.3.2 Vit cc file ASP


Script c vit trong cp th <% %>, bt u bng th m <% v kt thc bng th ng %> Chng ta c th son trang ASP bng bt c chng trnh son tho no nh notepad, Frontpage, Dreamweaver... V d, to 1 file Hello.asp hin th li cho Hello ra mn hnh, save vo th mc c:\Web <html> <head> <title>New Page 1</title> </head> <body> <% response.write "Hello!" Hin th li cho Hello %> </body>

Chng 1: Gii thiu ASP

</html> Cu lnh response.write s cho php hin th mt chui ra trang web. Ch thch trong lp trnh ASP c vit sau du nhy n M lp trnh ASP <%response.write "Hello!" %> c vit trn ln gia cc th HTML.

M trnh duyt (v d Internet Explorer), trn thanh a ch g a ch sau y truy cp vo trang Asp ta to ra: http://localhost/test/Hello.asp Lu l trang asp phi chy trn web server ch khng th open trc tip vi browser nh cc trang html. Webserver x l nh th no khi ngi dng yu cu mt trang ASP: Khng ging nh html, khi ngi dng yu cu 1 trang html, web server s tm trong kho d liu v tr v file html browser hin th li pha client. Khi ngi dng yu cu 1 trang Asp, IIS server s chuyn trang ASP cho mt b phn x l gi l ASP engine. Engine s c m ngun file asp theo tng dng, thc thi cc script trong file. Cui cng file ASP c tr v cho ngi dng di dng mt trang html thun ty (khng cn m script) ging nh trang web tnh. Nu chng ta xem li m ngun ca trang ny trn browser th c th thy nhng on code asp trong file c dch thnh cc d liu html bnh thng.

1.3.3 Dng trnh duyt truy cp website

Hnh 1.5 ASP engine x l file asp trc khi tr v cho browser

ASP

Hnh 1.6 Trang ASP sau khi thc thi tr v cho client di dng 1 trang web tnh.Browser khng xem c m ngun ca trang ASP By gi chng ta quay li bi ton Login trn. Ta c th son tho mt trang Login.html v mt trang Result.asp nh sau: Login.html <html> <head> <title>New Page 1</title> </head> <body> <form method="POST" action="Result.asp"> <p>Username: <input type="text" name="username" ></p> <p><input type="submit" value="Submit" name="submit"></p> </form> </body> </html> Result.asp <html> <head> <title>New Page 1</title> </head> <body> <% dim x x=request.form("username") 'bin x nhn li gi tr username t form login response.write "Hello "&x 'hin th ni dung ty theo gi tr nhn c do ngi dng in vo form %> </body> </html> Mt s v d khc: Hin th ngy gi ca server <html> <head>

Chng 1: Gii thiu ASP

<title>New Page 2</title> </head> <body> <%response.write Now%> </body> </html> Kt qu: 7/5/2005 12:21:57 PM Hin th nm v thng: <% response.write "Year: "&year(now) response.write "Month:"&month(now) %> Kt qu: Year: 2005 Month:7

1.3 Tm tt cc c php VBScript


M lnh ASP c th vit bng VBScript hoc JavaScript (c thm ti liu v ngn ng ny). Cc script ca ASP thc thi trn server v nm trong cp du <% %>. Bn trong c th cha cc biu thc, hm, ton t, lnh hp l ca ngn ng Script tng ng. y chng ta tm hiu vn tt cch s dng ASP lp trnh web ng bng VBScript.

1.3.1 Response.write
gi ni dung v cho trnh duyt ta dng lnh Response.write <%response.write Hello World!%> hoc c th vit ngn gn hn <%=Hello World!%>

Bin dng lu tr thng tin. Bin c phm vi cc b, nu n c khai bo bn trong 1 hm hay th tc th n ch c tc dng trong hm hay th tc , nu n khai bo trong phm vi ton trang ASP th tc dng ca n s c phm vi trong ton trang ASP, tuy nhin khng c tc dng trong trang ASP khc. V d trang Hello.asp ta c mt bin x c gi tr l 3, trang Index.asp ta dng lnh <%response.write x %> th s khng ra kt qa l 3 v bin x ca trang Hello.asp khng c hiu trong trang Index.asp. Tng t nh vy khi mt bin c khai bo trong 1 hm, s khng c tc dng bn ngoi hm . Bin c khai bo v s dng bn trong trang asp no dng n. <% Dim x khai bo bin, khng bt buc x=3 Response.write x %> Bin khng bt buc phi khai bo.

1.3.2 Bin

ASP

Trong asp khng khai bo kiu ca bin. Asp s cn c vo vic s dng bin m quyt nh xem nn x l bin nh l kiu g. <%Dim a, b a=Hello a l mt bin kiu chui For b=1 to 10 b l mt bin kiu s nguyn Response.write b Next%> c th kim sot chnh xc mt bin theo kiu mnh mong mun, chng ta dng cc hm chuyn i kiu. nh ngha mt bin c phm vi s dng trong nhiu trang ASP ca ng dng Web, ta dng bin session v application (xem i tng session v application)

1.3.3 Mng

Mng dng lu tr d liu theo mt dy cc phn t. <% dim y(5) khai bo mng 6 phn t nh ch s t 0 n 5 y(0)=2 y(1)=13 response.write y(0) response.write y(1) %>

ghp cc chui vi nhau ta dng du & <%Dim a, b A=Cng ha x hi ch ngha Vit Nam B=c lp T do Hnh phc Response.write a&b %>

1.3.4 Ghp chui

1.3.5 Hm c sn

VBScript h tr sn mt s hm c bn. V d hm nowsau y s tr v thi gian trn server <%response.write now%>

Cc hm ny cho php chuyn i kiu d liu Cdate: Chuyn sang kiu ngy thng <%Dim a, b a=22/1/2004 a ang c hiu l mt chui b=Cdate(a) chuyn chui a sang ng kiu ngy thng %> Cint: Chuyn sang kiu Integer <% Dim a,b a=3
Chng 1: Gii thiu ASP 9

1.3.5.1 Cc hm chuyn i kiu

b=cint(a) %> Cstr: Chuyn sang kiu string <% Dim a,b a=3 b=Cstr(a) %> Cc hm khc : Cbyte, Cdbl,CSng, Cbool, Ccur,

1.3.5.2 Cc hm format
Cc hm ny cho php nh dng d liu FormatDateTime FormatCurrency FormatNumber FormatPercent

1.3.5.3 Cc hm ton hc:

Int: ly phn nguyn ca mt s <% Dim x=14.9 Y=Int(x) kt qu y=14 %> Cc hm khc : Abs, Atn, Cos, Exp, Fix, Hex, Log, Oct, Rnd, Randomize, Round, Sin, Sqr, Tan

1.3.5.4 Cc hm thao tc vi chui

Len: Ly chiu di chui <%dim a,b a=Cng ha x hi ch ngha Vit Nam b=len(a) %> Ucase, Lcase: Chuyn ch hoa thnh ch thng v ngc li <%dim a,b,c,d a=hello b=Ucase(a) b=HELLO c=GOODBYE d=Lcase(c) d=goodbye %> Ltrim, Rtrim, Trim: ct b cc khong trng tha <% dim a,b,c,d,e,f a= Hello b=Ltrim(a) ct b ht cc khong trng bn tri c=Hello d=Rtrim(a) ct b ht cc khong trng bn phi e= Hello world f=Trim(a) ct b ht cc khong trng tha 2 bn v gia %> Left, Mid, Right: Ly mt chui con trong chui ln <%Dim a,b,c,d a=Hello World
10 ASP

b=left(a,5) ly 5 k t bn tri ca a, kt qu b=Hello c=right(a,5) ly 5 k t bn phi ca a, kt qu c=World d=mid(a,7,1) ly 1 k t ca a t v tr th 7, kt qu d=W %> Cc hm khc: Space,String, StrReverse,StrComp,InStr,Replace,Split,join

Date, Time, Now: Ly ngy, gi hin hnh trn server <% Response.write Hom nay la ngay: &Date Date tr v ngy hin hnh Response.write Bay gio la&Time Time tr v gi hin hnh Response.write Now Now tr v ngy v gi hin hnh %> Cc hm khc: DateAdd, DateDiff, DatePart, Year, Month, Day, Weekday, Hour, Minute, Second

1.3.5.5 Cc hm ngy thng

Cc hm ny cho php kim tra kiu ca bin v biu thc Isdate: Kim tra c phi ng kiu ngy thng khng? <%Dim a a=1/1/2004 If Isdate(a) then Response.write a ng l kiu ngy thng End if %> IsNumeric: Kim tra c phi ng kiu s khng? <%Dim a A=13 If IsNumeric(a) then Response.write a ng l kiu s End if %> Cc hm khc: IsArray,IsEmpty,IsNull,IsObject

1.3.5.6 Cc hm kim tra:

1.3.6 R nhnh 1.3.6.1 If

Chng ta s dng if theo c php nh v d sau: <% h=hour(now) If h >12 then Response.write Afternoon else Response.write Morning End if %> Hoc: <% h=hour(now)
Chng 1: Gii thiu ASP 11

If h >12 then Response.write "Afternoon" else Response.write "Morning" %>

1.3.6.2 Select case ... else ...End select

Cu trc r nhnh trong trng hp c nhiu hn 2 la chn <% h=hour(now) Select case h Case "1" Response.write "1 am" Case "2" Response.write "2 am" Case else Response.write "Other " End select %>

1.3.7 Lp: 1.3.7.1 ForNext


Vng lp c s ln lp xc nh <%Dim i For i=1 to 10 Response.write i Next %>

1.3.7.2 Do WhileLoop

Vng lp c s ln lp khng xc nh <% Dim i i=1 Do while i<=10 Response.write i i=i+1 Loop %>

1.3.7.3 While .. Wend

Vng lp c s ln lp khng xc nh <% Dim i i=1 While i<=10 Response.write i i=i+1 Wend %>

1.3.7.4 Do .. Loop Until


Vng lp c s ln lp khng xc nh <%

12

ASP

i=1 do response.write i i=i+1 loop Until i>10 %>

1.3.8 iu kin and ,or, not


<% h=hour(now) If (h >12) and (h<18) then Response.write Afternoon End if %>

Cng nh cc ngn ng lp trnh khc, VBScript cho php ngi dng nh ngha v s dng cc th tc ,hm. Nh vy chng trnh c th chia thnh cc module nh to nn cu trc lp trnh sng sa (phng php chia tr) Chng hn vi mt bi ton ASP cn thc hin vic hin th d liu t Database ra mn hnh, ta c th xy dng cc th tc hay hm thc hin tng nhim v : - Th tc KetNoi - Th tc HienThi - Th tc HuyKetNoi Nh vy phn chng trnh chnh s rt sng sa, chng ta ch vic gi 3 th tc: <% KetNoi HienThi HuyKetNoi %>

1.3.9 Th tc v hm ngi dng

1.3.9.1 Th tc

Th tc thc hin mt nhm cc cu lnh. vit mt th tc chng ta theo cu trc sau: <%Sub TenThuTuc(Tham so) Phn thn ca th tc End Sub %> V d sau y xy dng chng trnh ng nhp gm 2 file: Form.asp (hin th form ngi dng nhp username v password), Xulyform.asp (x l form, nu username=test v password=test th thng bo ng nhp thnh cng, nu khng th thng bo ng nhp tht bi). File Xulyform.asp s vit th tc v gi th tc ny: Form.asp <html> <body> <form method="post" action="xulyform.asp">
Chng 1: Gii thiu ASP 13

<input type="text" name="user"> <input type="password" name="pass"> <input type="submit" name="submit"> </form> </body> </html> Xulyform.asp <%Sub CheckUser(username,password) if (username<>"test") or (password <> "test") then response.write "Dang nhap that bai!" else response.write "Dang nhap thanh cong!" end if End Sub %> <% dim a, b a=request.form("user") b=request.form("pass") CheckUser a,b gi th tc %>

1.3.9.2 Hm

Hm khc vi th tc l n tr v mt kt qu. vit mt hm chng ta vit theo cu trc sau: <%Function TenFunction(tham so) Phn ni dung ca hm End Function %> Ch trong ni dung ca hm bao gi cng phi c mt lnh tr v kt qu: TenFunction=... Vi bi ton ng nhp trn chng ta c th vit li nh sau (file xulyform.asp dng hm) Form.asp <html> <body> <form method="post" action="xulyform.asp"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" name="submit"> </form> </body> </html> Xulyform.asp <%Function CheckUser(username,password) if (username<>"test") or (password <> "test") then CheckUser="False" else

14

ASP

CheckUser="True" end if End Function %> <% dim a a=CheckUser(request.form("user"),request.form("pass")) if a="True" then response.write "Dang nhap thanh cong" else response.write "Dang nhap that bai" end if %>

gi hm

1.3.10 S dng #include


Trong trng hp mun trn m ngun t 1 file asp vo 1 file asp khc trc khi server thc thi n, ngi ta dng th nh hng #include vi c php <!--#include file=Tenfile--> Mt s ng dng ca #include nh ngi ta thng include file cha cc hm th vin dng chung cho c ng dng vo u file Asp no cn s dng th vin ny, hoc insert cc file Header v Footer cho 1 trang web, insert cc thnh phn c s dng chung trong nhiu file asp nh menu,... V d trong ng dng ASP c nhiu trang cn thao tc vi database, chng ta s vit ring module thao tc vi database ra mt file myConnection.asp, ri include file ny vo trang asp no mun thao tc vi database <!--#include file=myConnection.asp"--> <% m ngun %> Lu l include file c thc hin trc khi script chy. V vy on lnh sau y l khng hp l: <% filename=myConnection.asp%> <!--#include file=<%=filename%>"-->

1.4 Cc i tng cn bn
i tng l mt nhm cc hm v bin. Mt s i tng c xy dng sn v c th s dng ngay m khng cn khi to: Request, Response, Session, Application, Server. Mt s i tng cn khi to nu mun s dng Dictionary, Connection, Recordset...

1.4.1 i tng Request

Request v Response l 2 i tng c dng nhiu nht trong lp trnh ASP, dng trao i d liu gia trnh duyt v server. Request cho php ly v cc thng tin t client. Khi browser gi mt yu cu trang web ln server ta gi l 1 request

Chng 1: Gii thiu ASP

15

Chng ta thng s dng cc lnh request sau:

Cho php server ly v cc gi tr c gi t ngi dng qua URL hoc form (method GET). V d trang home.asp chng ta t mt dng lin kt sang trang gioithieu.asp vi th sau: <a href=gioithieu.asp?tacgia=Tran Van A>Nhn vo y sang trang gii thiu</a> bin tacgia c gi tr l Tran Van A c ngi dng gi ti server km theo URL. (ngi dng c th g thng a ch http://localhost/alias/gioithieu.asp?tacgia=Tran Van A trn thanh Address ca trnh duyt) Server mun nhn li gi tr ny th dng request.QueryString trang gioithieu.asp <%dim a a=request.querystring(tacgia) lc ny a c ga tr l Tran Van A response.write Tc gi ca trang home.asp l: &a %>

1.4.1.1 Request.QueryString

Hnh 1.7 Tng t nh vy nu ngi dng gi gi tr Tran Van A thng qua mt bin trong form v chn method GET <form method=get action =gioithieu.asp> <input type=text name=tacgia value=Tran Van A> <input type=submit name=submit value=Nhan vao day de sang trang gioi thieu> </form>

16

ASP

Cho php server ly v cc gi tr c gi t ngi dng qua form (method POST). Chng hn file form.asp: <form method=POST action =xulyform.asp> <input type=text name=User> <input type=submit name=submit value=Nhan vao day de sang trang gioi thieu> </form> File xulyform.asp lm nhim v x l thng tin t Form ny s dng cu lnh request.form nhn li thng tin ngi dng g vo: <%Dim x x=Request.form(User) %> response.write Tn ngi dng l: &x %>

1.4.1.2 Request.Form

i tng Response dng gi cc p ng ca server cho client. Chng ta thng dng mt s lnh Response sau: a thng tin ra mn hnh trang web V d a cu cho Hello ra mn hnh ta dng lnh sau: <%response.write Hello%> Hin th thi gian trn server ra mn hnh: <%response.write now%> hoc <%=now%> now l hm ly ngy gi h thng trn server Chuyn x l sang mt trang Asp khc. V d trang xulyform.asp sau khi kim tra form ng nhp thy ngi dng khng c quyn vo website th n s chuyn cho file Error.asp(file ny hin th mt thng bo li user khng c quyn truy cp) <% Response.redirect error.asp %> Ngng x l cc Script. Dng lnh ny khi mun dng x l mt v tr no v b qua cc m lnh ASP pha sau. y l cch rt hay dng trong mt s tnh hung, chng hn nh debug li

1.4.2 Response

1.4.2.1 Response.Write

1.4.2.2 Response.Redirect

1.4.2.3 Response.End

1.4.3 i tng Session

Session l mt phin lm vic gia tng ngi dng v web server, n bt u khi ngi ln u tin truy cp ti 1 trang web trong website v kt thc khi ngi ri khi website hoc khng tng tc vi website trong mt khong thi gian nht nh (time out). Nh vy ti mt thi im mt website c bao nhiu ngi truy cp th c by nhiu phin ng vi mi ngi, cc phin ny c lp nhau. lu nhng thng tin tc dng trong 1

Chng 1: Gii thiu ASP

17

phin, ngi ta dng i tng Session, v d khi mt user bt u session vi vic login vo h thng, v user login cn c h thng ghi nh trong ton phin lm vic (nhm trnh vic ngi dng phi ng nhp li mi khi a ra mt request).Gi tr ca bin kiu session c phm vi trong tt c cc trang ASP ca ng dng, nhng khng c tc dng i vi phin lm vic khc. V d, s dng bin session sau y m s ln 1 ngi truy cp vo trang web: Home.asp <% session(x)=session(x)+1 %> session(x) i din cho s ln m mt user truy cp vo trang home.asp. Vi 2 ngi dng khc nhau th gi tr session(x) li khc nhau. Tht vy , A c th truy cp 10 ln (session(x) =10) trong khi B c th truy cp 2 ln thi (session(x) =2) Server kt thc v hy b i tng session khi: - Ngi dng khng triu gi cc trang ca ng dng hoc cp nht lm mi (refresh) li thng tin ca trang trong mt thi gian nht nh. Khi mt session ht thi gian hiu lc n s c xem nh ht hn s dng ,tt c cc bin lu trong session v bn thn session s b hy b. C th kim tra v tng gim thi gian Timeout ca Session tnh bng giy nh sau: <% Session.Timeout = 500 %> - Trang ASP gi n phng thc Abandon ca Session . <% Session.Abandon %> Vic khi to v kt thc 1 bin session c th vit trong cc hm s kin Session_OnStart v Session_OnEnd c nh ngha trong file global.asa Application i din cho ton b ng dng, bao gm tt c cc trang web trong website. lu tr nhng thng tin c tc dng trong ton ng dng, tc l c gi tr trong tt c cc trang asp v tt c cc phin, ngi ta dng i tng Application im khc ca bin application so vi bin session l session ch c tc dng i vi mi phin, cn bin application c tc dng vi mi phin. V d, m xem c bao nhiu ngi truy cp vo website, chng ta c th dng mt bin Application. Mi khi mt ngi dng mi truy cp vo website ta tng bin ny ln 1 n v ch rng c thm 1 ngi truy cp. <% application(x)=application(x)+1 %> Trang home.asp mun hin th s ngi truy cp ch cn in gi tr ca bin ny <% response.write S ngi truy cp vo website l:&application(x) %> Vi 2 phin khc nhau th gi tr application(x) l nh nhau. Tht vy , A v

1.4.4 i tng Application

18

ASP

B khi truy cp vo trang home.asp u thy: S ngi truy cp vo website l 3 (trong trng hp application(x) =3) Vic khi to v kt thc 1 bin application c th vit trong cc hm s kin Application_onStart v Application_onEnd c nh ngha trong file global.asa Kha Application: Do bin application c th c dng chung bi nhiu phin nn s c trng hp xy ra xung t khi c 2 phin cng thay i gi tr mt bin application. ngn chn iu ny chng ta c th dng phng thc Application.lock kha bin application trc khi thay i n. Sau khi s dng xong bin ny c th gii phng kha bng phng thc application.unlock (xem v d sau).

1.4.5 File Global.asa


File ny l file ty chn cha cc khai bo i tng, bin c phm vi ton ng dng. M lnh vit di dng Script. Mi ng dng ch c php c nhiu nht 1 file Global.asa, nm th mc gc ca ng dng. Ngi ta thng dng global.asa trong trng hp mun c nhng x l khi mt session bt u hay kt thc, mt application bt u hay kt thc, thng qua cc hm s kin : Application_Onstart : hm s kin ny xy ra khi ng dng asp bt u hot ng, tc l khi ngi dng u tin truy cp ti trang web u tin khi ng dng hot ng. Session_Onstart: hm s kin ny xy ra mi khi c mt ngi dng mi truy cp vo ng dng (bt u 1 session) Session_OnEnd: hm s kin ny xy ra mi khi 1 ngi dng kt thc session ca h Application_OnEnd: hm s kin ny xy ra khi ng dng dng. File Global.asa c cu trc nh sau: <script language="vbscript" runat="server"> Sub Application_OnStart .......... End sub Sub Application_OnEnd ............. End Sub Sub Session_OnStart ......... Application("x")=Application("x")+1 End sub Sub Session_OnEnd ............ End Sub </script>

Chng 1: Gii thiu ASP

19

V d sau y s m s ngi dng hin ang truy cp website. S ngi dng c lu tr trong bin Application(songuoi). bt c u trong ng dng nu mun hin th s ngi dng chng ta ch vic chn lnh hin th n: <%=Application(songuoi)%> Ngoi ra ng dng cng cho php m s ln 1 ngi truy cp website trong phin lm vic ca h. S ln c lu tr trong bin Session(solan) Global.asa <script language="vbscript" runat="server"> Sub Application_OnStart Application("songuoi")=0 End Sub Sub Session_OnStart Application.Lock Application("songuoi")=Application("songuoi")+1 Application.UnLock Session(solan)=0 End Sub Sub Session_OnEnd Application.Lock Application("songuoi")=Application("songuoi")-1 Application.UnLock End Sub Sub Application_OnEnd End Sub </script> Home.asp <html> <body> <p> C <%response.write(Application("songuoi"))%> ngi ang truy cp website </p> <%session(solan)= session(solan)+1 %> <p> Bn truy cp trang ny <%response.write(session("solan"))%> ln! </p> </body> </html>

20

ASP

i tng Dictionary lu tr thng tin theo tng cp kha/ gi tr. N kh ging vi mng nhng c kh nng x l linh hot i vi nhng cp d liu c quan h kiu t in (cp kha/ gi tr v d nh : m Sinh vin/ tn Sinh vin), trong kha c xem l t cn tra v gi tr chnh l ni dung ca t tra c trong t in. Mun s dng i tng Dictionary chng ta phi khi to n: <%set d=server.createObject("Scripting.Dictionary") d.add "work","Lam viec" d.add "learn","Hoc tap" tng t nh mng nhng mi phn t l mt cp kha/gi tr response.write "work ngha ting Vit l: "&d.item("work") response.write "learn ngha ting Vit l: "&d.item("learn") set d=nothing %> Mt s ng dng ca i tng ny nh dng m phng gi hng cha hng ha(shopping cart) vi cp kha/gi tr l :ProductID/Quantity (xem chng 2), s a ch vi cp kha/gi tr l: CustomerName/Address.

1.4.6 i tng Dictionary

1.4.7 i tng Server

i tng Server c dng truy cp cc thuc tnh v phng thc ca server .Ta thng dng 2 lnh sau

1.4.7.1 Server.CreateObject

khi to 1 i tng. V d: To mt i tng Connection: <%Set conn=Server.CreateObject(ADODB.Connection)%> To mt i tng Dictionary: <%set d=server.createObject("Scripting.Dictionary")%>

bin ng dn tng i thnh tuyt i. V d: <%str= server.mappath("nhanvien.mdb") Response.write str%> S cho kt qu: C:\WEB\nhanvien.mdb trong trng hp file nhanvien.mdb nm trong th mc C:\WEB Ta thng p dng server.mappath trong nhng trng hp x l ng dn tng i, v d l chui kt ni vo database connstr="provider=microsoft.jet.oledb.4.0; data source="&server.mappath("nhanvien.mdb")&";"

1.4.7.2 Server.Mappath

1.5 S dng Database vi ASP


Hu ht cc ng dng Web ng u lu tr d liu trong Database. V vy cc thao tc kt ni vo Database, xem, thm, sa, xa d liu trong cc bng l phn quan trng i vi cc ngn ng lp trnh web nh ASP. Chng ta s hc cc k thut s dng Asp thao tc vi d liu trong Database thng qua kin trc ADO.

Chng 1: Gii thiu ASP

21

1.5.1 Cc c php cn bn truy xut d liu t DB

thao tc vi d liu trong cc bng ca DB, c 4 thao tc chnh vi cu lnh SQL tng ng nh sau: (Ly v d vi mt Database c th Quanlyhocvien.mdb, trong c mt bng HosoHocVien (MaHV:text, Ten: text)

1.5.1.1 La chn

Ly tt c cc bn ghi trong bng: Select * from HosoHocVien Nu la chn c iu kin: Select * from HosoHocVien where MaHV=10 Nu ch la chn mt s trng trong bng: Select Ten from HosoHocVien where MaHV=10

1.5.1.2 Thm d liu vo bng 1.5.1.3 Sa d liu 1.5.1.3 Xo d liu

Insert into HosoHocVien values (001,Tran Van A) Update HosoHocVien set Ten=Tran Van B where MaHV=001 Delete from HosoHocVien where MaHV=001 Chng ta c th s dng cc lnh SQL phc tp hn c c kt qu mong mun nh s dng cc lnh join, order by, group by, having...

1.5.2 i tng Connection

i tng Connection cho php to kt ni n mt DB. Cc bc s dng Connection: - Khai bo i tng Connection Khi to To chui kt ni M Connection vi chui kt ni trn S dng Connection ng v Hy Connection

V d sau y kt ni n database Access QuanlyHocvien.mdb (database ny nm trong cng th mc vi file Asp) <% dim conn khai bo set conn=server.createObject("ADODB.connection") khi to stringconn="provider=microsoft.jet.OLEDB.4.0;data source="&server.mappath("QuanlyHocVien.mdb")&";" chui kt ni conn.open stringconn m connection cc thao tc vi DB s dng connection ny ....... conn.close ng connection Set conn=nothing hy connection %>

22

ASP

(chui stringconn= vit trn 1 dng, trong : data source = ch c mt du cch gia data v source, chui ny ch ng vi Access)

1.5.3 i tng Recordset


i tng Recordset thng dng xem, thm, sa, xa cc bn ghi trong bng d liu ca Database. N tr n tp hp cc bn ghi l kt qu tr v t cu lnh select Cc bc s dng i tng Recordset : - Khai bo i tng Recorset Khi to To sql query M Recordset vi chui sql query v connection m S dng Recordset ng v Hy Recordset

V d sau y cho php ly cc bn ghi trong bng v hin th ra ngoi trang web. <%Dim rs khai bo Recordset set rs=server.createObject("ADODB.Recordset") Khi to SQLstring="select * from HosoHocVien" SQL query rs.open SQLstring ,conn M Recordset dng vng lp hin th ton b cc bn ghi ra mn hnh do while not rs.EOF response.write RS(MaHV) response.write RS(Ten) response.write <BR> rs.movenext dch con tr rs ti bn ghi tip theo loop rs.close ng recordset set rs=nothing hy recordset %> Chng ta c th kt hp gia script v th html d liu c hin th ra ngoi trang web vi giao din theo mun : <table border="1"> <tr> <td>MA HOC VIEN</td> <td>TEN</td> </tr> <%do while not rs.eof%> <tr> <td ><%=rs("MaHV")%></td> <td ><%=rs("Ten")%></td>

Chng 1: Gii thiu ASP

23

</tr> <%rs.movenext loop rs.close %> </table> Sau y l mt v d hon chnh lit k cc user trong bng tblUser ra trang web: Connection.asp <% dim conn Sub openConn() set conn=server.createobject("adodb.connection") connstr="provider=microsoft.jet.oledb.4.0; data source="&server.mappath("myDB.mdb")&";" conn.open connstr End Sub Sub destroyConn() conn.close set conn=nothing End Sub %> ListUser.asp <!--#include file ="Connection.asp"--> <%openConn set rs = server.createobject("ADODB.Recordset") rs.open "select * from tblUser", conn%> <table border="1" width="200"> <tr><td>ID</td><td>Username</td><td>Address</td> <% do while not rs.EOF <tr> <td><%=rs("id")%></td> <td><%=rs("username")%></td> <td><%=rs("address")%></td> </tr> <% rs.movenext loop rs.close destroyConn%> </table>

1.5.4Thm sa xa d liu trong DB:

Vi mt connection m chng ta c th dng n thc thi cu lnh SQL dng insert, update, delete: Thm d liu: <%Conn.execute Insert into HosoHocvien values(001,Tran Van A)%>

24

ASP

Sa d liu: <%Conn.execute MaHV=001 %> Xo d liu: <%Conn.execute Delete from HosoHocVien where MaHV=001 %> Ngoi ra chng ta c th dng Recordset thm, sa, xa d liu trong database bng cch duyt qua tp hp cc bn ghi trong bng Thm d liu: <%Dim RS set rs=server.createObject("ADODB.recordset") SQLstring="select * from HosoHocVien" rs.open SQLstring ,conn,3,2 rs.open SQLstring ,conn,adOpenStatic,adLockPessimistic rs.addnew Thm mt bn ghi rs(MaHV)=001 gn gi tr cho cc trng ca bn ghi rs(Ten)=Tran Van A rs.update Xc nhn thm xong rs.close ng recordset %> Sa: <% set rs=server.createObject("ADODB.recordset") Khi to SQLString="select * from HosoHocVien where ma=001 ly ra bn ghi cn sa rs.open SQLString ,conn,3,2 rs(Ten)=Tran Van B sa li gi tr trng Ten rs.update xc nhn sa xong rs.close ng recordset %> Xa: " Update HosoHocVien set Ten=Tran Van B where

<% set rs=server.createObject("ADODB.recordset") Khi to SQLString="select * from HosoHocVien where MaHV=001 " Cu lnh SQL ly ra ng bn ghi cn xa rs.open SQLString ,conn,3,2 rs.delete xa bn ghi ny rs.close ng recordset %>

Trong nhiu trng hp do kt qu cu lnh select .... tr v qu nhiu bn ghi, nu chng ta hin th tt c trn cng 1 trang web th s bt tin trong vic c chng, khi ngi ta tin hnh phn n ra hin th thnh nhiu trang, y gi l k thut phn trang. So vi cch c v hin th d liu
Chng 1: Gii thiu ASP 25

1.5.4 Phn trang

thng thng, th phn trang i hi phi thit lp thm mt s thuc tnh: - S bn ghi cn hin th trn mt trang RS.PageSize Trang no ang c hin th: RS.AbsolutePage, Khi m Recordset i hi phi thm cc tham s CursorType v LockType :rs.open SQLstring ,conn,3,3 Vng lp hin th d liu cn c c ch m bo n ch chy ng s bn ghi trn mt trang (rs.pagesize) l phi thot khi vng lp. V d hin th bng HosoHocVien vi yu cu ch hin th 4 bn ghi/1 trang: Home.asp <% dim x bin ny dng xc nh xem cn hin th trang no x=request.querystring(PageNumber) nhn li PageNumber khi ngi dng nhn vo cc nt Trc v Tip if x= then u tin s hin th trang 1 x=1 end if dim conn set conn=server.createObject("ADODB.connection") stringconn="provider=microsoft.jet.OLEDB.4.0;data source="&server.mappath("QuanlyHocVien.mdb")&";" conn.open stringconn Dim RS set rs=server.createObject("ADODB.recordset") SQLstring="select * from HosoHocVien" rs.pagesize= 4 ch hin th 4 bn ghi/1 trang rs.open SQLstring ,conn,3,3 rs.AbsolutePage=x trang cn hin th dem=0 bin ny m bo vng lp ch thc hin ti a 4 ln lp do while not rs.EOF and dem<rs.pagesize response.write RS(MaHV) response.write RS(Ten) response.write <BR> dem=dem+1 rs.movenext loop %> <% Hin th nt Trc if x>1 then %> <a href=home.asp?pageNumber=<%=x-1%>>Trc</a> <%end if%> <% Hin th nt Tip if not RS.EOF then %> <a href=home.asp?pageNumber=<%=x+1%>>Tip</a>

26

ASP

<%end if rs.close ng recordset %> tm kim d liu trong bng ca Database chng ta da vo cu lnh SQL: select * from Tenbang where Tencot like %giatri% V d on chng trnh sau cho php hin th nhng Sinh Vin trong bng HosoHV ca DB Sinhvien.mdb c tn c tm kim bi t kho Anh (V d : Tun Anh, Vn Anh, Vit Anh...) <% set conn=server.createobject("adodb.connection") connstring="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("sinhvien.mdb")&";" conn.open connstring set rs=server.createobject("adodb.recordset") rs.open "select * from HosoSV where ten like '%Anh%' ",conn do while not rs.eof response.write rs("MaSV") response.write " " response.write rs("Ten") response.write " " response.write rs("Lop") response.write "<BR>" rs.movenext loop rs.close %> Thng thng ngi s dng nhp t kho cn tm kim vo mt trng ca form. nh vy ta ch vic dng lnh request.form ly li t kho cn tm kim v a vo cu lnh SQL trn. Chng hn ngi s dng nhp t kho cn tm vo trng Ten trong form th chng ta s m bng bng cu lnh SQL sau: <% ten=request.form(Ten) validate rs.open "select * from HosoSV where Ten like '%&ten&%' ",conn ... %> Nu khng tm thy bn ghi no th gi tr rs.EOF s true. <% If rs.eof then response.write Khng tm thy kt qu no %>

1.5.5 Tm kim d liu trong database

Chng 1: Gii thiu ASP

27

You might also like