Giáo trình Lập trình ngôn ngữ ASP - Chương 2: Một số tiện ích trong ASP

Mục tiêu

Tìm hiểu một sốtiện ích:

¾ Registration

¾ Login và Logout

¾ Quản lý User

¾ Quản lý Product

¾ Shopping cart

¾ Sửdụng tiếng Việt trong ASP

pdf16 trang | Chuyên mục: ASP | Chia sẻ: dkS00TYs | Lượt xem: 1727 | Lượt tải: 3download
Tóm tắt nội dung Giáo trình Lập trình ngôn ngữ ASP - Chương 2: Một số tiện ích trong ASP, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
word <input type="password" 
name="confirmPassword"> 
 Address <input type="text" name="address" 
value=""> 
34 ASP 
 "> 
<% rs.close 
destroyConn%> 
Trang EditMemberProcess.asp 
<%id=request.form("id") 
username=request.form("username") 
password=request.form("password") 
confirmPassword=request.form("confirmPassword") 
address=request.form("address") 
'validate if username is exist in the tblUsers?,password and confirmPassword 
are ‘matched?, address 
openConn 
sql="UPDATE tblUser SET [username]='" &username& 
"',[password]='"&password&"',[address]='"&address& "' WHERE id ="&id 
conn.execute sql 
destroyConn%> 
User has been Edited! 
Trang DeleteMember.asp 
<% 
openConn 
id=request.queryString("id") 
'validate id 
conn.execute "Delete from tblUser where id="&id 
destroyConn 
%> 
User has been Deleted! 
Chương 2: Một số tiện ích trong ASP 35 
Hình 2.5 
2.4 Quản lý Product 
 Quản lý Product bao gồm: 
- Liệt kê, thêm sửa xóa loại sản phẩm (Category) 
- Liệt kê, thêm, sửa xóa sản phẩm (Product) 
Phần quản lý Category cũng tương tự như quản lý User 
Riêng phần quản lý Product cần lưu ý mỗi product thuộc 1 category nào đó. 
Hình 2.6 
36 ASP 
Hình 2.7 
Sau đây chúng ta xem qua cách làm phần thêm sản phẩm. Các phần khác 
làm tương tự. 
Trang AddProductForm.asp 
<% 
openConn 
set rs = server.createobject("ADODB.Recordset") 
rs.open "select * from Category" ,conn 
%> 
 ProductName 
 Product Category 
"> 
 <%rs.movenext 
 loop%> 
 Price 
 Description 
 <input 
type="reset" value="Reset" name="B2"> 
<% rs.close 
destroyConn%> 
Chương 2: Một số tiện ích trong ASP 37 
Trang AddProductProcess.asp 
<% 
CategoryID=request.form("CategoryID") 
ProductName=request.form("ProductName") 
Price=request.form("Price") 
Description=request.form("Description") 
'validate 
openConn 
sql="insert into Product([ProductName],[CategoryID],[Price],[Description]) 
values('"&ProductName&"',"&CategoryID&","&Price&",'"&Description&"')" 
conn.execute sql 
destroyConn 
response.write "Successfull Add Product!" 
%> 
Hình 2.8 
2.5 Shopping cart 
Trong các website shopping online, ta thường dùng một cấu trúc dữ liệu để 
lưu trữ những hàng hóa mà người dùng chọn mua trong phiên của họ, gọi là 
giỏ hàng (tương tự như giỏ hàng khi chúng ta đi mua hàng trong siêu thị). Về 
dữ liệu, giỏ hàng lưu trữ danh sách những hàng hóa người dùng chọn mua 
bao gồm những thông tin như ProductID, ProductName, ProductCategory, 
Quantity, Price, …(những thông tin này có trong bảng Product và Category 
trong DB) 
Để mô phỏng giỏ hàng, ta có thể dùng 1 số cấu trúc như Dictionary hoặc 
mảng 2 chiều. 
38 ASP 
Giỏ hàng được lưu trong 1 biến kiểu session để theo dõi quá trình khách hàng 
mua hàng trong phiên 
 Hình 2.9 
