-
'แพลตฟอร์ม: Win2000+IIS5.0+Sql2000
'PS: เวอร์ชันล่าสุดได้รับการอัปเกรดแล้ว เวอร์ชันล่าสุดคือเวอร์ชัน SQL และไม่ได้ใช้ขั้นตอนการจัดเก็บ
'เวอร์ชันก่อนหน้า: [ต้นฉบับ] รหัสเพจข้อมูลระดับล้านที่ยอดเยี่ยม - (ยุ่งเป็นเวลานาน) (http://bbs.bccn.net/thread-175543-1-1.html)
'------------------------------------------------- รหัสต่อไปนี้คือ รหัสหน้าเว็บ
Response.Buffer = จริง
Dim SqlLocalName,SqlUsername,SqlPassword,SqlDatabaseName
Dim ConnStr,คอนน์
'''''''''''''''''''''''''''' ฐานข้อมูล SQL '''''''''''''''' '''''' ''''''''''''''''''''''''''''''''''''
SqlLocalName = (ท้องถิ่น) 'การเชื่อมต่อ IP [IP ต่างประเทศภายใน (ท้องถิ่น)]
SqlUsername=sa 'ชื่อผู้ใช้ฐานข้อมูล'
SqlPassword=XXXXXX 'รหัสผ่านผู้ใช้'
SqlDatabaseName=NewsTable 'ชื่อฐานข้อมูล
ConnStr = ผู้ให้บริการ = Sqloledb; User ID= & SqlUsername & ; รหัสผ่าน = & SqlPassword & ; แค็ตตาล็อกเริ่มต้น = & SqlDatabaseName & ;
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งค่า Conn=Server.CreateObject(ADODB.Connection)
Conn.เปิด ConnStr
หากผิดพลาดแล้ว
ผิดพลาด เคลียร์
SetConn=ไม่มีอะไร
Response.Write <div style='font-size:14px;color=#ff0000' align='center'>ข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล โปรดตรวจสอบสตริงการเชื่อมต่อฐานข้อมูล</div>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
'คลาสนี้ดำเนินการโค้ดการสร้างอินสแตนซ์โดยไม่คำนึงถึงเงื่อนไขที่เป็นไปได้ทั้งหมดสำหรับการเพจ หมวดหมู่นี้มีไว้เพื่อการอ้างอิงเท่านั้น
'------------------------------------------------ - ------------------------------------------------- -------------------------------------------------
'PageNo-หน้าปัจจุบัน;PageSizeX-ขนาดหน้า;PageCountX-จำนวนหน้าทั้งหมด;FieldCount-จำนวนบันทึกทั้งหมด;StrWhere-เงื่อนไขการสืบค้น
Dim PageNo, PageSizeX, PageCountX, FieldCount, StrWhere
'ทำภารกิจ.
PageNo=trim(Request.Querystring(PageNo))
PageSizeX=30' กำหนดขนาดเพจ
ถ้าเป็นตัวเลข (PageNo) หรือ PageNo= แล้ว 'หากไม่มีค่าหน้า ให้กำหนดค่าเริ่มต้น
PageNo=abs(หมายเลขหน้า)
ถ้า PageNo=0 แล้ว PageNo=1
อื่น
หมายเลขหน้า=1
สิ้นสุดถ้า
StrWhere=(ClassCode=0101 and Hits>20)'หมายเหตุ โปรดใส่ใจกับความยาวของอักขระที่นี่
ชุด recom = server.createobject (adodb.command)
recom.activeconnection = เชื่อมต่อ
recom.commandtype = 4
recom.commandtext = News_Class
recom.Parameters.Appendrecom.CreateParameter(@StrWhere,202,1,100,StrWhere)
recom.Parameters.Appendrecom.CreateParameter(@PageSize,3,1,,PageSizeX)
recom.Parameters.Appendrecom.CreateParameter(@PageIndex,3,1,,PageNo)
ตั้งค่า rs = recom.execute()
ถ้า rs.eof แล้ว
set rs=nothing : set recom=nothing: Conn.Close : set Conn=nothing
response.write <script LANGUAGE='javascript'>alert('ไม่พบบันทึกในขณะนี้ โปรดกลับไปลองอีกครั้ง!');history.go(-1);</script>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
'แสดงข้อมูล
ทำในขณะที่ไม่ใช่ rs.eof
response.write&rs(Title) เพิ่มเวลา:&rs(AddTime)&<br/>
rs.movenext
วนซ้ำ
'รับจำนวนบันทึกทั้งหมดและคำนวณจำนวนหน้า'
ตั้งค่า rs = rs.NextRecordset
ถ้า rs(countx) > 0 แล้ว
FieldCount=rs(นับx)
อื่น
จำนวนฟิลด์=0
สิ้นสุดถ้า
ถ้า (FieldCount mod PageSizeX)>0 แล้ว
PageCountX=((FieldCount - (ตัวดัดแปลง FieldCount PageSizeX))/ PageSizeX)+1
อื่น
PageCountX= (FieldCount / PageSizeX)
สิ้นสุดถ้า
'ปิดและปล่อยทรัพยากรที่เกี่ยวข้อง'
set rs=nothing : set recom=nothing: Conn.Close : set Conn=nothing
'แสดงเพจ
ถ้า PageNo<=1 แล้ว
Response.Write <font color='#FF0000'>[Home] [Previous Page]</font>
อื่น
Response.Write[<a href='?PageNo=1' target='_self' title='Homepage'><font color='#FF0000'>หน้าแรก</font></a>]
Response.Write[<a href='?PageNo=&(PageNo-1)&' target='_self' title='Previous page'><font color='#FF0000'>หน้าก่อนหน้า</font>< /a >]
สิ้นสุดถ้า
ถ้า PageNo>=PageCountX แล้ว
Response.Write <font color='#FF0000'>[หน้าถัดไป] [หน้าสุดท้าย]</font>
อื่น
Response.Write[<a href='?PageNo=&(PageNo+1)&'target='_self' title='Next page'><font color='#FF0000'>หน้าถัดไป</font>< /a >]
Response.Write[<a href='?PageNo=&PageCountX&' target='_self' title='Last page'><font color='#FF0000'>หน้าสุดท้าย</font></a>]
สิ้นสุดถ้า
Response.Write[หน้า <font color=red>&PageNo&</font>/total <font color=red> & PageCountX &</font>]
การตอบสนองเขียน [Total<font color=red>&FieldCount&</font> items<font color=red>& PageSizeX & </font> items/page]
Response.Write ไปที่ & <input id=zhuanpage name=zhuanpage size=2 value=&PageNo&> & page <input type=submit value=Go onclick=gotoPage()>
การตอบสนองเขียน</td></tr></table>
Response.Write<script>ฟังก์ชั่น gotoPage(){var pg=document.getElementById('zhuanpage').value;if(isNaN(pg)||pg>&PageCountX&||pg<0){window.alert('โปรดเป็น ถูกต้อง ป้อนหมายเลขหน้าซึ่งสามารถเป็นจำนวนเต็มบวกได้เท่านั้น และต้องไม่มากกว่า &PageCountX&');return false;}else{window.location.href='?PageNo='+document.getElementById('zhuanpage').value+'';return true;}}</script>
-
'------------------------------------------------ - ------รหัสต่อไปนี้คือรหัสขั้นตอนการจัดเก็บ
สร้าง ProcedureNews_Class
--ข้อมูลข่าวเพจล้านระดับ
-
@StrWhere วาร์ชาร์ (100)
@PageSize int,
@PageIndexint
-
เช่น
ประกาศ@strSQLvarchar(2000) -- คำสั่งหลัก
ประกาศ@strCountSQL varchar(2000) -- คำสั่งหลักบันทึกทั้งหมด
ประกาศ@strTmpvarchar(1,000) -- ตัวแปรชั่วคราว
ตั้ง @strTmp = Select top + str(@PageSize) + Title,AddTime จาก Tb_News --โปรดทราบว่าจำเป็นต้องใช้หลายช่องเพื่ออ่านหลายช่อง
ถ้า @StrWhere<>''
เริ่ม
ตั้งค่า @strSQL=@strTmp + โดยที่ ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News Where +@StrWhere+order by ID desc)as tblTmp ) และ +@StrWhere+ เรียงลำดับตาม ID ตามลำดับ
ตั้ง @strCountSQL=select count(ID) เป็น countx จาก Tb_News โดยที่ +@StrWhere+
จบ
อื่น
เริ่ม
ตั้งค่า @strSQL=@strTmp + โดยที่ ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News order by ID desc)as tblTmp ) order by ID desc
ตั้งค่า @strCountSQL=select count(ID) เป็น countx จาก Tb_News
จบ
ถ้า @PageIndex = 1
ถ้า @StrWhere<>''
เริ่ม
ตั้งค่า @strSQL=@strTmp + Where +@StrWhere+ เรียงลำดับตาม ID desc
จบ
อื่น
เริ่ม
ตั้งค่า @strSQL=@strTmp + ลำดับตาม ID desc
จบ
ผู้บริหาร(@strSQL)
ผู้บริหาร(@strCountSQL)
ไป