Make Pagination with PHP


On the Internet, pagination is used for such things as displaying a limited number of results on search engine results pages, or showing a limited number of posts when viewing a forum thread. Pagination is used in some form in almost every web application to divide returned data and display it on multiple pages. Pagination also includes the logic of preparing and displaying the links to the various pages.

Correctly implementing pagination can be difficult.There are many different usability questions such as should “previous” and “next” links be included, how many links to pages should be displayed, and should there be a link to the first and last pages. Also ability to define the number of records displayed in a single page is useful.

So with pagination in PHP you can limit your query as you like and it will be decrease your loading time. To make pagination in your PHP, please try this script.

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 .= ”

“;

//previous button
if ($page > 1)
$pagination.= “« previous“;
else
$pagination.= “« previous“;

//pages
if ($lastpage < 7 + ($adjacents * 2))    //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= “$counter“;
else
$pagination.= “$counter“;
}
}
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.= “$counter“;
else
$pagination.= “$counter“;
}
$pagination.= “…”;
$pagination.= “$lpm1“;
$pagination.= “$lastpage“;
}
//in middle; hide some front and some back
elseif($lastpage – ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= “1“;
$pagination.= “2“;
$pagination.= “…”;
for ($counter = $page – $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= “$counter“;
else
$pagination.= “$counter“;
}
$pagination.= “…”;
$pagination.= “$lpm1“;
$pagination.= “$lastpage“;
}
//close to end; only hide early pages
else
{
$pagination.= “1“;
$pagination.= “2“;
$pagination.= “…”;
for ($counter = $lastpage – (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= “$counter“;
else
$pagination.= “$counter“;
}
}
}

//next button
if ($page < $counter – 1)
$pagination.= “next »“;
else
$pagination.= “next »“;
$pagination.= “\n”;
}
?>

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

// Your while loop here

}
?>

<?=$pagination?>

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s