Site 1 This link is the source code.
Site 2 This site customizes the above scripts
Site 3 This site shows how to implement the code above to your needs.
Take the time to learn this code. You will save yourself a lot of headaches.
I use this script for all my pagination needs.
Below is the basic setup I use for the above links..
style.css (Black Style theme from Site #2)
CODE
/* ========== Pagination ========== */
/*
Plugin Name: WP-Digg Style Paginator
Plugin URI: http://www.mis-algoritmos.com/2007/09/09/wp-digg-style-pagination-plugin-v-10/
Author: Victor De la Rocha
Author URI: http://www.mis-algoritmos.com
More style below...
http://www.mis-algoritmos.com/2007/03/16/some-styles-for-your-pagination/
*/
/*CSS black style pagination*/
div.pagination {
padding: 3px;
margin: 3px;
text-align:center;
color:#a0a0a0;
font-size:80%;
}
div.pagination a {
border: 1px solid #909090;
margin-right:3px;
padding:2px 5px;
background-image:url(bar.gif);
background-position:bottom;
text-decoration: none;
color: #c0c0c0;
}
div.pagination a:hover, div.meneame a:active {
border: 1px solid #f0f0f0;
background-image:url(barinv.gif);
background-color:#404040;
color: #ffffff;
}
div.pagination span.current {
margin-right:3px;
padding:2px 5px;
border: 1px solid #ffffff;
font-weight: bold;
background-color: #606060;
color: #ffffff;
}
div.pagination span.disabled {
margin-right:3px;
padding:2px 5px;
border: 1px solid #606060;
color: #808080;
}
/*
Plugin Name: WP-Digg Style Paginator
Plugin URI: http://www.mis-algoritmos.com/2007/09/09/wp-digg-style-pagination-plugin-v-10/
Author: Victor De la Rocha
Author URI: http://www.mis-algoritmos.com
More style below...
http://www.mis-algoritmos.com/2007/03/16/some-styles-for-your-pagination/
*/
/*CSS black style pagination*/
div.pagination {
padding: 3px;
margin: 3px;
text-align:center;
color:#a0a0a0;
font-size:80%;
}
div.pagination a {
border: 1px solid #909090;
margin-right:3px;
padding:2px 5px;
background-image:url(bar.gif);
background-position:bottom;
text-decoration: none;
color: #c0c0c0;
}
div.pagination a:hover, div.meneame a:active {
border: 1px solid #f0f0f0;
background-image:url(barinv.gif);
background-color:#404040;
color: #ffffff;
}
div.pagination span.current {
margin-right:3px;
padding:2px 5px;
border: 1px solid #ffffff;
font-weight: bold;
background-color: #606060;
color: #ffffff;
}
div.pagination span.disabled {
margin-right:3px;
padding:2px 5px;
border: 1px solid #606060;
color: #808080;
}
page.php **This is where the results are displayed**
CODE
<?PHP
session_start();
require_once 'db.php';//Connect to your DATABASE
include 'page_pagination.php';//Include the pagination for THIS page
?>
<link href="style.css" rel="stylesheet" type="text/css">
<table width="" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td width="" align="center" class=""><?PHP echo $pagination;?></td>
</tr>
<tr>
<td align="center" valign="top">
<?PHP
if ($total_pages == 0)
//$total_pages is queried from the include above (page_pagination.php')
{
//There are no results :(
echo '<p></p><p></p><b>Sorry, there are no results as of yet.<b><p></p><p></p>:(<p></p><p></p>';
}else{
//There are results :)
//$result is queried from the include above (page_pagination.php')
while($r = mysql_fetch_array($result))
{
//Print out the results
echo $r['info'].'<br>';
}
//End of while statement
}
//End of if statement
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</body>
</html>
session_start();
require_once 'db.php';//Connect to your DATABASE
include 'page_pagination.php';//Include the pagination for THIS page
?>
<link href="style.css" rel="stylesheet" type="text/css">
<table width="" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td width="" align="center" class=""><?PHP echo $pagination;?></td>
</tr>
<tr>
<td align="center" valign="top">
<?PHP
if ($total_pages == 0)
//$total_pages is queried from the include above (page_pagination.php')
{
//There are no results :(
echo '<p></p><p></p><b>Sorry, there are no results as of yet.<b><p></p><p></p>:(<p></p><p></p>';
}else{
//There are results :)
//$result is queried from the include above (page_pagination.php')
while($r = mysql_fetch_array($result))
{
//Print out the results
echo $r['info'].'<br>';
}
//End of while statement
}
//End of if statement
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</body>
</html>
page_pagination.php
CODE
<?PHP
//Source...http://www.strangerstudios.com/sandbox/pagination/diggstyle.php
//Customize the css...http://www.mis-algoritmos.com/2007/03/16/some-styles-for-your-pagination/
//Help to impliment...http://www.phpeasystep.com/phptu/29.html
//include('db.php'); // include your code to connect to DB.
$tbl_name="upload"; //****EDIT HERE**** your table name
$adjacents = 2; //****EDIT HERE**** How many adjacent pages should be shown on each side of active page?
/*
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 = "page.php"; //****EDIT HERE**** your file name (the name of the page referring to this file)
$limit = 7; //****EDIT HERE**** 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 * FROM $tbl_name WHERE `active` = 1 ORDER BY `date` DESC LIMIT $start, $limit"; //****EDIT HERE**** you need to edit... WHERE `active` = 1 ORDER BY `date` DESC
$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";
}
?>
//Source...http://www.strangerstudios.com/sandbox/pagination/diggstyle.php
//Customize the css...http://www.mis-algoritmos.com/2007/03/16/some-styles-for-your-pagination/
//Help to impliment...http://www.phpeasystep.com/phptu/29.html
//include('db.php'); // include your code to connect to DB.
$tbl_name="upload"; //****EDIT HERE**** your table name
$adjacents = 2; //****EDIT HERE**** How many adjacent pages should be shown on each side of active page?
/*
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 = "page.php"; //****EDIT HERE**** your file name (the name of the page referring to this file)
$limit = 7; //****EDIT HERE**** 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 * FROM $tbl_name WHERE `active` = 1 ORDER BY `date` DESC LIMIT $start, $limit"; //****EDIT HERE**** you need to edit... WHERE `active` = 1 ORDER BY `date` DESC
$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";
}
?>
I hope this helps.