كائن تعدد الصفحات، الإصدار الثاني PHP
التأريخ: الأحد9/ جمادى الآخرة/1425 الموافق 25/7/2004 مسيحية
العنوان: البرمجة


سبق أن برمجت هذا الكائن بلغة PHP، ووظيفته تقسيم النتائج الكثيرة على صفحات كي يسهل التصفح، ويخف الضغط على قاعدة البيانات

وقد طورته كثيرا، واختصرت الأوامر، وأضفت بعض الخصائص مثل القائمة المنسدلة، وإمكانية تحديد مكان أي خاصية وجعلها بين وسوم HTML

#########################################
#
# كائن تعدد الصفحات
# برمجة : عبد الرحمن بن ناصر السعيد
# صاحب موقع الشنكبوتية
# http://www.toarab.ws
# الإصدار الثاني بتأريخ 1425/6/9هـ

# ababab90@yahoo.com
# فضلاً : هذا العمل استغرق الكثير من الوقت والجهد

# فلا تستخدمه في معصية من خلقك!
# ولا تحذف هذه الحقوق، والحساب يوم الحساب!
#########################################
#
# تـــــحـــــــذيـــــر
# لا يسمح باستخدام هذا الكائن في البرامج التجارية
# إلا بعد تفاهم مع المبرمج
#########################################

أولا : خصائص الكائن :

أ) أنه لا يظهر في الرابط سوى رقم الصفحة Page=1 وهلم جرا، عكس كثير من الكائنات التي تتطلب وضع بداية المدى

ونهايته على شاكلة :



$this->DoCode('

start=10&offset=20&page=1

','php')

لكن في هذا الكائن لا يظهر سوى رقم الصفحة ، وإذا كانت الصفحة هي الأولى فلا يظهر المتغير السابق

ب) أن الاستعلام من قاعدة البيانات خارج هذا الكائن، ولهذا لا تحتاج إلى تعديل أسماء الجداول والحقول.

ج) سهولة الاستخدام، فهو خالٍ من التعقيد للمستخدم

د) الخيارات المتعددة المتاحة ؛ حيث يمكنك استخدام هذا الكائن في برنامج واحد بصورة متعددة، بحيث تضع لكل صفحة

خياراتها الخاصة ، وهذه الخيارات

1) اختيار طباعة جملة : عرض النتائج من (1) إلى (5) من إجمالي (20)

2) اختيار طباعة كلمة: الأولى

3) اختيار طباعة كلمة : الأخيرة

4) اختيار طباعة : السابقة

5) اختيار طباعة التالية

6) اختيار طباعة : عدد الصفحات (40)

7) اختيار طباعة مدى النتائج نحو ( 1-10 ) (11-20 )

8) اختيار جعل الصفحات في قائمة منسدلة

9) تحديد عدد الصفحات المعروضة قبل الصفحة الحالية وبعدها

ويمكنك التحكم في هذه الخيارات بسهولة من حيث التقديم والتأخير، ووضعها بين وسوم HTML

وهذه رموز الخيارات :


$this->DoCode('
// {H} = header طباعة عرض النتائج من إلى من إجمالي
// {A} = Number of pages = طباعة عدد الصفحات
// {P} = PAGES = الصفحات
// {F} = FIRST PAGE = طباعة الصفحة الأولى
// {R} = PREV PAGE = الصفحة السابقة
// {N} = NEXT PAGE = الصفحة التالية
// {L} = LAST PAGE = الصفحة الأخيرة
// {E} = extra = طباعة مدى الأرقام
// {S} = select list = طباعة الصفحات في قائمة منسدلة
','php')


10) تلوين الصفحة الحالية باللون الأحمر

انتهت المميزات

ثانيا : طريقة الاستعمال

1) أنشئ الكائن :



$this->DoCode('

$n = new npp;

','php')

2) اجلب عدد النتائج للصفحة المراد عرضها :