Sau đây chúng ta xem qua cách xây dựng một giỏ hàng bằng mảng 2 chiều. 
Giả thiết thông tin về Product bao gồm (ProductID, ProductName, 
ProductCategory, Quantity, Price, TotalPrice), và giỏ hàng chứa được tối đa 
15 sản phẩm. Vậy ta có thể dùng mảng 2 chiều kích thước (6,15) để mô 
phỏng giỏ hàng. Mảng này được lưu theo kiểu biến session để có tác dụng 
trong toàn phiên của người dùng. Ta cần thêm 1 biến Count để đếm số sản 
phẩm hiện có trong giỏ hàng. Biến này cũng có kiểu session. 
Các hàm thao tác: 
AddProductToCart(ProductID): Thêm 1 sản phẩm vào giỏ hàng, nếu sản 
phẩm đã có thì tăng số lượng thêm 1 
UpdateQuantity(ProductID,Quantity): Cập nhật số lượng của 1 sản phẩm 
trong giỏ hàng 
RemoveProductFromCart(ProductID): Xóa 1 sản phẩm khỏi giỏ hàng 
RemoveAll: Xóa rỗng giỏ hàng 
ListProduct: Liệt kê các mặt hàng trong giỏ hàng 
File Global.asa 
 SUB Session_OnStart 
 ReDim arrProduct(6,15) ‘mảng 2 chiều mô phỏng giỏ hàng 
 Session("arrProduct")=arrProduct ‘giỏ hàng chứa trong session 
 Session("Count")=0 ‘số sản phẩm hiện có trong giỏ 
 END SUB 
ShoppingCart.asp 
<% 
'thêm sản phẩm vào giỏ hàng, nếu đã có thì tăng số lượng lên 1 
Chương 2: Một số tiện ích trong ASP 39 
Sub AddProductToCart(ProductID) 
 arrProduct=Session("ArrProduct") 
 Count=Session("Count") 
 ProductExist=false ‘biến này dùng đánh dấu xem hàng đã có 
trong giỏ chưa 
 For i=1 to Count 
 if arrProduct(1,i)=ProductID then 
 ProductExist=true ‘hàng đã có trong giỏ 
 arrProduct(4,i)=arrProduct(4,i)+1 ‘tăng số lượng lên 1 
 exit For 
 End if 
 Next 
 If not ProductExist then 
 If Count<15 then 
 Count=Count+1 
‘dùng Recordset lấy các thông tin ProductName, CategoryName, 
‘ Price từ DB 
‘… 
 arrProduct(1,Count)=ProductID 
 arrProduct(2,Count)=ProductName 
 arrProduct(3,Count)=CategoryName 
 arrProduct(4,Count)=1 
 arrProduct(5,Count)=CLng(Price) 
 arrProduct(6,Count)=0 
 End if 
 session("ArrProduct")=arrProduct 
 session("Count")=Count 
 end sub 
Sub RemoveProductFromCart(ProductID) 'xoa san pham trong gio hang 
 ArrProduct=Session("ArrProduct") 
 Count=Session("Count") 
 ProductExist=false 
 For i=1 to Count 
 if arrProduct(1,i)=ProductID then ‘tìm thấy hàng cần 
xóa ở vị trí i 
 ProductExist=true 
 exit For 
 End if 
 Next 
If ProductExist then 
Count=Count-1 
For x=1 to 6 ‘xóa rỗng mặt hàng i 
arrProduct(x,i)="" 
Next 
n=i 
40 ASP 
while n<15 ‘dồn mặt hàng i+1 về i bắt đầu từ mặt hàng i đến cuối 
giỏ 
For x=1 to 6 
arrProduct(x,n)=ArrProduct(x,n+1) 
arrProduct(x,n+1)="" 
Next 
n=n+1 
Wend 
End if 
 Session("ArrProduct")=ArrProduct 
 Session("Count")=Count 
end Sub 
Sub RemoveAll 'xoa tat ca cac mat hang trong gio hang 
 session("ArrProduct")="" 
 session("ArrCount")="" 
end Sub 
Sub UpdateQuantity(ProductID,Quantity) ‘cap nhat lai so luong 1 san pham 
da co trong gio hang 
ArrProduct=Session("ArrProduct") 
Count=Session("Count") 
 For i=1 to Count 
 if arrProduct(1,i)=ProductID then 
 arrProduct(4,i)=Quantity 
 exit For 
 End if 
 Next 
 Session("ArrProduct")=ArrProduct 
 Session("Count")=Count 
