عمل زر السابق والتالي في عرض صفحات نتائج الاستعلام
مناقشة موضوع عمل زر السابق والتالي في عرض صفحات نتائج الاستعلام في دروس برمجة مواقع; مقدمة : تعدد صفحات نتائج الاستعلام من قواعد البيانات له فائدة كبيرة جدا . تخيل انه لديك في قسم من اقسام موقعك 100 سجل وتريد عرضها للزائر فكم من الوقت سيستغرق عرض هذه النتائج ( ان استطاع المتصفح اصلا تح ...
عمل زر السابق والتالي في عرض صفحات نتائج الاستعلام
مقدمة :
تعدد صفحات نتائج الاستعلام من قواعد البيانات له فائدة كبيرة جدا .
تخيل انه لديك في قسم من اقسام موقعك 100 سجل وتريد عرضها للزائر فكم من الوقت سيستغرق عرض هذه النتائج ( ان استطاع المتصفح اصلا تحمل ذلك العدد الهائل ) كما انها ستسبب ضغطا كبيرا على قاعدة البيانات
لذلك وُجدت الحاجة لمايعرف بتعدد الصفحات , وهو ان يتم عرض كل 10 سجلات مثلا في كل صفحة على ان يوجد شريط للتصفح باسفل الصفحة يؤدي للصفحة السابقة والصفحة التالية لنتائج هذا الاستعلام
في البداية يجب ان نعرف انه عند الاستعلام من قاعدة البيانات يمكننا تحديد من اين يبدأ الاستعلام وكم سجلا نريد ان نستعلم عنها
مثال :
mysql_query "SELECT column FROM table ORDER BY column LIMIT 17,5
نتيجة هذا الاستعلام ستعرض لنا 5 سجلات ابتداء من بعد السجل رقم 17
( تفسير:النتائج ستكون عبارة عن السجلات 18 ,19 , 20 , 21, 22)
الشرح :
لعمل السابق والتالي في عرض الصفحات :
قبل البدأ لابد ان نعرف ان صيغة الاستعلام مع تحديد البداية والنهاية تكون على الشكل التالي :
$sql=mysql_query SELECT column FROM table ORDER BY id LIMIT $count,$perpage
وهذا الاستعلام يعني ان يحضر لنا ببيانات الحقل column من الجدول table ويتم ترتيبها حسب رقم id ويبدأ الاستعلام من بعد الحقل رقم count $ ويتم عددperpage $ حقل
الان نستفيد من هذه الميزة الرائعة على النحو التالي
في اول صفحتنا نقوم بأخذ قيمة $count عن طريق
count=$_GET 'count $
الان نحدد انه اذا كانت لاتوجد قيمة للمتغير count $ فسنعين له القيمة صفر كما يلي :
{if (!$count) { $count=0
الان نقوم بعمل استعلام من قاعدة البيانات :
query=mysql_query SELECT cloumn FROM table ORDER BY cloumn$ or die can't get the table
الان نستعلم عن عدد النتائج التي حصلنا عليها , باستخدام الدالة mysql_num_rows على النحو التالي :
check_end=mysql_num_rows $query$
الان $check_end هو مجموع النتائج الموجودة لدينا في الاستعلام سنحدد الان عدد النتائج التي نريد عرضها في كل صفحة واعطاء قيمتها للمتغير $perpage كما يلي :
perpage=5 $
الان جاء وقت عرض البيانات : فسنجري استعلاما مرة اخرى ولكن هذه المرة سنحدد كمية البيانات المطلوبة ومن اين يبدأ الاستعلام ( كما شرحنا في اول سطر )
query1=mysql_query("SELECT cloumn FROM table ORDER BY id LIMIT $count,$perpage$ or die "can't get the table
بعد عرض البيانات , حان وقت عمل ازرار التصفح (السابق||التالي) لعمل رابط (السابق) ( اي عرض الخمس نتائج السابقة مما يعني انقاص قيمة $count بمقدار خمسة ) فسنقوم بانقاص count ونخزن قيمته في المتغير $back
back=$count-$perpage $
الان ولكي نتأكد من عدم اعطاء اخطاء خلال عرض الصفحة الاولى (لان ناتج العملية السابقة سيكون بالسالب ) فسنقوم باضافة شرط يلغي تفعيل الرابط كما يلي :