Tuesday, 9 September 2014

Pagination in php

save as function.php

<?php
function pagination($query,$per_page=10,$page=1,$url='?'){ 
    global $conDB;
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysqli_fetch_array(mysqli_query($conDB,$query));
    $total = $row['num'];
    $adjacents = "2";
    
    $prevlabel = "&lsaquo; Prev";
    $nextlabel = "Next &rsaquo;";
    
    $page = ($page == 0 ? 1 : $page);
    $start = ($page - 1) * $per_page;                             
    
    $prev = $page - 1;                        
    $next = $page + 1;
    
    $lastpage = ceil($total/$per_page);
    
    $lpm1 = $lastpage - 1; // //last page minus 1
    
    $pagination = "";
    if($lastpage > 1){ 
        $pagination .= "<ul class='pagination'>";
        $pagination .= "<li class='page_info'>Page {$page} of {$lastpage}</li>";
            
            if ($page > 1) $pagination.= "<li><a href='{$url}page={$prev}'>{$prevlabel}</a></li>";
            
        if ($lastpage < 7 + ($adjacents * 2)){ 
            for ($counter = 1; $counter <= $lastpage; $counter++){
                if ($counter == $page)
                    $pagination.= "<li><a class='current'>{$counter}</a></li>";
                else
                    $pagination.= "<li><a href='{$url}page={$counter}'>{$counter}</a></li>";                  
            }
        
        } elseif($lastpage > 5 + ($adjacents * 2)){
            
            if($page < 1 + ($adjacents * 2)) {
                
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++){
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page={$counter}'>{$counter}</a></li>";                  
                }
                $pagination.= "<li class='dot'>...</li>";
                $pagination.= "<li><a href='{$url}page={$lpm1}'>{$lpm1}</a></li>";
                $pagination.= "<li><a href='{$url}page={$lastpage}'>{$lastpage}</a></li>";
                    
            } elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
                
                $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                $pagination.= "<li class='dot'>...</li>";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page={$counter}'>{$counter}</a></li>";                  
                }
                $pagination.= "<li class='dot'>..</li>";
                $pagination.= "<li><a href='{$url}page={$lpm1}'>{$lpm1}</a></li>";
                $pagination.= "<li><a href='{$url}page={$lastpage}'>{$lastpage}</a></li>";    
                
            } else {
                
                $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                $pagination.= "<li class='dot'>..</li>";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page={$counter}'>{$counter}</a></li>";                  
                }
            }
        }
        
            if ($page < $counter - 1) $pagination.= "<li><a href='{$url}page={$next}'>{$nextlabel}</a></li>";
        
        $pagination.= "</ul>";      
    }
    
    return $pagination;
}
?>
save as paginate.php
<?php include("function.php"); ?>
<style>
ul.pagination {
    text-align:center;
    color:#829994;
}
ul.pagination li {
    display:inline;
    padding:0 3px;
}
ul.pagination a {
    color:#0d7963;
    display:inline-block;
    padding:5px 10px;
    border:1px solid #cde0dc;
    text-decoration:none;
}
ul.pagination a:hover,
ul.pagination a.current {
    background:#0d7963;
    color:#fff;
}
</style>

<?php
$db_username = 'root';
$db_password = '';
$db_name = 'construction';
$db_host = 'localhost';

$conDB = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('Error: Could not connect to database.');

$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]);
if ($page <= 0) $page = 1;

$per_page = 10; // Set how many records do you want to display per page.

$startpoint = ($page * $per_page) - $per_page;

$statement = "`country_name` ORDER BY `id` DESC"; // Change table name according to your database table.

$results = mysqli_query($conDB,"SELECT * FROM {$statement} LIMIT {$startpoint} , {$per_page}");

if (mysqli_num_rows($results) == 0) {
    
    echo "No records are found.";

} else {
    
    // displaying records.
 
   while ($row = mysqli_fetch_array($results)) {
        echo $row['name'] . '<br>';
    }

}

// displaying paginaiton.
echo pagination($statement,$per_page,$page);
?>

No comments:

Post a Comment