عند استخدام محرك بحث (جوجل او ما شابه) لاشك ان كمية النتائج ستكون هائلة ،  من غير المعقول اظهارها في صفحة واحدة، هادا يجعل المستخدم غير مرتاح لحجم الصفحة الكبير… لهادا الغرض يوجد الـ Pagination حيث تترقم صفحة النتائج المستخرجة من قاعدة البيانات، ترقيم الصفحات هادا تتعامل معه مع كل استخدامك للنت (في المنتديات، المدونات، محركات البحث…)، طبعا كل مبرمج و له طريقته في ابتكار كود يسمح بهده العملية، لكنني قد وجدت لكم الابسط و الاسهل و الامكان استخدامه في اسكربتك الخاص بسرعة و سهولة.

شرح طريقة التركيب:

1- ادراج ملف الاتصال بقاعدة البيانات (يمكنك انشاءه او مجرد وضع كود الاتصال مباشرة)

2- اختر اسم الجدول الحاوي على البيانات المعنية

3- (اجد صعوبة في طريقة شرح هادا) حدد كم صفحة حاولة على المعلوم ان تظهر على كل جانب من شريط الترقيم

4- الصفحة نفسها التي ستظهر عليها النتائج يمكنك استبدال دلك الكود للتسهيل بـ:

$targetpage = $_SERVER['PHP_SELF'];

5- حدد كم نتيجة تريدها ان تظهر بكل صفحة

6- (الكود البرمجي ل SQL من المحتمل انه يحتاج تعديل منك) في هده الخطوة تحدد العمود الحاوي على البيانات المراد استخراجها او البحث داخلها.

المرحلة الاخيرة

7- ادخل كود طباعة النتائج، (يمكن ان تستعمل Html & CSS) لتنسيق المظهر.

و باخر مرحلة تظع هادا الكود بالمكان الدي تريد ان يظهر شريط الترقيم:

<?=$pagination?>

الكود الاجمالي:

<?php
 /*
 Place code to connect to your DB here.
 */
 include('config.php');    // include your code to connect to DB.

 $tbl_name="";        //your table name
 // How many adjacent pages should be shown on each side?
 $adjacents = 3;

 /*
 First get total number of rows in data table.
 If you have a WHERE clause in your query, make sure you mirror it here.
 */
 $query = "SELECT COUNT(*) as num FROM $tbl_name";
 $total_pages = mysql_fetch_array(mysql_query($query));
 $total_pages = $total_pages[num];

 /* Setup vars for query. */
 $targetpage = "filename.php";     //your file name  (the name of this file)
 $limit = 2;                                 //how many items to show per page
 $page = $_GET['page'];
 if($page)
 $start = ($page - 1) * $limit;             //first item to display on this page
 else
 $start = 0;                                //if no page var is given, set start to 0

 /* Get data. */
 $sql = "SELECT column_name FROM $tbl_name LIMIT $start, $limit";
 $result = mysql_query($sql);

 /* Setup page vars for display. */
 if ($page == 0) $page = 1;                    //if no page var is given, default to 1.
 $prev = $page - 1;                            //previous page is page - 1
 $next = $page + 1;                            //next page is page + 1
 $lastpage = ceil($total_pages/$limit);        //lastpage is = total pages / items per page, rounded up.
 $lpm1 = $lastpage - 1;                        //last page minus 1

 /*
 Now we apply our rules and draw the pagination object.
 We're actually saving the code to a variable in case we want to draw it more than once.
 */
 $pagination = "";
 if($lastpage > 1)
 {
 $pagination .= "<div class=\"pagination\">";
 //previous button
 if ($page > 1)
 $pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
 else
 $pagination.= "<span class=\"disabled\">« previous</span>";

 //pages
 if ($lastpage < 7 + ($adjacents * 2))    //not enough pages to bother breaking it up
 {
 for ($counter = 1; $counter <= $lastpage; $counter++)
 {
 if ($counter == $page)
 $pagination.= "<span class=\"current\">$counter</span>";
 else
 $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
 }
 }
 elseif($lastpage > 5 + ($adjacents * 2))    //enough pages to hide some
 {
 //close to beginning; only hide later pages
 if($page < 1 + ($adjacents * 2))
 {
 for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
 {
 if ($counter == $page)
 $pagination.= "<span class=\"current\">$counter</span>";
 else
 $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
 }
 $pagination.= "...";
 $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
 $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
 }
 //in middle; hide some front and some back
 elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
 {
 $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
 $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
 $pagination.= "...";
 for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
 {
 if ($counter == $page)
 $pagination.= "<span class=\"current\">$counter</span>";
 else
 $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
 }
 $pagination.= "...";
 $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
 $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
 }
 //close to end; only hide early pages
 else
 {
 $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
 $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
 $pagination.= "...";
 for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
 {
 if ($counter == $page)
 $pagination.= "<span class=\"current\">$counter</span>";
 else
 $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
 }
 }
 }

 //next button
 if ($page < $counter - 1)
 $pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
 else
 $pagination.= "<span class=\"disabled\">next »</span>";
 $pagination.= "</div>\n";
 }
?>

 <?php
 while($row = mysql_fetch_array($result))
 {

 // Your while loop here

 }
 ?>
<?=$pagination?>

تطبيق CSS Style على الكود:

احفظ الكود التالي الى style.css تم اظف ضمن وسم <head> كما يظهر بالصورة:

div.pagination {
 padding: 3px;
 margin: 3px;
}

div.pagination a {
 padding: 2px 5px 2px 5px;
 margin: 2px;
 border: 1px solid #AAAADD;

 text-decoration: none; /* no underline */
 color: #000099;
}
div.pagination a:hover, div.pagination a:active {
 border: 1px solid #000099;

 color: #000;
}
div.pagination span.current {
 padding: 2px 5px 2px 5px;
 margin: 2px;
 border: 1px solid #000099;

 font-weight: bold;
 background-color: #000099;
 color: #FFF;
 }
 div.pagination span.disabled {
 padding: 2px 5px 2px 5px;
 margin: 2px;
 border: 1px solid #EEE;

 color: #DDD;
 }

النتيجة:

للحصول على استايلات اكثر لتلائم شكل موقعك اضغط هنا. يمكنك الاستفسار بالتعليق تحياتي و دمتم بخير، اخوكم محمد.