1 .T ng qua nổ
4.2 ASP file là gì?
File đượ ạc t o v i ph n m r ng ớ ầ ở ộ .ASP. Trong file này ch a các th HTML, các k chứ ẻ ị b n Scripting nh VBSCript, JavaScript…ả ư
Các script c a ASP đủ ược n m trong c p th <% %>ằ ặ ẻ
Công ngh ASP đệ ược xây d ng tr c ti p bên trong IIS(Information Internet Services)ư ự ế (đ i v i Window 2000, Windows XP, Windows Server 2003) hay tích h p trong Personalố ớ ợ Webserver đ i v i Windows 95, Windows NT, Windows 98, Windows Me.ố ớ
C u trúc c b n c a m t file ASP nh sau:ấ ơ ả ủ ộ ư <html>
<head>
<title>Desige Simple Website</title> </head>
<body> <%
’Các script c a ASP đủ ược vi t đây!ế ở %>
</body> </html>
Ghi chú:
- Các script ASP được vi t trong c p th <% %>, b t đ u b ng th m <% và k t thúc b ngế ặ ẻ ắ ầ ằ ẻ ở ế ằ th đóng %>ẻ
- Chú thích trong l p trình ASP đậ ược vi t sau d u nháy đ n ‘ế ấ ơ - Các script ASP có th vi t xen k gi a các mã HTML.ể ế ẻ ữ
4.3 ASP làm vi c nh th nào?ệ ư ế
Trang HTML tĩnh:
4.4 Cài đ t ASP trên máy tínhặ
ASP có th để ược cài đ t trên nhi u h đi u hành nh : Win95, Win98, WinME,ặ ề ệ ề ư Win2000, WinXP, Win Server 2003. Tham kh o cách cài đ t ASP trên các h đi u hành nóiả ặ ệ ề trên t i trang web sau: ạ http://www.w3schools.com/asp/asp_install.asp
Sau đây là các bước đ cài đ t và ch y m t trang ASP trên Windows XP Professional.ể ặ ạ ộ Bước 1: Chèn đĩa Windows XP Professional CD-Rom vào đĩa CD-Rom.ổ
Bước 2: Click StartSettingsControl PanelAdd/Remove Programs.
Bước 3: Click Add/Remove Windows Components.
Bước 4: Đánh d u ki m vào m c Internet Informations Services, click OK.ấ ể ụ
Bước 5: M t th m c Inetpub s độ ư ụ ẽ ượ ạc t o trên đĩa c ng đổ ứ ược cài h đi u hành.ệ ề Bước 6: T o m t th m c m i MyWeb trong th m c wwwroot thu c th m c Inetpub.ạ ộ ư ụ ớ ư ụ ộ ư ụ Bước 7: T o m t trang web ASP v i tên “test1.asp” ch ng h n r i l u nó trong th m cạ ộ ớ ẳ ạ ồ ư ư ụ
MyWeb.
Bước 8: Vào Control PanelAdministrative Tools, ch y IIS Manager đ kích ho t Webạ ể ạ Server.
Bước 9: Dùng trình duy t Internet Explore gõ đ a ch :ệ ị ỉ http://localhost/MyWeb/test1.asp để xem trang web v a t o.ừ ạ
Ghi chú:
b c 6 có th t o th m c MyWeb m t đ ng d n khác, sau đó c u hình cho IIS
Ở ướ ể ạ ư ụ ở ộ ườ ẫ ấ
t o đạ ường d n o đ n th m c MyWeb.ẫ ả ế ư ụ
Ví d 1:ụ
<html> <head>
<title>Desige Simple Website</title> </head>
<body> <%
response.write "Hello! ASP!" ‘Hi n th l i chàoể ị ờ %>
</body> </html>
Ví d 2: ụ Vi t m t trang Login.html cho phép ngế ộ ườ ử ụi s d ng nh p vào h tên, sau đó kích nútậ ọ Submit đ chuy n đ n trang Result.asp. Trang Result.asp có nhi m v hi n th l i chào đ iể ể ế ệ ụ ể ị ờ ố v i tên ngớ ườ ử ụi s d ng: Hello [username]!
Mã ngu n:ồ Login.html <html> <head> <title>Username</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>Welcome</title> </head> <body> <% dim x
x=request.form("username") 'bi n x nh n l i giá trế ậ ạ ị username t form thu c trang login.htmlừ ộ
response.write "Hello " & x 'hi n th n i dung tùyể ị ộ ‘theo giá tr nh n đị ậ ược do người dùng đi n vào formề %>
</body> </html>
4.5 Ngôn ng k ch b n VBScriptữ ị ả
Mã l nh ASP có th vi t b ng VBScript ho c JavaScript. Các script c a ASP th c thiệ ể ế ằ ặ ủ ự trên server và n m trong c p d u ằ ặ ấ <% %>. Bên trong có th ch a các bi u th c, hàm, toán t ,ể ứ ể ứ ử l nh h p l c a ngôn ng Script tệ ợ ệ ủ ữ ương ng. đây chúng ta tìm hi u v n t t cách s d ngứ Ở ể ắ ắ ử ụ ASP đ l p trình web đ ng b ng VBScript.ể ậ ộ ằ
4.5.1 Bi nế
Bi n dùng đ l u tr thông tin. Cú pháp khai báo bi n nh sau:ế ể ư ữ ế ư
Dim bi n 1, bi n 2ế ế …
Bi n có ph m vi c c b , n u nó đế ạ ụ ộ ế ược khai báo bên trong 1 hàm hay th t c thì nó chủ ụ ỉ có tác d ng trong hàm hay th t c đó, n u nó khai báo trong ph m vi toàn trang ASP thì tácụ ủ ụ ế ạ d ng c a nó s có ph m vi trong toàn trang ASP, tuy nhiên không có tác d ng trong trang ASPụ ủ ẽ ạ ụ khác.
Ví dụ:
trang Hello.asp ta có m t bi n x có giá tr là 3, trang Index.asp ta dùng l nh
Ở ộ ế ị ệ <
%response.write x%> thì s không hi n th k t q a là 3 vì bi n x c a trang Hello.asp khôngẽ ể ị ế ủ ế ủ được hi u trong trang Index.asp. Tể ương t nh v y khi m t bi n đự ư ậ ộ ế ược khai báo trong 1 hàm, s không có tác d ng bên ngoài hàm đó.ẽ ụ ở
Ghi chú:
Không b t bu c nh ng nên khai báo đ ki m soát và b t l i.ắ ộ ư ể ể ắ ỗ
Trong asp không khai báo ki u c a bi n. Asp s căn c vào vi c s d ng bi n màể ủ ế ẽ ứ ệ ử ụ ế quy t đ nh xem nên x lý bi n đó nh là ki u gì.ế ị ử ế ư ể
Nên s d ng <%Option Explicit %> ngay đ u m i trang ASP đ b t l i khi khôngử ụ ở ầ ỗ ể ắ ỗ khai báo bi n mà s d ng.ế ử ụ
Khi khai báo nên s d ng các ti n t đ d phân bi t v ý nghĩa c a bi n đử ụ ề ố ể ễ ệ ề ủ ế ược khai báo. D ng d li uạ ữ ệ Ti n t (prefix)ề ố Boolean Bln Byte Byt Double Dbl Integer Int Long Lng Object Obj String Str ADO command Cmd ADO connection Cnn ………..
Đ có th ki m soát chính xác m t bi n theo ki u mình mong mu n, chúng ta dùng cácể ể ể ộ ế ể ố hàm chuy n đ i ki u. Đ đ nh nghĩa m t bi n có ph m vi s d ng trong nhi u trang ASPể ổ ể ể ị ộ ế ạ ử ụ ề c a ng d ng Web, ta dùng bi n session và application (xem đ i tủ ứ ụ ế ố ượng session và
application).
4.5.2 M ngả
4.5.2.1 M ng m t chi uả ộ ề
M ng dùng đ l u tr d li u theo m t dãy có th t các ph n t , cú pháp đ khai báo m tả ể ư ữ ữ ệ ộ ứ ự ầ ử ể ộ m ng nh sau:ả ư
Dim tên_m ng(ch s )ả ỉ ố
Đ tăng gi m s ph n t c a m t m ng đã khai báo, cú pháp vi t nh sau:ể ả ố ầ ử ủ ộ ả ế ư ReDim tên_m ng(ch s m i)ả ỉ ố ớ
Đ bi t t ng s các ph n t c a m t m ng ta s d ng hàm UBOUND v i cú pháp sau:ể ế ổ ố ầ ử ủ ộ ả ử ụ ớ Ubound(tên_m ng)ả
Ví d :ụ
<%
dim y(5) ‘khai báo m ng 6 ph n t đánh ch s t 0 đ n 5ả ầ ử ỉ ố ừ ế y(0)=2 y(1)=13 response.write y(0) response.write y(1) %> 4.5.2.2 M ng đa chi uả ề
ASP cho phép khai báo m t m ng l n h n m t chi u, độ ả ớ ơ ộ ề ược g i là m ng đa chi u.ọ ả ề Cú pháp: Dim tên_m ng(ch s 1, ch s 2, …, ch s n)ả ỉ ố ỉ ố ỉ ố
Ví d :ụ
Dim arraylist(10,10)
V i ví d trên s khai báo m t m ng hai chi u có 10x10 ph n t , trong đó ph n tớ ụ ẽ ộ ả ề ầ ử ầ ử (1,1) phía trên bên trái m ng, ph n t (10,10) phía dở ả ầ ử ở ưới bên ph i m ng.ả ả
Tương t nh v y, ta có th khai báo m ng ba chi u, b n chi u,… nh ng t t nh t chự ư ậ ể ả ề ố ề ư ố ấ ỉ nên s d ng m ng hai chi u (có th ba chi u) vì n u quá nhi u chi u s làm cho vi c x lýử ụ ả ề ể ề ế ề ề ẽ ệ ử thêm ph c t p.ứ ạ
4.5.3 H ng sằ ố
Cú pháp đ khai báo m t h ng s nh sau:ể ộ ằ ố ư
CONST tên_h ng = giá trằ ị
4.5.4.1 C u trúc đi u ki n IF…THEN…ELSE…IFấ ề ệ Cú pháp: <% If <Đi u ki n 1ề ệ > then <Các câu l nh>ệ Else If <Đi u ki n 2ề ệ > then <Các câu l nh>ệ End if End if %>
Ngoài ra có th s d ng c u trúc ể ử ụ ấ IF.. THEN. . . . ELSEIF. . . END IF
<%
If <Đi u ki n 1ề ệ > then
<Các câu l nh 1>ệ
ElseIf <Đi u ki n 2ề ệ > then
<Các câu l nh 2>ệ
Else
<Các câu l nh 3>ệ
End if
%>
4.5.4.2 C u trúc l a ch n SELECT CASE…END SELECTấ ự ọ
Cú pháp:
<%
Select Case <Tenbien>
Case <gia tri 1> <Nhóm l nh 1>ệ
Case <gia tri 2> <Nhóm l nh 2>ệ
Case <gia tri n> <Nhóm l nh n>ệ
Case Else
<Nhóm l nh n+1>ệ %>
4.5.4.3 C u trúc l p tu n t FOR…NEXTấ ặ ầ ự
Dùng đ l p v i s l n đã bi t, tuy nhiên ta có th ng t b ng l nh EXIT FOR.ể ặ ớ ố ầ ế ể ắ ằ ệ
Cú pháp:
<%
FOR <HoTenbien>=<giatridau> TO <giatricuoi> STEP <Buoc nhay>
NEXT %> 4.5.4.4 C u trúc l p DO WHILE…LOOPấ ặ Cú pháp: <% Do while <Đi u ki n>ề ệ <Các câu l nh>ệ Loop %> 4.5.4.5 C u trúc l p WHILE…WENTấ ặ
Cú pháp: <% While <Đi u ki n>ề ệ <Các câu l nh>ệ Wend %> 4.5.4.6 C u trúc l p DO…LOOP UNTIL…ấ ặ Cú pháp: <% DO <Các câu l nh>ệ
Loop until <Đi u ki nề ệ > %>
Ví d 1: ụ Vi t trang tinhtong.asp đ hi n th k t qu c a t ng S=2+4+6+…+12ế ể ể ị ế ả ủ ổ
Ví d 2:ụ Vi t trang nhapso.asp và trang ketqua.asp đ hi n th k t qu c a t ng S=1+3+5+…ế ể ể ị ế ả ủ ổ +(2n-1).
Chi ti t trang nhapso.asp nh sau:ế ư
- Trang ch a m t đ i tứ ộ ố ượng Textbox đ nh p vào giá tr n.ể ậ ị
- M t nút Submit đ tính toán k t qu và chuy n đ n trang ketqua.asp và in ra k t qu .ộ ể ế ả ể ế ế ả
4.5.5 M t s hàm c b n trong ASPộ ố ơ ả
4.5.5.1 Hàm x lý chu iử ỗ
TRIM(Xâu as string):B kho ng tr ng hai đ u kí tỏ ả ắ ầ ự LEFT(Xâu as string, n as interger): L y bên trái xâu n kí t .ấ ự RIGHT(Xâu as string, n as interger): L y bên ph i xâu n kí t .ấ ả ự LCASE(Xâu as string) : Chuy n xâu v ch thể ề ữ ường
UCASE(Xâu as string) : Chuy n xâu v ch hoaể ề ữ
MID(Xâu as string, n1, n2): L y n2 kí t trong xâu b t đ u t v trí n1.ấ ự ắ ầ ừ ị CSTR(Bi n):ế Hàm chuy n đ i bi n thành ki u stringể ổ ế ể
Hàm JOIN/SPLIT(Xâu as string, kí t ngăn cách): ự S N i/C t xâu thànhẽ ố ắ m t/nhi u đo n b ng cách xác đ nh kí t ngăn cách trên và cho các đo n đó l n lộ ề ạ ằ ị ự ở ạ ầ ượt vào m t m ng.ộ ả
Ví d :ụ
<%
x=”Hà n i;H i phòng; TPHCM”ộ ả y=split(x,”;”)
for i=0 to 2 step 1
Response.write y(i)&”<br>” next ‘y(0)=”Hà n i”ộ ‘y(1)=”H i phòng”ả ‘y(2)=”TPHCM” %> 4.5.5.2 Các hàm x lý sử ố SQR(n): Căn b c hai c a nậ ủ INT(n) : L y ph n nguyên nấ ầ MOD : Phép đ ng dồ ư
Toán t \ : ử Phép chia nguyên
Round(s , n) : ố Làm tròn s v i n ch s th p phânố ớ ữ ố ậ
Các hàm khác : Abs, Atn, Cos, Exp, Fix, Hex, Log, Oct, Randomize, Round, Sin, Sqr, Tan
4.5.5.3 Các hàm chuy n đ i ki uể ổ ể
Cdate: Chuy n sang ki u ngày thángể ể <%Dim a, b
a=”22/1/2004” ‘a đang được hi u là m t chu iể ộ ỗ
b=Cdate(a) ‘chuy n chu i a sang đúng ki u ngày thángể ỗ ể %>
Cint: Chuy n sang ki u Integerể ể <% Dim a,b
a=”3” b=cint(a) %>
Cstr: Chuy n sang ki u stringể ể <% Dim a,b
a=3
b=Cstr(a)%>
Các hàm khác : Cbyte, Cdbl,CSng, Cbool, Ccur,
4.5.5.4 Các hàm format
Các hàm này cho phép đ nh d ng d li uị ạ ữ ệ
a) FormatDateTime:Tr v chu i đ nh d ng theo ki u DateTime.ả ề ỗ ị ạ ể Cú pháp: FormatDateTime(Date,[NamedFormat])
NamedFormat:
0: Ngay thang day du
1: Ngay thang theo kieu so 2: Ngay thang
3: Gio,phut 4: Phut, giay
Ví d :ụ FormatDateTime(ngay,0)
b) FormatCurrency: Tr v chu i đả ề ỗ ược đ nh d ng theo ki u ti n t .ị ạ ể ề ệ
Cú pháp: FormatCurrency(expression, [NumDigitsAfterDecimal]) Ví d : ụ FormatCurrency(tongtien, 3)
c) FormatNumber: Tr v chu i đ nh d ng theo ki u s .ả ề ỗ ị ạ ể ố
Cú pháp: FormatNumber(expression, [NumDigitsAfterDecimal]) Ví d : ụ FormatNumber(tonggiatri, 3)
d) FormatPercent: Tr v chu i đả ề ỗ ược đ nh d ng theo ki u ph n trăm.ị ạ ể ầ
Cú pháp: FormatPercent(expression, [NumDigitsAfterDecimal])
4.5.5.5 Các hàm ngày tháng
a) Date: Tr v ngày hi n hành trên Server.ả ề ệ b) Time: Tr v gi hi n hành.ả ề ờ ệ
c) Now: Tr v ngày gi hi n hành trên Server.ả ề ờ ệ
Các hàm khác: DateAdd, DateDiff, Year, Month, Day, Weekday, Hour, Minute, Second
Ví d :ụ
<%
Response.write “Hom nay la ngay: ” &Date ‘Date tr v ngày hi nả ề ệ hành
Response.write Now ‘Now tr v ngày và gi hi n hànhả ề ờ ệ %>
4.5.5.6 Các hàm ki m traể
Các hàm này cho phép ki m tra ki u c a bi n và bi u th cể ể ủ ế ể ứ • Isdate: Ki m tra có ph i đúng ki u ngày tháng không?ể ả ể
<%Dim a
a=”1/1/2004”
If Isdate(a) then
Response.write “a đúng là ki u ngày tháng ”ể End if
%>
• IsNumeric: Ki m tra có ph i đúng ki u s không?ể ả ể ố <%Dim a A=”13” If IsNumeric(a) then Response.write “a đúng là ki u s ”ể ố End if %>
• Các hàm khác: IsArray, IsEmpty, IsNull, IsObject
4.5.5.7 Th t c và hàm ngủ ụ ười dùng
Cũng nh các ngôn ng l p trình khác, VBScript cho phép ngư ữ ậ ười dùng đ nh nghĩa và sị ử d ng các th t c ,hàm. ụ ủ ụ Nh v y chờ ậ ương trình có th chia thành các module nh t o nên c uể ỏ ạ ấ trúc l p trình sáng s a (phậ ủ ương pháp chia đ tr ).ể ị
Ch ng h n v i m t bài toán ASP c n th c hi n vi c hi n th d li u t Database raẳ ạ ớ ộ ầ ự ệ ệ ể ị ữ ệ ừ màn hình, ta có th xây d ng các th t c hay hàm th c hi n t ng nhi m v đó:ể ự ủ ụ ự ệ ừ ệ ụ
- Th t c KetNoiủ ụ - Th t c HienThiủ ụ - Th t c HuyKetNoiủ ụ Nh v y ph n chư ậ ầ ương trình chính s r t sáng s a, chúng ta ch vi c g i 3 th t c:ẽ ấ ủ ỉ ệ ọ ủ ụ <% KetNoi HienThi HuyKetNoi %> Th t củ ụ Th t c th c hi n m t nhóm các câu l nh. Đ vi t m t th t c chúng ta theo c u trúcủ ụ ự ệ ộ ệ ể ế ộ ủ ụ ấ sau:
<%Sub TenThuTuc(Tham so) ‘ Ph n thân c a th t cầ ủ ủ ụ End Sub
%>
Ví d :ụ
Xây d ng chự ương trình đăng nh p g m 2 file: Form.asp (hi n th form đ ngậ ồ ể ị ể ười dùng nh p username và password), Xulyform.asp (x lý form, n u username=”test” vàậ ử ế
password=”test” thì thông báo đăng nh p thành công, n u không thì thông báo đăng nh p th tậ ế ậ ấ b i). File Xulyform.asp s vi t th t c và g i th t c này:ạ ẽ ế ủ ụ ọ ủ ụ
<html> <body>
<form method="post" action="xulyform.asp"> <input type="text" name="user">
<input type="password" name="pass">
<input type="submit" value=”Login” 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 ‘g i th t cọ ủ ụ %> Hàm Hàm khác v i th t c là nó tr v m t k t qu . Đ vi t m t hàm chúng ta vi t theoớ ủ ụ ả ề ộ ế ả ể ế ộ ế c u trúc sau:ấ
<%Function TenFunction(tham so) ‘ Ph n n i dung c a hàmầ ộ ủ
End Function %>
Chú ý trong n i dung c a hàm bao gi cũng ph i có m t l nh tr v k t qu :ộ ủ ờ ả ộ ệ ả ề ế ả TenFunction=...
V i bài toán đăng nh p trên chúng ta có th vi t l i nh sau (file xulyform.asp dùngớ ậ ở ể ế ạ ư hàm) 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"
CheckUser="True" end if End Function %> <% dim a a=CheckUser(request.form("user"),request.form("pass")) ‘ g iọ hàm if a="True" then
response.write "Dang nhap thanh cong" else
response.write "Dang nhap that bai" end if
%>
4.5.6 S d ng th #includeử ụ ẻ
Trong trường h p mu n tr n mã ngu n t 1 file asp vào 1 file asp khác trợ ố ộ ồ ừ ước khi server th c thi nó, ngự ười ta dùng th đ nh hẻ ị ướng #include v i cú phápớ
<!--#include file=”DuongDan_Denfile”--> ho c ặ <!--#include virtual=”DuongDan_Denfile”--> Ví d : ụ <!--#include file=”Component/Banner.asp”--> <!--#include virtual=”/QLSV/Component/Banner.asp”--> Ghi chú:
Người ta thường include file ch a các hàm th vi n dùng chung cho c ng d ng vàoứ ư ệ ả ứ ụ đ u file Asp nào c n s d ng th vi n này, ho c insert các file Header và Footer cho 1 trangầ ầ ử ụ ư ệ ặ web, insert các thành ph n đầ ượ ử ục s d ng chung trong nhi u file asp nh menu,...ề ư
N u s d ng cú pháp v i t khóa virtual thì yêu c u ph i có đế ử ụ ớ ừ ầ ả ường d n đ y đ tẫ ầ ủ ừ Alias trong IIS.
Trong ví d trên, Alias QLSV đụ ượ ấc c u hình trong IIS đ ch để ỉ ường d n đ n th m cẫ ế ư ụ ch a trang web.ứ
Trang Web ASP được include không được ch a đo n code:ứ ạ
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> n u trang chính s d ng nó đã cóế ử ụ đo n mã này.ạ