ควรกล่าวว่าหากคุณได้เรียนรู้วิธีการแทรกบันทึกและแสดงบันทึกแล้วระบบบทความที่เรียบง่ายและสมบูรณ์ระบบข่าวและระบบข้อความไม่มีปัญหาในขณะนี้ จากนั้นคำถามต่อไปนี้คือ: เมื่อเนื้อหาข้อมูลเพิ่มขึ้นในเซ็กเมนต์จึงไม่สามารถแสดงข้อมูลทั้งหมดผ่านหน้าเดียวได้ ดังนั้นการแก้ปัญหาคือการใช้เทคโนโลยีเพจ
1, Rs.RecordCount
เห็นได้ชัดว่า RecordCount ใช้เพื่อแสดงจำนวนระเบียนในตารางฐานข้อมูลและยังสามารถอธิบายได้อย่างชัดเจนว่ามีกี่แถวในตาราง มันมักจะใช้ในการปนเปื้อนเพื่อแสดงทั้งหมดของบทความและข้อมูลอื่น ๆ
2. Rs.Pagesize
Rs.Pagesize เป็นขนาดของหน้าซึ่งหมายความว่าหน้า ASP สามารถแสดงจำนวนระเบียนได้ ค่าถูกกำหนดด้วยตัวเองเช่นข้อมูลเช่นบทความ n ที่แสดงในแต่ละหน้าที่คุณมักจะเห็น
3. Rs.absolutePage และ Rs.pagecount
เมื่อพูดถึงการปนเปื้อนคุณต้องไม่พูดถึง Rs.absolutePage ฟังก์ชั่นหลักของคุณสมบัติ AbsolutePage ของชุดระเบียนคือการพิจารณาว่าหน้าใดที่ปรากฏในขณะนี้ ค่าของมันขึ้นอยู่กับ หากระบุ Rs.Pagesize ค่าข้อมูลของ Rs.pagecount คือผลการหารของ Rs.RecordCount และ Rs.Pagesize ตัวอย่างเช่น: บันทึกข้อมูลทั้งหมด Rs.RecordCount มี 20 รายการและจำนวนรายการที่แสดงต่อหน้าถูกตั้งค่าเป็น 5 รายการ จากนั้นจำนวนหน้า rs.pagecount คือ 20/5 = 4 หน้าในขณะที่ rs.absolutepage สามารถเป็นหน้า 1, หน้า 2 ... หน้า 4
เมื่อพูดถึงตอนนี้เราจะพบโปรแกรมเฉพาะสำหรับการดีบัก ดำเนินการต่อเพื่อแก้ไข showit.asp ดังนี้:
<!-#รวม file = "conn.asp"-> - ตั้งค่า rs = server.createObject ("adodb.recordset")) sql = "เลือก * จากคำสั่ง cnarticle โดย cn_id desc" Rs.Open SQL, Conn, 1,1 - - page = request.QueryString ("หน้า") 'ค่าหน้าเป็นค่าที่ยอมรับ Rs.Pagesize = 2 'จำนวนระเบียนที่แสดงต่อหน้า rs.absolutePage = หน้า 'แสดงหน้าปัจจุบันเท่ากับจำนวนหน้าที่ได้รับ - - สำหรับ i = 1 ถึง Rs.Pagesize 'ใช้สำหรับลูปถัดไปเพื่ออ่านบันทึกของหน้าปัจจุบันตามลำดับ ถ้า RS.EOF แล้ว ออกจาก สิ้นสุดถ้า Response.write ("<br> เนื้อหาของบทความคือ:" & rs ("cn_content"))))))) Rs.Movenext ถัดไป%> - Rs.close ตั้งค่า rs = ไม่มีอะไร conn.close ตั้งค่า conn = ไม่มีอะไร - |
ที่นี่หลักฐานของการดีบักของคุณคือบันทึกในฐานข้อมูลจะต้องค่อนข้างมากกว่า 4 เพื่อให้เอฟเฟกต์การทดสอบจะชัดเจน วิธีการทดสอบคือการเพิ่ม? page = 1 หรือ? page = 2 และการดีบักอื่น ๆ เพื่อสังเกตเอฟเฟกต์การแสดงผลของหน้าเว็บหลังจาก showit.asp
อันที่จริงแล้วการแสดงเนื้อหาฐานข้อมูลคือ
- สำหรับ i = 1 ถึง Rs.Pagesize ถ้า RS.EOF แล้ว ออกจาก สิ้นสุดถ้า Response.write ("<br> เนื้อหาของบทความคือ:" & rs ("cn_content"))))))) Rs.Movenext ถัดไป%> |
ฟังก์ชั่นถูกเล่น แต่ลองนึกภาพ: โปรแกรมควรแสดงข้อมูล 2 ชิ้นเท่านั้น (ข้อมูล 2 ชิ้นที่ยังคงไม่เปลี่ยนแปลง) แต่ทำไมการเพิ่ม? page = 1 และ? page = 2 แสดงผลลัพธ์ที่แตกต่างกัน? ... นั่นคือฟังก์ชั่นของ Rs.absolutePage อย่างแน่นอน ฉันเข้าใจสิ่งนี้อย่างชัดเจนฉันเชื่อว่าสถาปัตยกรรมโดยรวมของการปนเปื้อนนั้นค่อนข้างสับสน