Tuesday, March 17

Simple PHP MYSQL Pagination





1. Database Connection:
    Create connection.php file and put that php code (provided below) in it.

<?php
    $db_username = 'root'; // Your MYSQL Username.
    $db_password = ''; // Your MYSQL Password.
    $db_name = 'database_name_here'; // Your Database name.
    $db_host = 'localhost';
     
    $conDB = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('Error: Could not connect to database.');
?>


2. Pagination function:
    Let’s create pagination function and store it in your functions.php file.
   
<?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;";
        $lastlabel = "Last &rsaquo;&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.= "<li><a href='{$url}page=$lastpage'>{$lastlabel}</a></li>";
                }
             
            $pagination.= "</ul>";      
        }
         
        return $pagination;
    }
?>  


3. Displaying Database Records with pagination:

<?php
    include_once('connection.php');
    include_once('functions.php');
    
    $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 = "`records` ORDER BY `id` ASC"; // Change `records` according to your table name.
     
    $results = mysqli_query($conDB,"SELECT * FROM {$statement} LIMIT {$startpoint} , {$per_page}");
    
    if (mysqli_num_rows($results) != 0) {
        
        // displaying records.
        while ($row = mysqli_fetch_array($results)) {
            echo $row['name'] . '<br>';
        }
     
    } else {
         echo "No records are found.";
    }
    
     // displaying paginaiton.
    echo pagination($statement,$per_page,$page,$url='?');
?>


4. Simple CSS:
   
<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>


No comments:

Post a Comment