اولا الكود كالاتى : ("وسنقوم بشرحة بالتفصل ان شاء الله")::..
CODE
<?php
// Included file
include("config.php") ;
######################################################
## Start Paging System ##############################
#####################################################
// get page number
$get = $_GET['page'] ;
// set page to one if not set
if (!isset($get)){
$get = 1 ; }else{
$get = $_GET['page'] ; }
// Query for retrieve all data
$query = mysql_query("select * from test ") ;
// Maximum records in page
$max = 3 ;
// Counting Rows Number
$count = mysql_num_rows($query) ;
// Get Number of pages needed
$div = ceil($count/$max) ;
$rem = $count % $div ;
// if 0 remain from the division
if($rem == 0 ) {
$pages = $div ; } else {
$pages = $div + 1 ; }
// next and prev
$prev = $get - 1 ;
$next = $get + 1 ;
// Type Firt record link
if($get != 1){
echo "<a style='text-decoration: none; color: red; font-size: 12pt; font-weight: bold'
href='show.php?page=1'> [[First]] </a>" ; }
// Type Prev record link
if($get > 1) echo "<a style='text-decoration: none; color: blue; font-size: 12pt; font-weight: bold'
href='show.php?page=$prev'> [[Prev]] </a>" ;
// type pages
for ($i=1 ; $i <= $pages ; $i++){
if ($get == $i){
echo "<font size=4 color=violet><b>[$i] </b></font>" ; }else{
echo "<a style='text-decoration: none; color: red; font-size: 14pt; font-weight: bold'
href='show.php?page=$i'>$i</a> " ;}}
// Type Next record link
if($get < $div) echo "<a style='text-decoration: none; color: blue; font-size: 12pt; font-weight: bold'
href='show.php?page=$next'> [[Next]] </a>" ;
// Type Last record link
if($get != $pages){
echo "<a style='text-decoration: none; color: red; font-size: 12pt; font-weight: bold'
href='show.php?page=$pages'> [[Last]] </a>" ; }
echo "<br>" ;
// get limit value
$limit = ($get * $max) - $max ;
// Query for retrieve data with limit
$query2 = mysql_query("select * from test LIMIT $limit,$max ") ;
// Data from query
while ($row = mysql_fetch_array($query2)){
#######################################################
## End Of Paging System ##############################
#####################################################
echo $row['id']." - ".$row['test']."<br>" ; }
?>
طبعا الكود زى ما شايفين طويل شوية بس ساهل جدا
الان نبدأ بالشرح ::..
CODE
<?php
// Included file
include("config.php") ;
طبعا هنا نضمن ملف الاتصال بقاعدة البيانات "طبعا احنا عارفين دالة الاتصال بقاعدة البيانات" CODE
/ get page number
$get = $_GET['page'] ;
هذا الجزء يقوم بجلب رقم الصفحة ان وجد مثلا لو تم طلب الصفحة ::.. page.php?page=1
CODE
// set page to one if not set
if (!isset($get)){
$get = 1 ; }else{
$get = $_GET['page'] ; }
هنا نضع شرط اذا لم ينشأ المتغير page نضع قيمة افتراضية له و هى 1 اى للصفحة الاولى CODE
// Query for retrieve all data
$query = mysql_query("select * from test ") ;
هذه الكويرى للاتصال بالجدول و هو و لنفرض test CODE
// Maximum records in page
$max = 3 ;
هنا رقم اقصى عدد للبيانات فى الصفحة الواحدة
CODE
// Counting Rows Number
$count = mysql_num_rows($query) ;
الدالة تقوم بجلب عدد الصفوف فى الجدول اعتمادا على الكويرى السابق
CODE
// Get Number of pages needed
$div = ceil($count/$max) ;
$rem = $count % $div ;
طبعا هنا فى دالتين الاولى ::: الدالة الثانبة :::
% تقوم بجلب باقى القسمة لرقمين
و هذا الكود لجلب عدد الصفحات اللى نحتاجها
ceil لاخذ القيمة الاقرب لقيمة float عشرية
CODE
// if 0 remain from the division
if($rem == 0 ) {
$pages = $div ; } else {
$pages = $div + 1 ; }
لو ان القسمة بدون باقى اى القسمة منتهية يكون عدد الصفحات هو ناتج القسمة
اما لو فى باقى فان عدد الصفحات هو ناتج المعادلة الاولى مجموعا عليه واحد
CODE
// next and prev
$prev = $get - 1 ;
$next = $get + 1 ;
نضبط متغيرات الصفحة التالية و السابقة CODE
// Type Firt record link
if($get != 1){
echo "<a style='text-decoration: none; color: red; font-size: 12pt; font-weight: bold'
href='show.php?page=1'> [[First]] </a>" ; }
طبعا هنا نضع لينك للصفحة الاولى حيث ان رقم الصفحة لا يساوى الواحد CODE
// Type Prev record link
if($get > 1) echo "<a style='text-decoration: none; color: blue; font-size: 12pt; font-weight: bold'
href='show.php?page=$prev'> [[Prev]] </a>" ;
هذا كود للينك الصفحة السابقة معتمدا على المتغير السابق $prev
CODE
// type pages
for ($i=1 ; $i <= $pages ; $i++){
if ($get == $i){
echo "<font size=4 color=violet><b>[$i] </b></font>" ; }else{
echo "<a style='text-decoration: none; color: red; font-size: 14pt; font-weight: bold'
href='show.php?page=$i'>$i</a> " ;}}
هنا كود للصفحات و استخدمنا الدالة for التكرارية لعرض الصفحات و اذا كان رقم الصفحة هو الصفحة الحالية نضعه بدون رابط
CODE
// Type Next record link
if($get < $div) echo "<a style='text-decoration: none; color: blue; font-size: 12pt; font-weight: bold'
href='show.php?page=$next'> [[Next]] </a>" ;
// Type Last record link
if($get != $pages){
echo "<a style='text-decoration: none; color: red; font-size: 12pt; font-weight: bold'
href='show.php?page=$pages'> [[Last]] </a>" ; }
echo "<br>" ;
طبعا الكود السابق يوضح لينك الصفحة الاخيرة و الصفحة التالية معتمدا على المتغير اللى ذكرناه سابقا
CODE
// get limit value
$limit = ($get * $max) - $max ;
// Query for retrieve data with limit
$query2 = mysql_query("select * from test LIMIT $limit,$max ") ;
// Data from query
while ($row = mysql_fetch_array($query2)){
هنا نقوم بتحديد الليميت limit او القيمة اللى يبدأ عندها العد و هى عملية حسابية بسيطة " او مش مفهومة ارجو ابلاغى "
و طبعا الكويرى يجلب البيانات من قاعدة البيانات بتحديد القيمة الى اقصى عدد للصفحات
و الدالة while لجلب البيانات من الجدول
وبالله التوفيق