09/10/2018, 17:39
Viết Counter bằng ASP
<SPAN class=spnMessageText id=msg>Đầu tiên ta có một file cơ sở dữ liệu bằng Access tên là Counter.mdb với bảng (Table) là Counter và trường (Fields) tên là Count - với kiểu dữ liệu là Long Integer
Và file counter của chúng ta sẽ được trình bày như sau:
Giờ các bạn có thể Include file Counter.asp này vào trang nào mà bạn muốn hiển thị bộ đếm và bạn chỉ việc hiển thị giá trị của nó bằng cách
thêm <% =Count%> vào chỗ nào bạn muổn hiển thị. Hoặc có thể bạn cho hiển thị ngay trong file Counter.asp rồi Include cả file Counter.asp này vào nơi cần hiển thị bộ đếm.</SPAN>
Và file counter của chúng ta sẽ được trình bày như sau:
Code:
<% 'Khai báo biến sẽ sử dụng Dim Count 'Nhận giá trị của số Counter Dim strSQL 'Nhận giá trị của câu truy vấn SQL Dim Conn 'Kết nối đến cơ sở dữ liệu Dim objRS 'Kết nối Recordset 'Tạo và mở kết nối tới file cơ sở dữ liệu Counter.mdb Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("Counter.mdb") </SPAN> <SPAN class=spnMessageText>strSQL = "SELECT * FROM Counter " Set objRS = Conn.Execute(strSQL) 'Kiểm tra xem trong trường Count có giá trị hay không? If NOT objRS.EOF Then 'Tương đương - Nếu chưa đến cuối mẩu tin (mẩu tin không rỗng) thì 'Gán biến Count bằng với giá trị của mẩu tin trong cơ sở dữ liệu Count = objRS("Count") 'Và sau đó tăng giá trị của biến Count lên thêm 1 đơn vị Count = (Count + 1) 'Rồi cập nhật giá trị mới này vào cơ sở dữ liệu 'Câu truy vấn SQL để cập nhật giá trị vào CSDL strSQL = "UPDATE Counter SET Count = (" & Count & ") " 'Thực thi câu truy vấn này Set objRS = Conn.Execute(strSQL) 'Ngược lại nếu đã đến cuối mẩu tin trong CSDL, tức là trong CSDL trường Count chưa có giá trị ELSE 'Gán cho biến Count giá trị bắt đầu từ 1 Count = 1 'Và cập nhật vào CSDL 'Câu truy vấn SQL thêm mới dữ liệu vào CSDL strSQL = "INSERT INTO Counter (Count) VALUES (" & Count & ") " 'Thực thi câu truy vấn Set objRS = Conn.Execute(strSQL) End If 'Đóng và huỷ kết nối objRS.Close Set objRS = Nothing strSQL = "" %>
thêm <% =Count%> vào chỗ nào bạn muổn hiển thị. Hoặc có thể bạn cho hiển thị ngay trong file Counter.asp rồi Include cả file Counter.asp này vào nơi cần hiển thị bộ đếm.</SPAN>
Bài liên quan
Chỉ cần thế này là đủ:
DBase: File: counters.mdb
Table: Counters(cval)
----------------------------
'KHai báo connection String đến database
cnDrv="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &server.MapPath("d16092002/Counters.mdb") &";"
'Tao biến Recordset
set rs=Server.CreateObject("ADODB.Recordset")
'Query tăng Counter
StrSQL="UPDATE Counters SET cval=cval+1"
'Thực thi query
rs.Open StrSQL, cnDrv
Sau khi tăng Counter, chúng ta sẽ hiện nó ra:
StrSQL="SELECT cval FROM Counters;"
rs.Open StrSQL, cnDrv
If not rs.EOF and not rs.BOF Then Response.Write(rs("cval")) End If
rs.Close
set rs=nothing
------------------>
Vấn đề không phải là ở chỗ tăng counter, mà ở chỗ counter đặt ở đâu,...
Nếu là counter số người truy cập, đặt trong hàm Application_OnStart() của file global.asa
Nếu là các counter khác, đặt chỗ cần đặt.
Cái mình muốn đề cập là các bạn thường không để ý câu Query: ....set cval=cval+1 vì nghĩ nó không chạy.........
Một vài gòp ý, mong được trao đổi thêm với các bạn vể ASP
Cái này là Hit Point (đếm số lần click) chứ có phải là Counter (đếm số lượt truy cập) đâu
Đoạn code đó chỉ là cập nhật và hiển thị một counter nào đó....
Còn chuyện Hit Couter hay Đếm số người truy cập thì đều sử dụng cùng đoạn code đó được, vấn đề là đặt nó ở đâu thôi.
Hit counter thì đặt trong trang muốn đếm
Đếm người truy cập thì đặt trong global.asa
Mình đã nói rồi mà...
Và trong trường hợp đó đoạn code của NewCinC tuy ngắn nhưng không xài được.
Xài đoạn code của Aspnet thì có đủ cả Update lẫn Insert. Nhưng chắc phải chỉnh lại chút đỉnh để xài lâu dài, cho nhiều tình huống khác nhau.
DTB là ai mà kết luận hàm hồ dzậy ta?
Tớ chỉ cho bạn một cách: copy đoạn code của tớ về rồi thử chạy xem nó có chạy không?
Còn counter thì chỉ cần Select ra và Update thôi. Counter mà cho Insert thì ........ để làm số liệu giả à.......
Tớ đã làm đoạn code đó cho các site sau:
www.webvieclam.com
www.matbao.com
www.daigiatrade.com
www.tandonghiepiz.com
www.kinhdofood.com
....
sao không có trang nào không chạy ngoại trừ DTB vậy nhỉ????????