Mã lệnh ASP có thể viết bằng VBScript hoặc JavaScript (đọc thêm tài liệu về ngôn ngữ này). 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.
Trong phần này, bạn sẽ nắm được những nội dung sau và có thể sử dụng như một tài liệu tham khảo khi cần thiết:
-
Cách nhập/ xuất dữ liệu khi cần thiết
-
Các kiểu dữ liệu của VBScript
-
Cách khai báo, sử dụng biến và hằng trong VBScript
-
Các cấu trúc điều khiển (rẽ nhánh, lặp,...) của VBScript
-
Tạo và sử dụng các chương trình con Thủ tục (Sub) và Hàm (Function)
-
Tham khảo các hàm hữu dụng, xử lý xâu kí tự, xử lý ngày tháng, toán học
-
Tham khảo các đối tượng có sẵn trong ASP như Request, Response, Server, Session, Application,...
1. Nhập xuất dữ liệu
Để xuất dữ liệu của đoạn chương trình trong ASP (được đặt trong cặp thẻ tag <% và %>) ta dùng phương thức Response.write
hoặc cũng có thể xuất dữ liệu bằng toán tử <%=giá trị%> (giá trị ở đây có thể là một hằng hoặc một biến)
Ví dụ
-
Xuất chuỗi: Response.write “Hoc ASP” cũng tương tự <%=”Hoc ASP”%>
-
Xuất hằng kiểu số: Response.write 2012 tương tự <%=2012%>
-
Xuất giá trị của biến x: Response.write x tương tự <%=x%>
Lệnh Response.write thường được dùng trong một khối lệnh của ASP mà ta chưa muốn kết thúc các script, sử dụng nó thì chương trình sẽ sáng sủa và dễ đọc hơn.
Lệnh <%=giá trị%> thường được dùng nhưng những script đơn lẻ mà có thể đóng ngay script, trong trường hợp ta muốn trộn các thẻ HTML với các giá trị ( của các biến/hằng) có trong ASP.
Để nhập dữ liệu ta dùng phương thức Request
Cụ thể hai phương thức yêu cầu (Request) và trả lời (Response) sẽ được đề cập cụ thể ở mục sau.
2. Các kiểu dữ liệu của VBScript
2.1 Khai báo biến
Tuy rằng ASP không bắt buộc phải khai báo các biến trước khi sử dụng nhưng nếu lập trình viên cứ tùy tiện sử dụng biến thì sẽ dẫn đến tình trạng không kiểm soát nổi và khó bắt lỗi khi xây dựng một ứng dụng lớn.
Vì vậy nên sử dụng <%Option Explicit%> ở ngay đầu mỗi tệp ASP, câu lệnh này có nghĩa là mọi biến phải được khai báo trước khi sử dụng, nếu không khi duyệt sẽ sinh ra lỗi.
Để khai báo biến ta dùng lệnh:
Việc khai báo biến chỉ đơn thuần như vậy, lưu ý không dùng cú pháp như trong Visual Basic là
Dim <tên biến> as <tên kiểu> ví dụ Dim Hoten as String sẽ gây lỗi.
Để khai báo biến kiểu mảng, khuyến cáo các Lập trình viên nên sử dụng các tiền tố (prefix) trước tên các biến ví dụ như biến chứa họ tên kiểu string thì nên đặt là strHoten (tiền tố viết chữ thường). Tham khảo cách viết chuẩn trong bảng sau:
Dạng Dữ liệu
|
Tiền tố
|
Boolean |
bln |
Byte |
byt |
Collection object |
col |
Currency |
cur |
Date-time |
dtm |
Double |
dbl |
Error |
err |
Integer |
int |
Long |
lng |
Object |
obj |
Single |
sng |
String |
str |
User-defined type |
udt |
Variant |
vnt |
ADO command |
cmd |
ADO connection |
cnn |
ADO field |
fld |
ADO parameter |
prm |
ADO recordset |
rst |
Ví dụ:
Biến kiểu số:
<%
Dim x
x=3
Response.write x
%>
|
Biến kiểu chuỗi:
<%
Dim a, b
a=”Hello” 'a là biến kiểu chuỗi
For b=1 to 10 ‘b là một biến kiểu số nguyên
Response.write b
Next
%>
|
2.2 Khai báo mảng
Mảng dùng để lưu trữ dữ liệu theo một dãy các phần tử.
Cú pháp:
Dim TênMảng1(Số phần tử ), TênMảng2(Số phần tử)...
|
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)
%>
|
2.3 Khai báo hằng số
Sử dụng lệnh
Ví dụ:
Const Max=100
3. Cấu trúc của chương trình ASP
Như đã đề cập ở phần trước, các đoạn mã Script được đặt trong cặp dấu “<%” và ”%>” và chúng được xử lý một cách tuần tự từ trên xuống, bắt đầu từ những dòng đầu tiên của tệp .asp. Để xử lý các thao tác phức tạp, ta phải dùng đến các cấu trúc rẽ nhánh, các vòng lặp cũng như là các chương trình con.
3.1 Các cấu trúc điều kiện
a. Cấu trúc điều kiện IF...THEN...ELSE...END IF
Cú pháp:
<%
IF <điều kiện> THEN
<Các câu lệnh 1>
ELSE
<Các câu lệnh 2>
END IF
%>
|
Nếu điều kiện thỏa mãn <các câu lệnh 1> sẽ được thực thi, nếu không <các câu lệnh 2> sẽ được thực thi.
Ta có thể dùng cấu trúc IF lồng nhau
<%
IF <điều kiện 1> THEN
<các câu lệnh 1>
ELSE
IF <điều kiện 2> THEN
<các câu lệnh 2>
ELSE
<các câu lệnh 3>
END IF
END IF
%>
|
Hoặc có thể 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
%>
|
Ví dụ:
<%
h=hour(now)
If h >12 then
Response.write “Afternoon”
else
Response.write “Morning”
End if
%>
|
b. Cấu trúc chọn SELECT CASE.. END SELECT
Trong trường hợp có nhiều điều kiện chọn, ta có thể dùng cú pháp này thay vì dùng nhiều lệnh IF
<%
SELECT CASE <tên biến>
CASE <giá trị 1>
<nhóm lệnh 1>
CASE <giá trị 2>
<nhóm lệnh 2>
CASE <giá trị 3>
<nhóm lệnh 3>
…....
CASE <giá trị n>
<nhóm lệnh n>
CASE ELSE
<nhóm lệnh n+1>
END SELECT
%>
|
Ví dụ
<%
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
%>
|
:
c. Điều kiện and, or, not
Dùng cho nhiều điều kiện hoặc điều kiện chọn lọc.
Ví dụ:
<%
h=hour(now)
If (h >12) and (h<18) then
Response.write “Afternoon”
End if
%>
|
3.2 Các cấu trúc lặp
a. Cấu trúc tuần tự FOR...NEXT
Dùng để lặp với số lần đã biết, tuy nhiên có thể ngắt lệnh bằng EXIT FOR
Cú pháp:
<%
FOR <tên biến> = <giá trị đầu> TO <giá trị biến> STEP <bước nhảy>
Các lệnh chương trình
' Nếu muốn ngắt dùng lệnh EXIT FOR
%>
|
<bước nhảy> là tùy chọn, ngầm định là 1
Ví dụ:
<%
Dim i
For i=1 to 10
Response.write i
Next
%>
|
b. DO WHILE...LOOP
Dùng cho lặp với số lần chưa biết cụ thể.
Chừng nào điều kiện còn đúng thì vòng lặp sẽ được thực hiện. Muốn ngắt tại thời điển bất kì dùng lệnh EXIT DO
Cú pháp:
<%
DO WHILE <điều kiện>
Các câu lệnh
' Nếu muốn ngắt dùng lệnh EXIT DO
LOOP
%>
|
Ví dụ
<%
Dim i
i=1
Do while i<=10
Response.write i
i=i+1
Loop
%>
|
c. WHILE...WEND
Chừng nào điều kiện còn đúng thì vòng lặp sẽ được thực hiện.
Cú pháp:
<%
WHILE <điều kiện>
Các câu lệnh
WEND
%>
|
Ví dụ:
<%
Dim i
i=1
While i<=10
Response.write i
i=i+1
Wend
%>
|
d. DO...LOOP UNTIL
Chừng nào điều kiện còn sai thì vòng lặp sẽ được thực hiện. Sử dụng khi cần chương trình thực hiện ít nhất là 1 vòng lặp dù điều kiện đúng hay sai.
Cú pháp:
<%
DO
Các câu lệnh
LOOP UNTIL <điều kiện>
%>
|
Ví dụ:
<%
i=1
do
response.write i
i=i+1
loop Until i>10
%>
|
3.3 Khai báo thủ tục (Sub) và hàm (Function)
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
%>
a. Khai báo thủ tục (Sub)
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 làm theo cấu trúc sau:
<%
Sub TenThuTuc(Tham so)
‘ Phần thân của thủ tục
End Sub
%>
|
Vi dụ:
<%
Sub example
Response.write "Hello ASP"
End Sub
Call example ' Gọi Sub bằng lệnh call
' hoặc có thể ko cần lệnh mà chỉ cần tên sub: example
%>
|
b. Khai báo hàm (Function)
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í dụ:
<%
Function Tinh
a=100
b=100
Tinh=a+b
End Function
Response.write "Ket qua = &Tinh" ' Gọi Function: TênFunction
' dấu & để nối giữa xâu và biến trong Response.write
%>
|
________________________________-!- -!- -!-_____________________________