end Sub 
%> 
2.6 Sử dụng tiếng Việt trong ASP 
2.6.1 Bảng mã Unicode 
Về cơ bản máy tính chỉ xử lý được dữ liệu dạng số. Mỗi ký tự (character) 
được máy tính lưu trữ và xử lý bằng cách ánh xạ chúng thành một chữ số 
(còn gọi là mã - code). Ví dụ thông thường chữ ‘A’ có mã 65, ‘a’ mã 97…Bảng 
ánh xạ các ký tự thành các mã dưới dạng số được gọi là bảng mã (character 
code). 
Bảng mã 1 byte: Trong các bảng mã 1 byte như ASCII, mỗi ký tự được biểu 
diễn bằng 1 byte. Chúng có thể biểu diến tối đa 256 ký tự (kể cả các ký tự 
hiển thị được và ký tự điều khiển). Bảng mã 1 byte chỉ thích hợp với những 
ngôn ngữ như tiếng Anh. Đối với các ngôn ngữ phức tạp như tiếng Hoa, tiếng 
Chương 2: Một số tiện ích trong ASP 41 
Nhật, tiếng Việt thì bảng mã này không đủ lớn để có thể biểu diễn hết số ký 
tự cần thiết. Vì vậy, người ta phải thực hiện nhiều giải pháp để khắc phục 
thiếu sót này, dẫn đến tình trạng có nhiều bảng mã khác nhau cùng tồn tại, 
thậm chí 1 ngôn ngữ cũng có nhiều bảng mã, gây nên sự thiếu thống nhất. 
Unicode là bảng mã 2 byte, ra đời nhằm mục đích xây dựng một bộ mã 
chuẩn vạn năng, thống nhất, dùng chung cho tất cả các ngôn ngữ trên thế 
giới. Bộ mã Unicode gồm 16 bit cho mỗi ký tự, biểu diễn được 65536 ký tự. 
Unicode có thể biểu diễn được đầy đủ các ký tự Tiếng Việt. 
2.6.2 Mã hóa UTF-8 
Mỗi ký tự trong bộ mã Unicode được mã hóa (encoding) dưới 1 trong 3 dạng: 
UTF-8 (8 bit), UTF-16 (16 bit) và UTF-32 (32 bit). Trong đó UTF-8 (Unicode 
Transfomation Format -8) được sử dụng phổ biến. Mỗi ký tự Unicode được 
mã hóa UTF-8 sẽ được biểu diễn bằng 1 đến 4 byte tùy thuộc vào giá trị mã 
của ký tự đó. 
Ví dụ: trong bảng mã Unicode chữ a có mã là 97 (hexa là U+0061) => UTF 
32: 0x00000061, UTF-16: 0x0061, UTF-8: 0x61. 
UTF-8 được sử dụng phổ biến để biểu diễn tiếng Việt theo mã Unicode 
2.6.3 CodePage và Charset 
Trong lập trình ASP, để biểu diễn tiếng Việt đúng theo encoding UTF-8, 
chúng ta cần lưu ý 2 điểm: 
- Hiển thị đúng font UTF-8 trên client (browser) bằng cách sử dụng 
thẻ <meta http-equiv="Content-Type" content="text/html; 
charset=utf-8"> ( charset giúp browser hiển thị (decode) đúng 
dạng dữ liệu được encode) 
- Xử lý đúng UTF-8 trên server bằng cách đặt thuộc tính Codepage 
= 65001. (code page giúp server xử lý dữ liệu đúng encoding) 
 hoặc 
Session.codepage có thiết lập codepage cho toàn phiên. Còn 
Response.codepage thiết lập codepage cho 1 lần response thôi. 
Thông thường chúng ta sử dụng Session.codepage vì như vậy toàn bộ 
session sẽ có chung 1 codepage thống nhất. 
2.6.4 Lập trình tiếng Việt với ASP: 
Chúng ta tuân theo nguyên tắc sau: 
Sử dụng UTF-8 charset cho các trang web 
Sử dụng thẻ 
Sử dụng kiểu gõ Unicode trong các bộ gõ (VietKey, Unikey) 
42 ASP 
Hình 2.10 
Ví dụ sau minh họa việc thêm vào và hiển thị dữ liệu từ database ra màn 
hình với Tiếng Việt: 
Trang RegistrationVNmeseForm.html 
 Username: 
 Password: 
 Confirm Password: 
 Address: 
Trang RegistrationVNmeseProcess.asp 
<%username=request.form("username") 
password=request.form("password") 
confirmPassword=request.form("confirmPassword") 
address=request.form("address") 
‘ validate some information retrieved from submitted form 
openConn 
sql="insert into tblUser([username],[password],[address]) 
Chương 2: Một số tiện ích trong ASP 43 
values('"&username&"','"&password&"','"&address&"')" 
conn.execute sql 
destroyConn 
response.write "Successfull Registration!"%> 
Trang ListMemberVNmese.asp 
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8"> 
<%openConn 
set rs = server.createobject("ADODB.Recordset") 
rs.open "select * from tblUser", conn%> 
IDUsernameAddressEdit<t
d>Delete 
<% do while not rs.EOF 
link1 = "EditMemberForm.asp?id=" & rs("id") 
link2 = "DeleteMember.asp?id=" & rs("id")%> 
<%
=rs("address")%><a 
href="">Edit<a 
href="">Delete 
<% rs.movenext 
loop 
rs.close 
destroyConn%> 

File đính kèm:

  • pdfChương 2 - Một số tiện ích trong ASP.pdf
Tài liệu liên quan