تعدد صفحات نتائج الاستعلام من قواعد البيانات له فائدة كبيرة جدا .



تخيل انه لديك في قسم من اقسام موقعك 100 سجل , وتريد عرضها للزائر , فكم من الوقت سيستغرق عرض هذه النتائج ( ان استطاع المتصفح اصلا تحمل ذلك العدد الهائل ) , كما انها ستسبب ضغطا كبيرا على قاعدة البيانات



لذلك وُجدت الحاجة لمايعرف بتعدد الصفحات , وهو ان يتم عرض كل 10 سجلات (مثلا ) في كل صفحة , على ان يوجد شريط للتصفح باسفل الصفحة يؤدي للصفحة السابقة والصفحة التالية لنتائج هذا الاستعلام



في البداية يجب ان نعرف انه عند الاستعلام من قاعدة البيانات , يمكننا تحديد من اين يبدأ الاستعلام وكم سجلا نريد ان نستعلم عنها



مثال :

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي
كود PHP:
                      mysql_query("SELECT column FROM table ORDER BY column LIMIT 17,5"
نتيجة هذا الاستعلام ستعرض لنا 5 سجلات ابتداء من بعد السجل رقم 17



( تفسير:النتائج ستكون عبارة عن السجلات 18 ,19 , 20 , 21, 22)



الشرح :



لعمل السابق والتالي في عرض الصفحات :

قبل البدأ لابد ان نعرف ان صيغة الاستعلام مع تحديد البداية والنهاية تكون على الشكل التالي :




كود PHP:
                      $sql=mysql_query("SELECT column FROM table ORDER BY id LIMIT $count,$perpage"
وهذا الاستعلام يعني ان يحضر لنا ببيانات الحقل column من الجدول table ويتم ترتيبها حسب رقم id ويبدأ الاستعلام من بعد الحقل رقم $count ويتم عدد $perpage حقل



الان نستفيد من هذه الميزة الرائعة على النحو التالي



في اول صفحتنا نقوم بأخذ قيمة $count عن طريق :




كود PHP:
                      $count=$_GET['count']; 
الان نحدد انه اذا كانت لاتوجد قيمة للمتغير $count فسنعين له القيمة صفر كما يلي :




كود PHP:
                      if (!$count) { $count=0;} 
الان نقوم بعمل استعلام من قاعدة البيانات :




كود PHP:
                      $query=mysql_query("SELECT cloumn FROM table ORDER BY cloumn "

or die(
"can't get the table"); 
الان نستعلم عن عدد النتائج التي حصلنا عليها , باستخدام الدالة mysql_num_rows
على النحو التالي :




كود PHP:
                      $check_end=mysql_num_rows($query); 
الان $check_end هو مجموع النتائج الموجودة لدينا في الاستعلام

سنحدد الان عدد النتائج التي نريد عرضها في كل صفحة واعطاء قيمتها للمتغير $perpage كما يلي :




كود PHP:
                      $perpage=5
الان جاء وقت عرض البيانات : فسنجري استعلاما مرة اخرى ولكن هذه المرة سنحدد كمية البيانات المطلوبة ومن اين يبدأ الاستعلام ( كما شرحنا في اول سطر )




كود PHP:
                      $query1=mysql_query("SELECT cloumn FROM table ORDER BY id LIMIT $count,$perpage"

or die(
"can't get the table"); 
بعد عرض البيانات , حان وقت عمل ازرار التصفح (السابق||التالي)
لعمل رابط (السابق) ( اي عرض الخمس نتائج السابقة , مما يعني انقاص قيمة $count بمقدار خمسة )
فسنقوم بانقاص count ونخزن قيمته في المتغير $back




كود PHP:
                      $back=$count-$perpage
الان ولكي نتأكد من عدم اعطاء اخطاء , خلال عرض الصفحة الاولى (لان ناتج العملية السابقة سيكون بالسالب )فسنقوم باضافة شرط يلغي تفعيل الرابط كما يلي :



كود PHP:
                      if ($back<0){ 
echo
"السابق || ";  



}else{ 
echo
"<a href='$PHP_SELF?count=$back'>السابق</a> || ";} 
الان لعمل زر التالي , سنقوم اولا بزيادة قيمة count بنفس المقدرا $perpage وسنخزن القيمة في المتغير $next كما يلي :




كود PHP:
                      $next=$count+$perpage
سنضع ايضا شرط لالغاء تنشيط الرابط اذا كانت قيمة count اكثر من عدد النتائج الموجودة في الاستعلام كما يلي :




كود PHP:
                      if ($next>=$check_end){ 
echo
"التالي"
}else{ 



echo
"<a href='$PHP_SELF?count=$next'>التالي</a>";} 
الكود كاملا :



كود PHP:
                      $sql=mysql_query("SELECT column FROM table ORDER BY id LIMIT $count,$perpage"



$count=$_GET['count'];  



if (!
$count) { $count=0;}  



$query=mysql_query("SELECT cloumn FROM table ORDER BY cloumn "
or die(
"can't get the table"); 



$check_end=mysql_num_rows($query); 



$perpage=5
$query1=mysql_query("SELECT cloumn FROM table ORDER BY id LIMIT $count,$perpage"
or die(
"can't get the table"); 



//سيتم عرض السجلات الناتجة عن الاستعلام 

$back=$count-$perpage



if (
$back<0){ 
echo
"السابق || ";  

}else{ 

echo
"<a href='$PHP_SELF?count=$back'>السابق</a> || ";}  



$next=$count+$perpage;  



if (
$next>=$check_end){ 
echo
"التالي"
}else{ 



echo
"<a href='$PHP_SELF?count=$next'>التالي</a>";} 
تحيات لكم اتمني قد اكون قدمت لكم هذا الردس بشكل سهل