Để xây dựng trang ASP hiển thị dòng chữ miêu tả số người đã truy xuất website (hay trang web) của mình, bạn cần giải quyết 2 vấn đề cơ bản:
– Viết hàm chuyển đổi từ số nguyên sang dòng chữ phát âm số nguyên đó.
– Tăng counter đếm (thường phải được để trên file hay database để lưu giữ lâu dài ngay cả khi trang web không được truy xuất hay máy server bị shutdown), rồi dùng hàm chuyển đổi counter hiện hành sang chuỗi phát âm tương ứng và hiển thị ở vị trí thích hợp trên trang web.
Đoạn lệnh sau đây là của trang ASP demo do chúng tôi viết, mỗi khi có người dùng nào đó truy xuất sẽ lưu thông tin về người dùng đó lên table tên là ClientsTab, rồi đếm tổng số người dùng đã truy xuất từ trước đến nay và hiển thị chuỗi phát âm lên trang web kết quả:
<html>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<head>
<%
‘————————————
‘ Hàm đổi 1 số có tối đa 3 ký số thành chuỗi tương ứng.
‘————————————-
Private Function sotram2chu(socandoi) ‘As String
‘ Khai báo dữ liệu
Dim chuso(11) ‘As String
Dim shangchuc, shangtram, shangdonvi
Dim str ‘As String
chuso(1) = “một”
chuso(2) = “hai”
chuso(3) = “ba”
chuso(4) = “bốn”
chuso(5) = “năm”
chuso(6) = “sáu”
chuso(7) = “bảy”
chuso(8) = “tám”
chuso(9) = “chín”
str = “”
‘ Kiểm tra số cần đổi có hợp lệ không
If socandoi >= 1000 Then
sotram2chu = “???”
Exit Function
End If
‘Xác định 3 ký số miêu tả hàng trăm, hàng chục & đơn vị
shangtram = socandoi 100
socandoi = socandoi Mod 100
shangchuc = socandoi 10
shangdonvi = socandoi Mod 10
If shangtram >= 1 Then
str = chuso(shangtram) & ” trăm”
End If
If shangchuc >= 2 Then
str = str & ” ” & chuso(shangchuc) & ” mươi”
ElseIf shangchuc = 1 Then
str = str & ” mười”
End If
If shangdonvi = 0 Then
sotram2chu = str
Exit Function
End If
If shangchuc = 0 Then
If shangtram <> 0 Then
str = str & ” lẻ ” & chuso(shangdonvi)
Else
str = str & ” ” & chuso(shangdonvi)
End If
sotram2chu = str
Exit Function
End If
If shangchuc = 1 Then
If shangdonvi <> 5 Then
str = str & ” ” & chuso(shangdonvi)
Else
str = str & ” lăm”
End If
sotram2chu = str
Exit Function
End If
If shangdonvi = 1 Then
str = str + ” mốt”
ElseIf shangdonvi = 5 Then
str = str + ” lăm”
Else
str = str + ” ” + chuso(shangdonvi)
End If
sotram2chu = str
End Function
‘————————————
‘ Hàm đổi 1 số nguyên bất kỳ thành chuỗi phát âm tương ứng
‘————————————
Private Function so2chu(socandoi)
Dim idx ‘As Integer
Dim ba_kyso ‘As Integer
Dim str, str_tram ‘As String
Dim tu_ngan_cach ‘As String
Dim chu_cach(5) ‘As String
chu_cach(1) = “tỷ”
chu_cach(2) = “ngàn”
chu_cach(3) = “triệu”
idx = 0 ‘ vi tri dau cham phan cach tung 3 ky so
str = “”
str_tram = “”
While socandoi <> 0
ba_kyso = socandoi Mod 1000
socandoi = socandoi 1000
str_tram = sotram2chu(ba_kyso) ‘nen bo cac khoang trong dan dau
If idx = 0 Then ‘ vi tri don vi
str = str_tram
ElseIf Len(str_tram) <> 0 Then ‘vi tri ngan, trieu, ty
tu_ngan_cach = chu_cach((idx Mod 3) + 1)
str = str_tram + ” ” + tu_ngan_cach + ” ” + str
ElseIf (idx Mod 3) = 0 Then
str = “tỷ ” + str
End If
idx = idx + 1
Wend
so2chu = str
End Function
//hàm lưu thông tin về người dùng truy xuất và đếm số lượt người
Function UserCount()
‘khai báo các biến cần dùng
dim MyConnection
dim MyCommand
dim MyRecordset
‘tạo 1 connection đến database dung DSN
set MyConnection = Server.CreateObject(“ADODB.Connection”)
MyConnection.Open “DSN=MyDatabase”
‘tạo đối tượng Command
set MyCommand = Server.CreateObject(“ADODB.Command”)
MyCommand.ActiveConnection = MyConnection
‘lưu thông tin người dùng đang truy xuất vào database
MyCommand.CommandText = “INSERT INTO ClientsTab VALUES (‘” & Request.ServerVariables(“Remote_Addr”) & “‘,'” & Request.ServerVariables(“Path_Info”) & “‘,'” & Request.ServerVariables(“HTTP_User_Agent”) & “‘)”
MyCommand.Execute()
‘đọc tất cả record trong table ClientsTab
MyCommand.CommandText = “SELECT * FROM ClientsTab”
set MyRecordset = MyCommand.Execute()
clientnum = 0
‘đếm số record trong table ClientsTab
Do While Not MyRecordset.EOF
clientnum = clientnum + 1
MyRecordset.MoveNext
Loop
‘đổi số lượt người ra chuỗi phát âm
usercount=so2chu(clientnum)
‘đóng các đối tượng đã dùng lại
MyRecordset.Close
MyConnection.Close
End Function
%>
</head>
<body>
Bạn là người truy cập thứ <b><%=UserCount()%></b> tới trang web này.
…
</body>
</html>