Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 25
  1. #1
    Tham gia
    01-10-2002
    Bài viết
    117
    Like
    0
    Thanked 0 Times in 0 Posts

    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:
    Code:
     
    &lt;% 
    '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=" &amp; 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 = (" &amp; Count &amp; ") " 
    '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 (" &amp; Count &amp; ") " 
    
    '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 = "" 
    %&gt;
    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 &lt;% =Count%&gt; 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>
    Được sửa bởi aspnet lúc 19:58 ngày 23-10-2002
    Quote Quote

  2. #2
    Tham gia
    16-07-2002
    Location
    HCM-Vietnam
    Bài viết
    110
    Like
    0
    Thanked 0 Times in 0 Posts
    Hình như bạn viết hơi bị dài:
    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

  3. #3
    Tham gia
    16-07-2002
    Location
    Ha Noi
    Bài viết
    1,218
    Like
    0
    Thanked 0 Times in 0 Posts
    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

  4. #4
    Tham gia
    01-10-2002
    Bài viết
    117
    Like
    0
    Thanked 0 Times in 0 Posts
    Sorry, có lẽ mình hơi nhầm một chút ... Cái này lần trước mình viết lấy cả IP để đếm mỗi lần khách ghé từng site
    Được sửa bởi aspnet lúc 13:35 ngày 23-10-2002

  5. #5
    Tham gia
    01-10-2002
    Bài viết
    117
    Like
    0
    Thanked 0 Times in 0 Posts
    HIc, sao diễn đàn này cái phần post bài sao chuối quá, hic, khó chịu thật, tự dưng nó cứ thêm mấy cái tag html vào là sao nhỉ?

  6. #6
    Tham gia
    16-07-2002
    Location
    HCM-Vietnam
    Bài viết
    110
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài viết được gửi bởi White_Rose
    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
    Bạn hiểu lầm rồi...
    Đ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à...

  7. #7
    Tham gia
    16-07-2002
    Location
    Ha Noi
    Bài viết
    1,218
    Like
    0
    Thanked 0 Times in 0 Posts
    Nếu đếm số người theo mình nên sử dụng thêm một trường lưu IP thì hơn vì nhiều host không hỗ trợ global.asa.

  8. #8
    Tham gia
    06-08-2002
    Location
    Saigon
    Bài viết
    33
    Like
    0
    Thanked 0 Times in 0 Posts
    đúng thế.
    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.

  9. #9
    Tham gia
    16-07-2002
    Location
    HCM-Vietnam
    Bài viết
    110
    Like
    0
    Thanked 0 Times in 0 Posts
    Trời....
    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ỉ????????

  10. #10
    Tham gia
    01-10-2002
    Bài viết
    117
    Like
    0
    Thanked 0 Times in 0 Posts
    Chắc chắn nhất thì phải có INSERT nữa, phải có trường hợp khi CSDL mới bắt đầu. chưa có dứ liệu chứ.

Trang 1 / 3 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •