شرح طريقة الفكرة:
في البداية نضع نص الاستعلام الذي نريد ان ننفذه ، مثلا
رمز PHP:
<code style="white-space:nowrap"> <code> $query="SELECT * FROM news ORDER BY id DESC";
</code> </code>
طبعا من الملاحظ انه ما نفذنا الاستعلام فقط وضعناه دون تنفيذ
الان نريد ان نحدد عدد النتائج لكل صفحة
كما في الكود code
رمز PHP:
<code style="white-space:nowrap"> <code> $rowsPerPage=10;
</code> </code>
في حالتنا هذه وضعنا عدد النتائج هو 10 طبعا قابل للزيادة او النقصان حسب انت ماذا تحتاج
الخطوة التالية هي حساب عدد كل النتائج ومعرفة عدد الصفحات اللازمة لنا
عن طريق الكود code التالي
رمز PHP:
<code style="white-space:nowrap"> <code> $num=mysql_num_rows(mysql_query($query));
$pagesNum=ceil($num/$rowsPerPage);
</code> </code>
قسمنا عدد النتائج على عدد النتائج لكل صفحة ثم اخذنا قيمة اكبر عدد صحيح عن طريق دالة ceil
الدالة معروفة وظيفتها عند متخصصين الرياضيات ويسموها اكبر عدد صحيح ورمزها [number] ويوجد ايضا واحدة اخرى اسمها floor بتاخذ اصغر رقم صحيح لكن احنا هنا بيعنينا اكبر عدد صحيح فقط
الخطوة التالية
نريد عن طريق GET ان نأخذ رقم الصفحة من المستخدم
رمز PHP:
<code style="white-space:nowrap"> <code>
$page=intval($_GET[page]
;
</code> </code>
طبعا دالة انتفال للحماية من ادخال اي رموز غير مرغوب فيها
الان في الخطوة التالية
اما المستخدم سيدخل رقم صحيح ومقبول ، او راح يدخل شي خاطئ
لذلك راح نحصر جميع الاحتمالات عن طريق جملة joomla شرطية
رمز PHP:
<code style="white-space:nowrap"> <code> if($page==""||$page==0||$page==1||$page>$pagesNum||$page<0)
{
$page=1;
$startIndex=0;
$endIndex=$rowsPerPage;
}
else {
$startIndex=($page-1)*($rowsPerPage);
$endIndex=$rowsPerPage;
}
</code> </code>
واضح من الكود code انه في اذا ادخل المستخدم 1 او 0 او لم يدخل شي او حتى ادخل رقم سالب او حتى ادخل رقم اكبر من عدد الصفحات، سيحوله الى الصفحة الاولى
وسيكون البداية من الصفر وعدد العناصر هو الذي حددناه بالاعلى
اما في حال ادخل رقم صفحة مسموح فإنه سيقوم باحتساب النتائج المطلوبة كما هو موضح بنص else
فقط دقق في الكود code لمدة 10 ثوان وستعرف بالضبط كيف يعمل الكود code
الان نجري الاستعلام
رمز PHP:
<code style="white-space:nowrap"> <code> $result=mysql_query("$query LIMIT $startIndex,$endIndex");
</code> </code>
ثم عن طريق جملة joomla تكرارية نخرج النتائج ونخزنها في مصفوفة ، فيكون لدينا النتائج المطلوبة فقط في الصفحة التي ادخلنا رقمها
رمز PHP:
<code style="white-space:nowrap"> <code> while($rows=mysql_fetch_array($result))
{
$newsdata[]=$rows;
}
</code> </code>
بعد استخرجنا المعلومات ووضعناها في مصفوفة ، لم يتبق علينا سوى طباعة الصفحات
انا استخدمت متغير واسميته $pagination لوضع ارقام الصفحات فيه كما هو موضح بالاسفل
رمز PHP:
<code style="white-space:nowrap"> <code> $pagination="";
for($i=1;$i<=$pagesNum;$i++)
{
if($page==$i)
{
$pagination.=" <span class=\"pagination1\">$i</span>";
}
else {
$pagination.=" <span class=\"pagination2\"><a href=\"news.php?page=".$i."\">".$i."</a></span>";
}
}
</code> </code>
من خلال جملة joomla الفور لوب for الموضحة نقوم بتكوين ارقام الصفحات
ومن الملاحظ ايضا اني اكسبتها كلاس css حتى تكون مرنة في تغيير مظهرها
الان في نظام قوالبك
فقط اكتب اسفل السجلات الجملة joomla التالية في حال كان نظامك سمارتي
رمز PHP:
<code style="white-space:nowrap"> <code> {$pagination}
</code> </code>
اما في حال كان نظامك غير السمارتي فالعملية هي عملية طباعة متغير عادي
وراح تكون حصلت على تعدد الصفحات المطلوب
انا وضعت لكم تنسيق css بامكانكم التعديل عليه بكل سهولة
وهو
رمز Code:
.pagination1 { font: 10pt tahoma; border: 1px solid #1D6EBF; width:25px; background:#80BDFB; } .pagination2 { font: 10pt tahoma; border: 1px solid #1D6EBF; width:25px; background:#F2F2F2; }
والناتج راح يكون كما في الصفحة التالية
امل ان يكون الدرس مفصل قد نال اعجابكم
وهذا هو الكود code كامل
رمز PHP:
<code style="white-space:nowrap"> <code>
$query="SELECT * FROM news ORDER BY id DESC";
$rowsPerPage=2;
$num=mysql_num_rows(mysql_query($query));
$pagesNum=ceil($num/$rowsPerPage);
$page=intval($_GET[page]
;
if($page==""||$page==0||$page==1||$page>$pagesNum||$page<0)
{
$page=1;
$startIndex=0;
$endIndex=$rowsPerPage;
}
else {
$startIndex=($page-1)*($rowsPerPage);
$endIndex=$rowsPerPage;
}
$result=mysql_query("$query LIMIT $startIndex,$endIndex");
while($rows=mysql_fetch_array($result))
{
$newsdata[]=$rows;
}
$pagination="";
for($i=1;$i<=$pagesNum;$i++)
{
if($page==$i)
{
$pagination.=" <span class=\"pagination1\">$i</span>";
}
else {
$pagination.=" <span class=\"pagination2\"><a href=\"news.php?page=".$i."\">".$i."</a></span>";
}
}
</code> </code>
والسلام عليكم ورحمة الله وبركاته