ما هو عرض ترقيم الصفحات عندما يصل ADO إلى قواعد البيانات؟ إذا كنت قد استخدمت برنامج لوحة الإعلانات الإلكترونية على العديد من مواقع الويب ، فيجب أن تعلم أنه من أجل تحسين سرعة القراءة للصفحة ، لا يسرد برنامج لوحة الإعلانات الإلكترونية عمومًا جميع المنشورات في صفحة واحدة ، ولكن بدلاً من ذلك يتم تقسيمه إلى عدة صفحات العرض ، وتعرض كل صفحة عددًا معينًا من المنشورات ، مثل 20. هل تريد معرفة كيفية تنفيذ عرض ترقيم الصفحات؟ يرجى قراءة هذا المقال!
أمضت مقالة "ثمانية عشر من فنون القتال لتصميم الموقع الديناميكي-APP" معظمهم مع الأصدقاء منذ العدد الأول. والممارسة. من الرسائل التي تلقيتها من أصدقائي ، يمكننا أن نشعر بوضوح أن مهارات ASP لكل شخص تتحسن باستمرار. في الآونة الأخيرة ، كتب لي العديد من الأصدقاء ويأملون أن أتمكن من كتابة بعض الأمثلة على ASP في استخدام الحياة الواقعية. لذلك ، بدءًا من هذه المسألة ، قررت تغيير وضع "ثمانية عشر فنون قتالية للتصميم الديناميكي للتصميم" من تقديم وتعلم المعرفة الأساسية لـ ASP إلى مناقشة وتعميق العملية الفعلية لـ ASP. بناءً على طلب أصدقائي ، في هذه المشكلة ، سأركز على كيفية عرض ترحيل قاعدة بيانات ADO عند الوصول إليها.
ما هو عرض ترقيم الصفحات عندما يصل ADO إلى قواعد البيانات؟ إذا كنت قد استخدمت برنامج لوحة الإعلانات الإلكترونية على العديد من مواقع الويب ، فيجب أن تعلم أنه من أجل تحسين سرعة القراءة للصفحة ، لا يسرد برنامج لوحة الإعلانات الإلكترونية عمومًا جميع المنشورات في صفحة واحدة ، ولكن بدلاً من ذلك يتم تقسيمه إلى عدة صفحات العرض ، وتعرض كل صفحة عددًا معينًا من المنشورات ، مثل 20. هذا هو عرض ترقيم الصفحات لاستفسارات قاعدة البيانات.
فكيف يمكننا تراجع نتائج الاستعلام لقاعدة البيانات؟ هناك بالفعل العديد من الطرق ، ولكن هناك طريقتان رئيسيتان:
1. اقرأ جميع السجلات في قاعدة البيانات التي تلبي شروط الاستعلام في مجموعة السجلات في وقت واحد وتخزينها في الذاكرة. (رقم الصفحة) و Absolutepage (الصفحة المطلقة) لإدارة معالجة الترحيل.
2. وفقًا لتعليمات العميل ، يجب قراءة العدد المحدد من السجلات وعرضه من السجلات التي تلبي شروط الاستعلام في كل مرة.
الفرق الرئيسي بين الاثنين هو أن الأول يقرأ جميع السجلات في الذاكرة في وقت واحد ثم يصدر الأحكام والتحليل بالتسلسل وفقًا للتعليمات لتحقيق تأثير عرض الصفحات ، بينما يصدر الأخير الأحكام بناءً على التعليمات وتعيين يتم قراءة الرقم المحدد لتلبية شروط الاستعلام.
يمكن أن نشعر بوضوح أنه عندما يصل عدد السجلات في قاعدة البيانات إلى عشرات الآلاف أو أكثر ، فإن كفاءة التنفيذ في الطريقة الأولى ستكون أقل بكثير من الطريقة الثانية ، لأنه عندما يسكّر كل عميل الصفحة ، يجب أن تكون جميع النتائج على الإطلاق يتم نقلها. ومع ذلك ، عندما لا يكون عدد السجلات في قاعدة البيانات على الخادم وعدد الأشخاص عبر الإنترنت في نفس الوقت ، فإن كفاءة التنفيذ للاثنين هي نفسها تقريبًا. برنامج ASP للطريقة الأولى مكتوبة نسبيًا ، الطريقة الثانية أبسط وأكثر وضوحًا.
هنا ، سيأخذ المؤلف برنامج ASPBBS المشترك كمثال لتحليل كيفية تنفيذ وظيفة عرض الصفحات في برنامج BBS. كثير.
عرض ترقيم الصفحات عندما يصل ADO إلى قاعدة البيانات في الواقع لتشغيل سجلات مجموعة السجلات. لذلك يجب أن نفهم أولاً خصائص وطرق كائن ReordSet:
سمة BOF: يشير المؤشر الحالي إلى المعاملة الأولى إلى مجموعة السجلات.
سمة EOF: يشير المؤشر الحالي إلى المعاملة الأخيرة إلى مجموعة السجلات.
Move Method: انقل المقاييس إلى سجل في مجموعة السجلات.
خاصية Absolutepage: تعيين الموقع الحالي للسجل الذي يقع فيه الصفحة.
PageCount Property: يعرض عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجلات.
Pagesize Property: يعرض عدد السجلات المعروضة في كل صفحة من كائن مجموعة السجلات.
خاصية RecordCount: يعرض إجمالي عدد السجلات لكائن مجموعة السجلات.
دعونا نلقي نظرة فاحصة على هذه السمات والأساليب المهمة
1. سمات BOF و EOF
عادةً ما نكتب رمزًا في برنامج ASP للتحقق من سمات BOF و EOF لمعرفة موقع مجموعة السجلات التي يشير إليها المؤشر. هل تم تجاوز نطاق كائن مجموعة السجلات.
على سبيل المثال: <٪ إذا لم يكن rs.eof ثم ... ٪>
<٪ إذا لم يكن (rs.bof و rs.eof) ٪>
إذا كان موقع السجل الحالي في كائن مجموعة سجلات
عندما يتم تسجيل السطر الأول ، تُرجع سمة BOF صحيحًا ، وإلا فاشلاً.
إذا كان موضع السجل الحالي هو بعد الصف الأخير من كائن مجموعة السجلات ، فإن خاصية EOF تُرجع صحيحًا ، وإلا فإنها تُرجع.
كل من BOF و EOF خاطئة: يعني أن المؤشر موجود في مجموعة السجلات.
BOF صحيح: يشير المؤشر الحالي إلى السجل الأول إلى مجموعة السجلات. EOF صحيح: يشير المؤشر الحالي إلى السجل الأخير إلى مجموعة السجلات.
كل من BOF و EOF صحيحان: لا يوجد سجل في مجموعة السجلات.
2. نقل طريقة
يمكنك استخدام طريقة الحركة لنقل المقاييس إلى سجل في مجموعة السجلات ، مع بناء الجملة كما يلي:
Rs.Move numRecords ، ابدأ
RS هو متغير كائن ، يشير إلى كائن مجموعة السجلات الذي يريد التحرك عندما يكون موضع السجل الحالي ؛ علامة البداية.
جميع كائنات السجلات تدعم طريقة التحرك. الطريقة ، سيتم إنشاء خطأ.
MoveFirst طريقة: انقل موضع السجل الحالي إلى السجل الأول.
طريقة movelast: انقل موضع السجل الحالي إلى السجل الأخير.
طريقة movenext: انقل موضع السجل الحالي إلى السجل التالي. MovePrevious Method: انقل موضع السجل الحالي إلى السجل السابق.
نقل [n] الطريقة: انقل الفهرس إلى سجل القلم التاسع ، يبدأ n من 0.
3. سمات المطلقة
تقوم خاصية Abssolbage بتعيين عدد الصفحة من الصفحات الموجودة عليها ؛ Pagesize Records). تجدر الإشارة هنا إلى أنه لا يدعم جميع مزودي البيانات هذه الخاصية ، لذا كن حذرًا عند استخدامها.
نفس خاصية الإشارة المطلقة ، تبدأ خاصية AbsolutePage بـ 1. إذا كان السجل الحالي هو الصف الأول من مجموعة السجلات ، فإن Absolbing هو 1. يمكن تعيين خاصية Absolutepage للانتقال إلى موضع سجل الصف الأول لصفحة محددة.
4. الممتلكات المطلقة
إذا كنت بحاجة إلى تحديد الموقع الحالي للمقياس في مجموعة السجلات ، فيمكنك استخدام خاصية الإبلاغ المطلقة.
قيمة خاصية الإبلاغ المطلقة هي موضع المؤشر الحالي بالنسبة للمعاملة الأولى ، التي تبدأ من 1 ، أي أن المطلقة للمعاملة الأولى هي 1.
لاحظ أنه عند الوصول إلى Records ، لا يوجد ضمان بأن المسلسلات سوف تظهر في نفس الترتيب في كل مرة.
لتمكين الإشارة المطلقة ، يجب عليك أولاً تعيينه لاستخدام مؤشر المستخدم (مؤشر) ، ورمز ASP كما يلي:
rs2.cursorlocation = 3
5. PageCount Property
استخدم خاصية PageCount لتحديد عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجل. الصفحة هنا هي مجموعة من سجلات البيانات ، وحجمها يساوي إعداد خاصية Pagesize. . تجدر الإشارة إلى أن جميع مقدمي البيانات لا يدعمون هذه الخاصية.
6. Pagesize Property
خاصية PageSize هي المفتاح لتحديد كيفية الوصول إلى قواعد البيانات. يقوم بتعيين حجم الصفحة وإنشائه ، مما يسمح بنقل خاصية Absolutepage إلى السجل الأول للصفحات المنطقية الأخرى. يمكن تعيين خاصية Pagesize في أي وقت.
7
هذا أيضًا خاصية شائعة ومهمة للغاية. على سبيل المثال: <٪ totle = rs.recordCount ٪>
بعد فهم الخصائص المذكورة أعلاه وطرق كائنات مجموعة السجلات ، دعونا نفكر في كيفية استخدامها لتحقيق الغرض من عرض ترقيم الصفحات لدينا. أولاً ، يمكننا تحديد قيمة خاصية PageSize ، وبالتالي تحديد عدد الصفوف التي تشكل صفحة من مجموعة السجلات ؛ للحصول على الرقم الإجمالي للصفحة المعروض ؛ يبدو الأمر غير معقد للغاية.
لقد قمنا ببناء تطبيق BBS البسيط ، والذي يحتوي على الحقول الخمسة التالية: المعرف ، والرقم التلقائي لكل منشور ؛ وقت النشر. DSN من قاعدة البيانات هي BBS. وضعنا جميع الخطوات في عرض ما بعد الترحيل في عملية تسمى showlist () لسهولة الاتصال. الإجراء كما يلي:
'---- bbs عرض ما بعد الترحيل ---
<٪ show showlist () ٪>
<٪
PGSZ = 20 'SET SEWSS ، حدد عدد المنشورات المعروضة في كل صفحة ، الافتراضي هو 20 منشورًا لكل صفحة
تعيين conn = server.createBject (adodb.connection)
تعيين rs = server.createBject (adodb.recordset)
SQL = حدد* من ترتيب الرسائل حسب ID DESC
الاستعلام عن جميع المنشورات وترتيبها بترتيب عكسي حسب المعرف
Conn.Open BBS
Rs.Opensql ، Conn ، 1،1
إذا كان rs.recordCount = 0 ثم
استجابة. write <p> <center> آسف ، لا توجد معلومات ذات صلة في قاعدة البيانات! </center> </p>
آخر
rs.pagesize = cint (pgsz) 'اضبط قيمة خاصية Pagesize
TOTAL = int (RS.RECORDCOUNT / PGSZ * -1) * -1 'احسب العدد الإجمالي للصفحات التي يمكن عرضها
Pageno = طلب (Pageno)
إذا pageno = ثم
Pageno = 1
آخر
Pageno = Pageno+1
Pageno = Pageno-1
إنهاء إذا
ScrollAck = request (ScrollAct)
إذا تم التمرير = الصفحة السابقة ثم
Pageno = Pageno-1
إنهاء إذا
إذا تم التمرير = الصفحة التالية ثم
Pageno = Pageno+1
إنهاء إذا
إذا كان Pageno <1 ثم
Pageno = 1
إنهاء إذا
ن = 1
rs.absolutepage = pageno
استجابة. write <centre>
الموضع = rs.pagesize*pageno
pageBegin = position-rs.pagesize+1
إذا كان الموقف <rs.ReCordCount ثم
PAGEND = الموقف
آخر
PAGEND = RS.RECORDCOUNT
إنهاء إذا
Response.write <p> <font color = 'navy'> <b> نتيجة استعلام قاعدة البيانات: < /b>
استجابة. write (هناك ما مجموعه و rs.recordcount وقطع المعلومات التي تلبي الشروط والعرض و pageBegin &-& pagend &) < /font> </p>
استجابة. write <عرض الجدول = 600 الحدود = 1 cellpadding = 4 cellpacing = 0 bgColor =#ffffff>
reponse.write <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> السمة < /b> </td> <td> <b> المستخدم </b> </td> <td> < B> البريد الإلكتروني </b> </td> <td> <b> تاريخ المنشور < /b> </td> </font> <tr bgcolor =#ffffff>
افعل بينما لا (RS ليس شيئًا)
rowcount = rs.pagesize
افعل بينما لا Rs.eof و rowcount> 0
إذا n = 1 ثم
استجابة. write <tr bgcolor =#ffffff>
آخر
استجابة. write <tr bgcolor =#eeeeee>
إنهاء إذا
n = 1-n ٪>
<td> <span style = font-size: 9pt> <a href = 'view.asp؟ key = <٪ = rs (id) ٪>'> <٪ = rs (موضوع) ٪> < /a> < / span> </td>
<td> <span style = font-size: 9pt> <٪ = rs (name) ٪> </a> </span> </td>
<td> <span style = font-size: 9pt> <a href = mailto: <٪ = rs (email) ٪ >> <٪ = rs (البريد الإلكتروني) ٪> < /a> </span> </td>
<td> <span style = font-size: 9pt> <٪ = rs (postdate) ٪> </span> </td>
</r>
<٪
rowcount = rowcount - 1
Rs.Movenext
حلقة
تعيين RS = rs.nextrecordset
حلقة
conn.close
تعيين روبية = لا شيء
تعيين conn = لا شيء
٪>
< /table>
<method method = getAction = list.asp>
<نوع الإدخال = الاسم المخفي = pageno value = <٪ = pageno ٪ >>
<٪
إذا pageno> 1 ثم
استجابة. write <input type = إرسال name = 'scrollact ’value =' Private page '>
إنهاء إذا
إذا كان rowcount = 0 و pageno <> المجموع ثم
استجابة. write <input type = إرسال name = 'ScrollAct
إنهاء إذا
استجابة. write < /form>
إنهاء إذا
٪>
<٪ end sub>
أعتقد أن الجميع يجب أن يكونوا قادرين على فهم البرنامج أعلاه تمامًا ، لذلك لن يشرح المؤلف ذلك بالتفصيل هنا. تجدر الإشارة إلى أنه تم استخدام خدعة صغيرة في هذا البرنامج <type type = hidden name = pageno value = <٪ = pageno ٪ >> ، وهو ممر سري يستخدم لتمرير البيانات في كل مرة يتم فيها استدعاء ملف ASP ، لأننا تحتاج إلى تمرير معلمات تمثل رقم الصفحة الحالي في كل مرة ندعو فيها البرنامج ، وقد تفكر في استخدام الجلسة ، ولكن من حيث توفير موارد النظام والعالمية ، فإن استخدام هذا النموذج المخفي لتمرير البيانات سيحقق نتائج أفضل.
حسنًا ، لقد حان الوقت للوداع مرة أخرى. ؛