عمل تعدد للصفحات بطريقة بسيطة وميسرة  أضيف في: 19-5-1427هـ
مقدمة :

</FONT>

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

</FONT>

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

</FONT>

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

</FONT>

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

</FONT>

مثال :

</FONT>

mysql_query(“SELECT column FROM table ORDER BY column LIMIT 17,5”)

نتيجة هذا الاستعلام ستعرض لنا 5 سجلاتابتداء من بعدالسجل رقم 17

</FONT>

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

</FONT>

الشرح :

</FONT>

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

</FONT>

الان عرفنا عدد السجلات التي نريد اظهارها في كل صفحة ويتبقى علينا رقم السجل الذي سنبدأ الاستعلام من بعده ( في المثال السابق 17 )

</FONT>

سنسمي هذا المتغير $count

</FONT>

ونقوم بارسال قيمته للمتصفح لكي يتم الاستعلام بواسطتها

</FONT>

لكي نأخذ قيمة count من المتصفح , نستخدم $_GET كما يلي :

</FONT>

$count=$_GET[‘count’];

اذا لم تكن هناك قيمة لـ count فسنعين لها القيمة صفر

</FONT>

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

بعد عرض نتائجنا الناتجة عن الاستعلام التالي :

</FONT>

$query2=mysql_query(“SELECT column FROM table ORDER BY column LIMIT $count,$perpage”)

or die(“can’t get the table”);

سنقوم باجراء استعلام آخر لمعرفة اجماليعدد السجلات الموجودة لدينا في القاعدة

</FONT>

$TotalRecords=mysql_query(“SELECT column FROM table ORDER BY column “)

or die(“can’t get the table”);

$check_end=mysql_num_rows($TotalRecords);

الان خزّنا عدد السجلات الموجودة لدينا في المتغير $check_end

</FONT>

يأتي دور عمل تعدد الصفحات
اولا نضع عداد للصفحات ونعين له القيمة 1 مبدأيا

</FONT>

$i=1;

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

</FONT>

$perpage=2;

الان , سنستخدم متغير للرقم الذي سيتم اعطاء قيمتة للمتغير count وسميناه $next واعطينا مبدأيا القيمة صفر

</FONT>

$next=0 ;

الان نبدأ بجملة شرطية , مفادها انه طالما المتغير $next اقل من اجمالي السجلات $check_end سيتم تنفيذ الاوامر :

</FONT>

while($next<=$check_end){

الان سنضع شرطا اخر داخل الشرط السابق , وظيفتها عدم وضع رابط على رقم الصفحة التي يتصفحها الزائر :

</FONT>

if ($count==$next){echo” $i “;}

بخلاف ذلك الشرط , سيتم وضع رابط على رقم الصفحة , متضمنا قيمة المتغير count والتي هي المتغير next

</FONT>

else
{
echo” <a href=’page.php?count=$next’>$i</a>”;}
$next=$next+$perpage;
$i++;
}

شرح الاوامر :

</FONT>

اولا كتبنا انه لو كان المتغير $next يساوي المتغير $count فسيطبع لنا رقم
الصفحة $i غير نشطة
( يعني لو كان المتغير يساوي الصفحة التي نستعرضها فلن نضع
عليها رابطا لاننا نستعرضها فعلا )
اذا لم يتحقق هذا الشرط فانه سينفذ مايلي وهو
وضع رابط على رقم الصفحة يعطي للمتصفح قيمة المتغير count القيمة $next
بعد ذلك
, سنزيد قيمة المتغير $next بقيمة مقدارها $perpage لكي يتم اضافتها لرابط
رقم الصفحة التالية
الان نزيد رقم الصفحة $i بمقدار واحد كما يلي
$i++;

الكود كاملا :

</FONT>

[color=blue]$count=$_GET[‘count’];

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

$TotalRecords=mysql_query(“SELECT column FROM table ORDER BY column “)

or die(“can’t get the table”);

$check_end=mysql_num_rows($TotalRecords);

$perpage=2;

$query2=mysql_query(“SELECT column FROM table ORDER BY column LIMIT $count,$perpage”)

or die(“can’t get the table”);

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

$i=1;

$next=0 ;

while($next<=$check_end)
{
if ($count==$next)
{
echo” $i”;
}
else
{
echo” <a href=’page.php?count=$next’>$i</a>”;
}
$next=$next+$perpage;
$i++;
}

[/color]

الكاتب: أبو عامر