1 .T ng qua nổ
4.5.7.1 Đi tố ượng Request
B i vì k ch b n đở ị ả ược th c thi trên Web Server nên đ i tự ố ượng Request được coi nh làư đ i tố ượng Input. Đ i tố ượng này l u tr thông tin t Browser g i đ n Web Server.ư ữ ừ ử ế
M t s phộ ố ương th c c b n:ứ ơ ả
a) Request.QueryString
Cho phép server l y v các giá tr đấ ề ị ược g i t ngử ừ ười dùng qua URL ho c formặ (method=GET).
Ví d :ụ
Xây d ng trang home.asp ch a danh m c các tác gi . Khi kích vào h tên m i tác giự ứ ụ ả ọ ỗ ả s chuy n sang trang gioithieu.asp. Trang này s hi n th l i chào có d ng:ẽ ể ẽ ể ị ờ ạ
“Xin chào, đây là trang gi i thi u v tác gi : <h tên tác gi >”ớ ệ ề ả ọ ả
Server mu n nh n l i giá tr này thì dùng request.QueryString trang gioithieu.aspố ậ ạ ị ở <%
dim a
a=request.querystring(“tacgia”) ‘lúc này a có giá trị ‘là “Tran Van A”
response.write “Tác gi c a trang home.asp là: ” & aả ủ %>
Tương t nh v y n u ngự ư ậ ế ười dùng g i giá tr Tran Van A thông qua m t bi n trongử ị ộ ế form và ch n method GETọ
<form method=”get” action =”gioithieu.asp? tacgia=Nguyen Van A&namxb=1990”>
<input type=”text” name=”tacgia” value=”Tran Van A”> <input type=”submit” name=”submit” value=”Nhan vao day de sang trang gioi thieu”>
</form>
b) Request.Form
Cho phép server l y v các giá tr đấ ề ị ược g i t ngử ừ ười dùng qua form (method=POST).
Ví d :ụ
Trang form.asp v i mã ngu n nh sau:ớ ồ ư
<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>
Trang xulyform.asp làm nhi m v x lý thông tin t Form này s dùng câu l nh request.formệ ụ ử ừ ẽ ệ đ nh n l i thông tin ngể ậ ạ ười dùng đã gõ vào:
<% Dim x
x=Request.form(“User”)
response.write “Tên người dùng là: ” & x %>
4.5.7.2 Đ i tố ượng Response
Đ i tố ượng Response dùng đ g i các đáp ng t Server đ n Client.ể ử ứ ừ ế M t s phộ ố ương th c c b n:ứ ơ ả
a) Response.Write
Đ a thông tin ra màn hình trang webư
Ví d :ụ
Đ đ a câu chào Hello ra màn hình ta dùng l nh sau:ể ư ệ <%response.write “Hello”%> Hi n th th i gian trên server ra màn hình:ể ị ờ
<%response.write now%> ho c ặ <%=now%>
now là hàm l y ngày gi h th ng trên server.ấ ờ ệ ố
b) Response.Redirect
Chuy n x lý sang m t trang Asp khác.ể ử ộ
Ví d :ụ
Trang xulyform.asp sau khi ki m tra form đăng nh p th y ngể ậ ấ ười dùng không có quy nề vào website thì nó s chuy n đ n trang Error.asp(trang này hi n th m t thông báo l i userẽ ể ế ể ị ộ ỗ không có quy n truy c p). Mã l nh vi t nh sau:ề ậ ệ ế ư
<% Response.redirect “error.asp” %>
c) Response.End
Ng ng x lý các Script. Thông thừ ử ường, người ta dùng l nh này khi mu n d ng x lý ệ ố ừ ử ở m t v trí nào đó và b qua các mã l nh ASP phía sau. Đây là cách r t hay dùng trong m tộ ị ỏ ệ ở ấ ộ s tình hu ng, ch ng h n nh debug l i.ố ố ẳ ạ ư ỗ
4.5.7.3 Đ i tố ượng Session
Session là m t phiên làm vi c gi a t ng ngộ ệ ữ ừ ười dùng và web server, nó b t đ u khiắ ầ người đó l n đ u tiên truy c p t i 1 trang web trong website và k t thúc khi ngầ ầ ậ ớ ế ười đó r i kh iờ ỏ website ho c không tặ ương tác v i website trong m t kho ng th i ớ ộ ả ờ gian nh t đ nh (time out).ấ ị
Nh v y t i m t th i đi mư ậ ạ ộ ờ ể , m t website có bao nhiêu ngộ ười truy c p thì có b y nhiêuậ ấ phiên(Session) ng v i m i ngứ ớ ỗ ười, các phiên này đ c l p nhau. Đ l u nh ng thông tin tácộ ậ ể ư ữ d ng trong 1 phiên, ngụ ười ta dùng đ i tố ượng Session, ví d khi m t user b t đ u session v iụ ộ ắ ầ ớ vi c login vào h th ng, và user này c n đệ ệ ố ầ ược h th ng ghi nh trong toàn phiên làm vi cệ ố ớ ệ c a mình (nh m tránh vi c ngủ ằ ệ ười dùng ph i đăng nh p l i m i khi đ a ra m t request).ả ậ ạ ỗ ư ộ
Giá tr c a bi n ki u session có ph m vi trong t t c các trang ASP c a ng d ng,ị ủ ế ể ạ ấ ả ủ ứ ụ nh ng không có tác d ng đ i v i phiên làm vi c khác.ư ụ ố ớ ệ
Ví d :ụ
S d ng bi n session sau đây đ đ m s l n 1 ngử ụ ế ể ế ố ầ ười đã truy c p vào trang web:ậ Home.asp
<% session(“home”)=session(“home”)+1 %>
session(“home”) đ i di n cho s l n mà m t user đã truy c p vào trang home.asp. V iạ ệ ố ầ ộ ậ ớ 2 người dùng khác nhau thì giá tr session(“home”) l i khác nhau.ị ạ
Th t v y , A có th truy c p 10 l n (session(“home”) =10) trong khi B có th truy c pậ ậ ể ậ ầ ể ậ 2 l n thôi (session(“home”) =2).ầ
Server k t thúc và h y b đ i tế ủ ỏ ố ượng session khi:
Người dùng không tri u g i các trang c a ng d ng ho c c p nh t làm m i(refresh)ệ ọ ủ ứ ụ ặ ậ ậ ớ l i thông tin c a trang trong m t th i gian nh t đ nh.ạ ủ ộ ờ ấ ị
Khi m t session h t th i gian hi u l c nó s độ ế ờ ệ ự ẽ ược xem nh h t h n s d ng ,t t cư ế ạ ử ụ ấ ả các bi n l u trong session và b n thân session s b h y b .ế ư ả ẽ ị ủ ỏ
Có th ki m tra và ể ể thi t l p th i gian Timeout c a Session tính b ng giây nh sau:ế ậ ờ ủ ằ ư <%
Session.Timeout = 500 %>
Vi c kh i t o và k t thúc 1 bi n session có th vi t trong các hàm s ki n Session_OnStartệ ở ạ ế ế ể ế ự ệ và Session_OnEnd được đ nh nghĩa trong file global.asaị
4.5.7.4 Đ i tố ượng Application
Application đ i di n cho toàn b ng d ng, bao g m t t c các trang web trongạ ệ ộ ứ ụ ồ ấ ả website. Đ l u tr nh ng thông tin có tác d ng trong toàn ng d ng, t c là có giá tr trong t tể ư ữ ữ ụ ứ ụ ứ ị ấ c các trang asp và t t c các phiên, ngả ấ ả ười ta dùng đ i tố ượng Application
Đi m khác c a bi n application so v i bi n session là session ch có tác d ng đ i v iể ủ ế ớ ế ỉ ụ ố ớ m i phiên, còn bi n application có tác d ng v i m i phiên.ỗ ế ụ ớ ọ
Ví d , đ đ m xem có bao nhiêu ngụ ể ế ười truy c p vào website, chúng ta có th dùng m tậ ể ộ bi n Application. M i khi m t ngế ỗ ộ ười dùng m i truy c p vào website ta tăng bi n này lên 1ớ ậ ế đ n v đ ch r ng đã có thêm 1 ngơ ị ể ỉ ằ ười truy c p vào Website. Mã ngu n có th vi t nh sau:ậ ồ ể ế ư
<% application(“num_visited”)=application(“num_visited”)+1 %>
Trang home.asp mu n hi n th s ngố ể ị ố ười truy c p ch c n in giá tr c a bi n này.ậ ỉ ầ ị ủ ế <% response.write “S ngố ười đã truy c p vào websiteậ
là:”&application(“num_visited”)%>
V i 2 phiên khác nhau thì giá tr application(“ớ ị num_visited”) là nh nhau.ư
Vi c kh i t o và k t thúc 1 bi n application có th vi t trong các hàm s ki nệ ở ạ ế ế ể ế ự ệ Application_onStart và Application_onEnd được đ nh nghĩa trong file global.asaị
Khóa Application
Do bi n application có th đế ể ược dùng chung b i nhi u phiên nên s có trở ề ẽ ường h pợ x y ra xung đ t khi có 2 phiên cùng thay đ i giá tr m t bi n application.ả ộ ổ ị ộ ế
Đ ngăn ch n đi u này chúng ta có th dùng phể ặ ề ể ương th c Application.lock đ khóaứ ể bi n application trế ước khi thay đ i nó. Sau khi s d ng xong bi n này có th gi i phóng khóaổ ử ụ ế ể ả b ng phằ ương th c Application.unlock.ứ
4.5.7.5 File Global.asa
File này là file tùy ch n ch a các khai báo đ i tọ ứ ố ượng, bi n có ph m vi toàn ngế ạ ứ d ngụ (Website). Mã l nh vi t dệ ế ướ ại d ng Script.
M i ng d ng ch đỗ ứ ụ ỉ ược phép có m t và ch m t file Global.asa, n m th m c g cộ ỉ ộ ằ ở ư ụ ố c a ng d ng. Ngủ ứ ụ ười ta thường dùng global.asa trong trường h p mu n có nh ng x lý khiợ ố ữ ử m t session b t đ u hay k t thúc, m t application b t đ u hay k t thúc, thông qua các hàm sộ ắ ầ ế ộ ắ ầ ế ự ki n:ệ
Application_Onstart : Hàm s ki n này x y ra khi ng d ng asp b t đ u ho t đ ng,ự ệ ả ứ ụ ắ ầ ạ ộ t c là khi ngứ ười dùng đ u tiên truy c p t i trang ch c a Website.ầ ậ ớ ủ ủ
Session_Onstart: Hàm s ki n này x y ra m i khi có m t ngự ệ ả ỗ ộ ười dùng m i truy c p vàoớ ậ Website (b t đ u 1 session m i).ắ ầ ớ
Session_OnEnd: Hàm s ki n này x y ra m i khi 1 ngự ệ ả ỗ ười dùng k t thúc session c aế ủ h .ọ
Application_OnEnd: Hàm s ki n này x y ra khi không còn Session nào ho t đ ng.ự ệ ả ạ ộ File Global.asa có c u trúc nh sau:ấ ư
<script language="vbscript" runat="server"> Sub Application_OnStart
‘... End sub
‘... End Sub Sub Session_OnStart ‘... Application("x")=Application("x")+1 End sub Sub Session_OnEnd ‘... End Sub </script> Ví d :ụ
Đ m s ngế ố ười dùng đã truy c p website. S ngậ ố ười dùng đượ ưc l u tr trong bi nữ ế Application(“songuoi”).
b t c đâu trong ng d ng n u mu n hi n th s ng i dùng chúng ta ch vi c chèn
Ở ấ ứ ứ ụ ế ố ể ị ố ườ ỉ ệ
l nh hi n th nó:ệ ể ị
<%=Application(“songuoi”)%>
Ngoài ra ng d ng cũng cho phép đ m s l n 1 ngứ ụ ế ố ầ ười đã truy c p website trong phiênậ làm vi c c a h . S l n đệ ủ ọ ố ầ ượ ưc l u tr trong bi n Session(“solan”)ữ ế
Mã ngu n file Global.asa đồ ược vi t nh sau:ế ư
<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>
Trang Home.asp được vi t nh sau:ế ư <html>
<body> <p>
Có <%response.write(Application("songuoi"))%> người đã truy c p website.ậ
</p>
<p>
B n đã truy c p trang này <ạ ậ
%response.write(session("solan"))%> l n!ầ </p>
</body> </html>
4.5.7.6 Đ i tố ượng Dictionary
Đ i tố ượng Dictionary l u tr thông tin theo t ng c p (khóa/ giá tr ). Nó khá gi ng v iư ữ ừ ặ ị ố ớ m ng nh ng có kh năng x lý linh ho t đ i v i nh ng c p d li u có quan h ki u t đi nả ư ả ử ạ ố ớ ữ ặ ữ ệ ệ ể ừ ể (c p khóa/ giá tr ) ví d nh : mã Sinh viên/ tên Sinh viên), trong đó khóa đặ ị ụ ư ược xem là t c nừ ầ tra và giá tr chính là n i dung c a t tra đị ộ ủ ừ ược trong t đi n.ừ ể
Mu n s d ng đ i tố ử ụ ố ượng Dictionary chúng ta ph i kh i t o nó:ả ở ạ <%
set d=server.createObject("Scripting.Dictionary") d.add "work","Làm vi c"ệ
d.add "learn","H c t p" ‘tọ ậ ương t nh m ng nh ng m i ph n tự ư ả ư ỗ ầ ử là m t c p khóa/giá trộ ặ ị
response.write "work nghĩa ti ng Vi t là: " & d.item("work")ế ệ response.write "learn nghĩa ti ng Vi t là: " & d.item("learn")ế ệ set d=nothing
%>
M t s ng d ng c a đ i tộ ố ứ ụ ủ ố ượng này nh dùng mô ph ng gi hàng ch a hàngư ỏ ỏ ứ hóa(shopping cart) v i c p khóa/giá tr là :ProductID/Quantity, hay s đ a ch v i c p khóa/giáớ ặ ị ổ ị ỉ ớ ặ tr là CustomerName/Address.ị
4.5.7.7 Đ i tố ượng Server
Đ i tố ượng này dùng đ truy xu t các phể ấ ương th c và thu c tính c a Server.ứ ộ ủ M t s phộ ố ương th c c b n nh sau:ứ ơ ả ư
a) Server.CreateObject
Phương th c này dùng đ kh i t o 1 đ i tứ ể ở ạ ố ượng.
Ví d :ụ T o m t đ i tạ ộ ố ượng Connection: <%Set conn=Server.CreateObject(“ADODB.Connection”)%> T o m t đ i tạ ộ ố ượng Dictionary: <%set d=server.createObject("Scripting.Dictionary")%> b) Server.Mappath
Phương th c này chuy n đứ ể ường d n tẫ ương đ i thành tuy t đ i.ố ệ ố
Ví d :ụ
<%
str= server.mappath("QLSV.mdb") Response.write str
%>
S cho k t qu : “C:\WEB\QLSV.mdb” trong trẽ ế ả ường h p:ợ File QLSV.mdb n m trong th m c C:\WEBằ ư ụ
Đường d n C:\WEB đẫ ượ ấc c u hình là theo m t bí danh (Virtual Directory) trong IIS.ộ Ta thường áp d ng server.mappath trong nh ng trụ ữ ường h p x lý đợ ử ường d n tẫ ương đ i, ố Ví d :ụ Đây là chu i k t n i vào database(Access)ỗ ế ố
Connstr="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("QLSV.mdb") & ";"
4.5.8.1 SQL-Ngôn ng truy v n có c u trúcữ ấ ấ
SQL là ngôn ng máy tính chu n đữ ẩ ược dùng đ giao ti p v i các h qu n tr c s dể ế ớ ệ ả ị ơ ở ữ li u quan h (Relational Database Management Systems – RDBMS).ệ ệ
Các câu l nh trong SQL đệ ược chia thành hai lo i chính: t p h p ngôn ng đ nh nghĩaạ ậ ợ ữ ị d li u (Data Defination Language-DLL) và t p ngôn ng v n d ng d li u (Dataữ ệ ậ ữ ậ ụ ữ ệ
Manipulation Language-DML).
DLL bao g m các l nh CREATE, ALTER, DROP cho phép đ nh nghĩa, thay đ i và h yồ ệ ị ổ ủ b các đ i tỏ ố ượng c s d li u nh b ng (table), ch m c (index)…ơ ở ữ ệ ư ả ỉ ụ
DML bao g m các l nh SELECT, INSERT, DELETE, UPDATE cho phép thao tác trênồ ệ đ i tố ượng c s d li u.ơ ở ữ ệ Các l nh SQL đ u k t thúc b ng d u ch m ph y (;)ệ ề ế ằ ấ ấ ẩ Cú pháp các l nh SQL:ệ • L nh SELECTệ SELECT c t 1, c t 2, c t 3, … ,c t nộ ộ ộ ộ FROM b ng 1, b ng 2, ... , b ng nả ả ả [WHERE <bi u th c đi u ki n>]ể ứ ề ệ
[ORDER BY c t 1 [ASC|DESC], c t 2 [ASC|DESC];ộ ộ
L nh SELECT có hai m nh đ b t bu c là SELECT và FROM, còn WHERE vàệ ệ ề ắ ộ ORDER BY là nh ng ch n l a thêm. ữ ọ ự
Sau đây là ch c năng c a t ng m nh đ trong câu l nh SELECT:ứ ủ ừ ệ ề ệ
o M nh đ SELECT li t kê tên các c t c n hi n th . Nh ng thu c tính đệ ề ệ ộ ầ ể ị ữ ộ ược li tệ kê trong m nh đ này chính là tên các c t trong quan h k t qu .ệ ề ộ ệ ế ả
o M nh đ FROM li t kê tên các b ng ngu n, n i d li u đệ ề ệ ả ồ ơ ữ ệ ược thu th p. Nhậ ư v y, các c t xu t hi n trong m nh đ SELECT ph i là các c t thu c b ngậ ộ ấ ệ ệ ề ả ộ ộ ả ngu n.ồ
o M nh đ WHERE xác đ nh đi u ki n mà các b n ghi d li u c a b ng ngu nệ ề ị ề ệ ả ữ ệ ủ ả ồ ph i th a mãn.ả ỏ
M t s toán t thộ ố ử ường dùng trong m nh đ WHEREệ ề Các toán t so sánhử Toán t so sánhử Di n gi iễ ả = B ngằ <> Khác < Nh h nỏ ơ <= Nh h n ho c b ngỏ ơ ặ ằ > L n h nớ ơ >= L n h n ho c b ngớ ơ ặ ằ Các toán t BOOLEAN (Logic): And, Or, Notử Các toán t đ i sánh m uử ố ẫ
o Toán t LIKEử o Toán t BETWEENử o Toán t INử
o M nh đ ORDER BY đ nh th t s p x p các b n ghi d li u đã th a đi uệ ề ị ứ ự ắ ế ả ữ ệ ỏ ề ki n m nh đ WHERE. M nh đ này ch có hi u l c khi hi n th d li u thuệ ở ệ ề ệ ề ỉ ệ ự ể ị ữ ệ th p đậ ược, nó không tác d ng lên các b n ghi đụ ả ượ ưc l u trong b ng d li u.ả ữ ệ
Ví d :ụ
SELECT hoten,ngaysinh FROM sinhvien WHERE gioitinh=1; SELECT hoten,ngaysinh FROM sinhvien WHERE gioitinh=1
SELECT hoten,ngaysinh FROM sinhvien WHERE hoten LIKE N‘%an%’;
SELECT hoten,ngaysinh FROM sinhvien WHERE dtb BETWEEN ‘8.0’ AND ‘9.0’;
SELECT hoten,ngaysinh FROM sinhvien WHERE masv IN (‘001’,‘003’,’005’);
• L nh INSERTệ
INSERT INTO tên-b ng (c t 1, c t 2, …, c t n)ả ộ ộ ộ VALUES (giá tr 1, giá tr 2, …, giá tr n);ị ị ị
M nh đ VALUES yêu c u ph i thi t l p đ y đ và thích h p giá tr cho các c tệ ề ầ ả ế ậ ầ ủ ợ ị ộ có trong danh sách c t.ộ
Ví d :ụ
INSERT INTO sinhvien(masv, hoten, ngaysinh, quequan, dtb) VALUES(‘006’,’Tr n A’, 09/07/1989, ‘Qu ng Bình’, 8.5);ầ ả
• L nh UPDATEệ UPDATE tên-b ngả
SET c t 1=giá tr 1, c t 2=giá tr 2, …, c t n=giá tr nộ ị ộ ị ộ ị [WHERE <bi u th c đi u ki n>];ể ứ ề ệ
Ví d :ụ
UPDATE sinhvien SET hoten=’Tr n Văn A’ WHERE masv=’001’;ầ • L nh DELETEệ
DELETE FROM tên-b ng WHERE <bi u th c đi u ki n>;ả ể ứ ề ệ
Ví d :ụ
DELETE FROM sinhvien WHERE masv=’001’;
4.5.8.2 Truy xu t d li u t m t trang ASPấ ữ ệ ừ ộ
Thông thường đ truy xu t d li u t m t trang ASP c n th c hi n tu n t các bể ấ ữ ệ ừ ộ ầ ự ệ ầ ự ước sau:
Bước 1: T o m t k t n i (ADO Connection) đ n c s d li u.ạ ộ ế ố ế ơ ở ữ ệ Bước 2: M k t n i c s d li u.ở ế ố ơ ở ữ ệ
Bước 3: T o m t t p h p các b n ghi d li u (ADO recordset).ạ ộ ậ ợ ả ữ ệ Bước 4: M đ i tở ố ượng ADO recordset.
Bước 5: Duy t qua t p h p ADO recordset đ l c nh ng b n ghi nào c n thi t.ệ ậ ợ ể ọ ữ ả ầ ế Bước 6: Đóng đ i tố ượng ADO recordset.
Bước 7: Đóng k t n i c s d li u.ế ố ơ ở ữ ệ
4.5.8.3 ADO là gì?
ADO là m t công ngh c a hãng Microsoft, vi t t t c a ActiveX Data Objects. Nóộ ệ ủ ế ắ ủ được tích h p s n trong IIS dùng làm m t giao di n đ truy xu t d li u trong c s d li u.ợ ẵ ộ ệ ể ấ ữ ệ ơ ở ữ ệ
4.5.8.4 Đ i tố ượng Connection
Đ i tố ượng Connection cho phép t o k t n i đ n m t Database.ạ ế ố ế ộ Các bướ ử ục s d ng Connection:
- Khai báo đ i tố ượng Connection - Kh i t oở ạ
- T o chu i k t n iạ ỗ ế ố
- M Connection v i chu i k t n i trênở ớ ỗ ế ố - S d ng Connectionử ụ
- Đóng và H y Connectionủ
Ví d :ụ
Đ k t n i đ n database Access QLSV.mdb (database này n m trong cùng th m c v i fileể ế ố ế ằ ư ụ ớ Asp), có th vi t mã ngu n nh sau:ể ế ồ ư
<%
dim conn ‘khai báo bi n k t n i đ n databaseế ế ố ế