$this->DoCode('
$query = "
SELECT * FROM YOUR_TABLE
WHERE id = '$id'
";
$result = mysql_query($query);
$totalRecords = mysql_num_rows($result);

','php')

3) تدرج هذا الأمر

أ) المتغير page$ يشير إلى الصفحة فلا تغيره

ب) المتغير limit$ يشير إلى عدد النتائج في كل صفحة

ج) المتغير totalRecords$ هو عدد النتائج المجلوبة في الاستعلام السابق


$this->DoCode('

$n->set($page,$limit,$totalRecords);

','php')

4) تدرج الاستعلام الثاني المتضمن تحديد النتائج



$this->DoCode('

$query2 = "
SELECT name,post FROM YOUR_TABLE
WHERE id ='$id'
limit ".$n->sql()."
";
$result2 = mysql_query($query2);

','php')


تنبه إلى أدرج الأمر n->sql$ بعد limit في


$this->DoCode('

limit ".$n->sql()."

','php')

5) إذا كنت تريد طباعة الرقم التسلسلي فأدرج هذا الأمر


$this->DoCode('

$r = $n->row();

','php')

قبل حلقة التكرار، ثم حلقة التكرار، ثم إضافة عدد لكل حلقة

$this->DoCode('
$r= $n->row();
while (list ($name, $post) =mysql_fetch_array($result2)) {
$r++;
// ما تريد
}

','php')

6) تطبع الكائن :

أ) الخانة الأولى للخيارات

ب) الخانة الثانية لعدد الصفحات قبل الصفحة الحالية وبعدها

ج) الخانة الثالثة للرابط


$this->DoCode('

echo $n->show($op="{H}{A}{F}{R}{P}{N}{L}
{E}{S}",4,$url="");


','php')

وإليك الرموز مرة ثانية

$this->DoCode('

// {H} = header طباعة عرض النتائج من إلى من إجمالي
// {A} = Number of pages = طباعة عدد الصفحات
// {P} = PAGES = الصفحات
// {F} = FIRST PAGE = طباعة الصفحة الأولى
// {R} = PREV PAGE = الصفحة السابقة
// {N} = NEXT PAGE = الصفحة التالية
// {L} = LAST PAGE = الصفحة الأخيرة
// {E} = extrat = طباعة مدى الأرقام
// {S} = select list = طباعة الصفحات في قائمة منسدلة
','php')

تنبيهات :


1) يجب كتابة الحرف بالوضع الكبير H بين معقوفين {H}


2) يمكنك ترك خانة الرابط فارغة إذا لم تكن هناك متغيرات سابقة تريد تمريرها، وسيتولى الكائن التعامل معه.
أما إذا كانت هناك متغيرات فإن عليك وضعها مثل


$this->DoCode('

$url="?id=5&new=1&type=tree";

','php')

ولا حاجة إلى كتابة اسم الملف؛ لأن الكائن يتولى ذلك نيابة عنك، ولا حاجة -أيضًا- إلى وضع العلامة & في الرابط



مثال مجمع :


$this->DoCode('

$n = new npp;

$query = "
SELECT * FROM YOUR_TABLE
WHERE id = '$id'
";
$result = mysql_query($query);
$totalRecords = mysql_num_rows($result);

$n->set($page,$limit,$totalRecords);

$query2 = "
SELECT name,post FROM YOUR_TABLE
WHERE id ='$id'
limit ".$n->sql()."
";
$result2 = mysql_query($query2);

$r = $n->row();
while ($row =mysql_fetch_row($result2)) {
$r++;
// ما تريد
}

echo $n->show($op="{H}{A}{F}{R}{P}{N}{L}
{E}{S}",4,$url="");

','php')

انتهى



تطبيق عملي :

اضغط هنا

تحميل الكائن مع التعليمات

مناقشة الكائن








هذه المقالة مكتوبة في موقع الشنكبوتية
http://www.toarab.ws

الرابط لهذه المقالة :
http://www.toarab.ws/modules.php?name=News&file=article&sid=36