09/10/2018, 22:46
ai co''1 code de^~ phân trang cho asp va` database ..
cho minh` vói dang ca^n` lam` mot cai' de^~ lam` đề tài tốt nghiệp
giúp với các bạn ơi
giúp với các bạn ơi
Bài liên quan
Phân trang dữ liệu là một câu hỏi rất hay thường gặp của các bạn mới làm quen với ASP, tuy rằng không khó nhưng do không có tài liệu hoặc hướng dẫn nên một số bạn không biết làm thế nào. Việc phân trang dữ liệu có nhiều cách làm, có thể dùng câu lệnh SQL, hoặc dùng chức năng phân trang có sẵn của đối tượng RecordSet mà các bạn rất hay dùng để truy xuất dữ liệu. Trong bài viết này, chúng ta tiếp cận vấn đề bằng cách sử dụng chức năng phân trang dữ liệu có sẵn của đối tượng RecordSet.
Trước khi bắt tay vào viết code phân trang, chúng ta hãy xem sơ qua các chức năng có sẵn của RecordSet. Rất đơn giản, RecordSet có hai thuộc tính (attributes) là AbsolutePage và PageSize, PageCount
PageSize: xác định kích thước của một trang dữ liệu, VD nếu bạn muốn một trang dữ liêu của mình có 10 dòng thì đặt thuộc tính này bằng 10, ví dụ objRs.PageSize = 10
AbsolutePage: xác định trang hiện tại mà bạn muốn lấy dữ liệu ra, chỉ số này được đánh từ 0, nghĩa là nếu bạn muốn lấy trang thứ nhất ra thì đặt thuộc tính này bằng 0, trang thứ 2 thì đặt thuộc tính này bằng 1.
PageCount: thuộc tính này cho ta biêt tổng số trang dữ liệu dựa trên số record và kích thước tang.
RecordCount: Tổng số record thật sự lấy ra.
Sau khi tìm hiểu qua các thuộc tính cần thiết để lập trình phân trang, bây giờ chúng ta tiến hành bắt tay vào code.
CODE
1: <%
2:
3: Const PAGE_SIZE = 10
4:
5: Dim objRs, strQuery
6: Dim i, iCurrentPage, iStart, iEnd, iPageCount, iRecordCount
7:
8: iCurrentPage = CInt(Request("page"))
9: if iCurrentPage = 0 then
10: iCurrentPage = 1
11: end if
12:
13: Set objRs = Server.CreateObject("ADODB.Recordset")
14: objRs.CursorLocation = 3
15: objRs.PageSize = PAGE_SIZE
16: strQuery = "SELECT * FROM tblProducts"
17: objRs.Open strQuery, strConnectionClient, 3
18:
19: ' lấy ra tổng số record thật sự và tổng số trang
20: iPageCount = objRs.PageCount
21: iRecordCount = objRs.RecordCount
22:
23: 'kiểm tra xem trang hiện tại có nằm ngoài khoảng hợp lệ hay không?
24: if (iPageCount < iCurrentPage) then iCurrentPage = iPageCount
25: if (iCurrentPage <= 0) then iCurrentPage = 1
26:
27: ' đoạn code bên dưới làm nhiệm vụ xác định số thứ tự của record đầu tiên và
28: ' record cuối cùng cần lấy ra, đặt con trỏ vào vị trí record đầu tiên cần lấy ra
29: if (iRecordCount > 0) then
30: objRs.AbsolutePage = iCurrentPage
31: iStart = objRs.AbsolutePosition
32: if CInt(iCurrentPage) = iPageCount then
33: iEnd = iRecordCount
34: else
35: iEnd = iStart + (objRs.PageSize - 1)
36: end if
37: end If
38:
39: ' sau khi xác định được vị trí đầu và cuối của các record, bây giờ chúng ta
40: ' duyệt qua các record này và trình bày thông tin
41: i = iStart
42: while (not objRs.EOF) and (i <= iEnd)
43: ' in các thông tin về một product
44: Response.Write "Product: " & objRs("Name") & " - Price: " & objRs("Price") & "<br>" 45: i = i + 1 46: wend 47: objRs.Close 48: Set objRs = nothing 49: %>
Sau đây là đoạn code trình bày các link cho phép người sử dụng duyệt qua các trang
CODE
1: <%
2: sub ShowPageNavigation(iCurrentPage, iPageCount)
3: Dim i, strSep
4: if (iCurrentPage > 1) then
5: Response.Write("<a href=product_list.asp?page=" & (iCurrentPage - 1) & "'><<</a> ")
6: end if
7:
8: for i = 1 to iPageCount
9:
10: if (i < iPageCount) then
11: strSep = " - "
12: else
13: strSep = " "
14: end if
15:
16: if (i <> iCurrentPage) then
17: Response.Write("<a href='product_list.asp?page=" & i & "'>"& i &"</a>" & strSep) 18: else
19: Response.Write("<font color='red'>[" & i & "]</font> " & strSep)
20: end if
21: next
22:
23: if (iCurrentPage < iPageCount) then
24: Response.Write(" <a href=product_list.asp?page=" & (iCurrentPage + 1) & "'>>></a>")
25: end if
26: end sub
27: %>
[/quocte]
Theo cvk3n.net
Đơn giản chỉ cần dùng đoạn code sau :
Dim DB, Rs, intPage, intTotalPage, nLoop
intPage = Request.Querystring("P")
if intPage = "" then intPage = 1
Set DB = Server.createObject("ADODB.CONNECTION")
Set Rs = Server.CreateObject("ADODB.RECORDSET")
DB.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Data.mdb")
Rs.open "SELECT * FROM tblSinhvien ORDER BY ID DESC;",DB,3,3
' ASC (A=>Z), DESC(Z=>A)
if Rs.RecordCount > 0 then
Rs.PageSize = 10 'Kich thuoc trang
intTotalpage = Rs.PageCount ' Dem tong so trang
Rs.absolutepage = intPage 'Trang hien tai
For nLoop = 1 to Rs.PageSize
if Rs.EOF then Exit For
Response.Write Rs("Tensinhvien") & "<hr>"
Rs.MoveNext
Next
End if
Rs.Close
Set Rs = Nothing
DB.Close
Set DB = Nothing
if Cint(intTotalPage) = > 1 then 'Neu tong so trang lon hon 1
Response.Write "Trang "
For nLoop = 1 t o intTotalPage
Response.Write "<A HREF=""Xem.asp?P=" & nLoop & """>" & nLoop & "</A>"
Next
end if
%>
Nếu ai ko hiểu thì post lên đây , mình sẽ giải thích
Chú ý là tạo 1 file data ( Data.mdb ) , sau đấy tạo thêm bảng tblSinhvien gồm 2 trường là ID ( Autonumber ) và Tensinhvien ( text(100) ) rồi chạy thử code .
sau đấy sử lại như thế nào là ở Bạn
Rs.open "SELECT * FROM tblSinhvien ORDER BY ID DESC;",DB,3,3
cai' code DB,3,3 lma` chi vậy ? ko biết thiệt đó
1: <%
2:
3: Const PAGE_SIZE = 10
4:
5: Dim objRs, strQuery
6: Dim i, iCurrentPage, iStart, iEnd, iPageCount, iRecordCount
7:
8: iCurrentPage = CInt(Request("page"))
9: if iCurrentPage = 0 then
10: iCurrentPage = 1
11: end if
12:
13: Set objRs = Server.CreateObject("ADODB.Recordset") làm sao mà kết nối với database nào ???????,bnạ cố tình bỏ xot hay là tại wên??
14: objRs.CursorLocation = 3
15: objRs.PageSize = PAGE_SIZE
16: strQuery = "SELECT * FROM tblProducts"
17: objRs.Open strQuery, strConnectionClient, 3
18:
hic ,cộng nhận dài thiệt .viết khó wa'
minh cung moi bat dau hoc ve asp. ban co the giai thich ki hon ve doan code cua ban duoc ko,minh cam on rat nhieu
cho minh hoi ban mot van de moi dc ko
minh dang lam de tai tot nghiep ve web quan ly, ma chu yeu minh lam tren asp ma phan nay minh rat kem ban co the giup do minh dc khong
Mình sẽ phân tích từng dòng .
1.Dim DB, Rs, intPage, intTotalPage, nLoop
2.intPage = Request.Querystring("P")
3.if intPage = "" then intPage = 1
4.Set DB = Server.createObject("ADODB.CONNECTION")
5.Set Rs = Server.CreateObject("ADODB.RECORDSET")
6.DB.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Data.mdb")
7.Rs.open "SELECT * FROM tblSinhvien ORDER BY ID DESC;",DB,3,3
' ASC (A=>Z), DESC(Z=>A)
8.if Rs.RecordCount > 0 then
9.Rs.PageSize = 10 'Kich thuoc trang
10.intTotalpage = Rs.PageCount ' Dem tong so trang
11.Rs.absolutepage = intPage 'Trang hien tai
12.For nLoop = 1 to Rs.PageSize
13.if Rs.EOF then Exit For
14.Response.Write Rs("Tensinhvien") & "<hr>"
15.Rs.MoveNext
16.Next
17a.End if
17b.Rs.Close
18.Set Rs = Nothing
19.DB.Close
20.Set DB = Nothing
21.if Cint(intTotalPage) = > 1 then 'Neu tong so trang lon hon 1
22.Response.Write "Trang "
23.For nLoop = 1 t o intTotalPage
24.Response.Write "<A HREF=""Xem.asp?P=" & nLoop & """>" & nLoop & "</A>"
25.Next
26.end if
%>
Dòng 3 là đặt điều kiện Nếu trang hiện tại là trống thì sẽ gán cho giá trị bằng 1
VD : nếu đặt điều kiện trên thì xem.asp và xem.asp?trang=1 là như nhau
Dòng 4 & 6 là tạo kết nối đến database
Dòng 5 là tạo một Record để lấy dữ liệu
Dòng 7 là lấy dữ liệu từ database bằng câu truy vấn SQL :
SELECT * FROM tblSinhvien ORDER BY ID DESC
Nếu viết đầu đủ thì nó là :
Rs.Open StrSQL, DB,3,3
Dòng 9 : Đặt số dữ liệu sẽ xuất hiện trong 1 trang , VD : nếu làm trang tin thì có thể đặt khoảng 10 --> 15 tin 1 trang ,
Dòng 10 lấy tổng số trang
Dòng 11 lấy trang hiện tại
Dòng 12 tạo 1 vòng lặp FOR để hiển thị số dữ liệu mà Bạn vừa đặt cho nó
Dòng 13 : kiểm tra : nếu không có dữ liệu thì kết thúc vòng FOR
Dòng 14 : hiển thị dữ liệu
Dòng 15& 16 : Chuyển đến dòng dữ liệu tiếp theo
Dòng 17a đóng câu lệnh If của dòng 13
Dòng 17b ---> dòng 20 : đóng và khử các đối tượng
Dòng 21 : nếu tổng số trang lớn hơn 1 thì ...
Dòng 23 ---> 25 tạo 1 vòng lặp để hiển thị tất cả các trang
Dòng 26 kết thúc lệnh If của dòng 21
Mình giải thích theo cách hiểu của mình . Nếu Bạn nào còn không hiểu được nữa thì mình cũng chịu , ko thể giải thích kĩ hơn được nữa
@hungden
minh dang lam de tai tot nghiep ve web quan ly, ma chu yeu minh lam tren asp ma phan nay minh rat kem ban co the giup do minh dc khong
Địa chỉ diễn đàn trong chữ kí của mình . nhưng hiện tại đang dùng tạm địa chỉ : http://www.yeutructuyen.ws/forum
Bạn xem kĩ lại đi
Đây là code để lấy dữ liệu chứ có gửi dữ liệu đi đâu mà action & method
--------------------------------------------------------------------------------
No matter what
--------------------------------------------------------------------------------
No one else comesclose
--------------------------------------------------------------------------------
One more try
--------------------------------------------------------------------------------
One more try
--------------------------------------------------------------------------------
One sweet day
--------------------------------------------------------------------------------
See ya
--------------------------------------------------------------------------------
Sutter mill
--------------------------------------------------------------------------------
The sailor song
--------------------------------------------------------------------------------
Wait for me
--------------------------------------------------------------------------------
Trang|1||2||3||4||5||6||7||8||9||10||11||12|
load lên thì ok rùi ,cám ơn nha ,thiệt ddth hay wa1 ,anh em đều dược học hỏi .cam on các bạn nha .