Pagination using core php with pdo mysql


First create a table

 

     

 CREATE TABLE `blogpost` (

  `id` int(11) NOT NULL,

  `title` text NOT NULL,

  `crDate` varchar(20) NOT NULL,

  `crEditdate` varchar(20) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

     

    

database.php

 

     

<?php 

class Database

{

private static $dbName = 'demo';

private static $dbHost = 'localhost';

private static $dbUsername = 'xxxxx';

private static $dbUserPassword = 'xxxxx';

private static $lan = 'utf8';

private static $con = null;



   public function _construct(){

	 die('Init function is not allowed');

	}



   public static function connect(){

	 if( null == self::$con){

	   try{

		   self::$con = new PDO("mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);

		    self::$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

		   }

		   	 

		catch(PDOException $e){

         die($e->getMessage());      			

    	}

	 }   

	

	return self::$con;

	} 

	public static function disconnect(){

	  self::$con = null;	

	}

		

}

class paging{

  public function paging_data($table_name , $wherecaluse  , $perpage ){

  	$pdo = database::connect();

	$sql = "SELECT count(*) FROM $table_name where $wherecaluse";

	$stmt_paging = $pdo->prepare($sql);

	$stmt_paging->execute();

	$number = $row_paging = $stmt_paging->fetch();

	$total_page=$number[0];

	$totalpages = ceil($total_page/$perpage);

	return $totalpages;

  }

}

    

?>

     

    
 

index.php

 

     

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Pagination using php </title>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>

<body>

<?php

include"database.php";

$table_name="blogpost";

$wherecaluse="1"; 

$obj = new paging();

$page = (isset($_GET['page']) && $_GET['page'] > 0) ? (int)$_GET['page'] : 1;

$perpage = 5;

$limit = ($page > 0) ? ($page*$perpage) - $perpage : 0;

$pdo = Database::connect();

$paging_result = $obj->paging_data($table_name,$wherecaluse , $perpage); 

?>

<div class="container">

 <table class="table table-striped table-bordered" style="margin-top:120px;">

                  <thead>

                    <tr class="danger">

                      <th>SN</th>

                      <th>Title <?php echo $totalpages; ?></th>

                    </tr>

                  </thead>

                  <tbody>

                  <?php

				   $pdo=Database::connect();

                   $sql = "SELECT * FROM blogpost ORDER by id DESC LIMIT {$limit} , {$perpage} ";

				   $stmt = $pdo->prepare($sql);

				   $stmt->execute();

				   if($stmt)

				   {

					  $sn=1;

					   while($row = $stmt->fetch(PDO::FETCH_ASSOC))

					   {

						?>

                        <tr>

                        	<td><?php echo $sn; ?></td>

                            <td><?php echo $row['title']; ?></td>

                        </tr>

                        <?php   

						$sn++;

					   }

				   }

				   else

				   {

					  ?>

                      <tr><td colspan="6"><P class="alert alert-info">No Record Found</P></td></tr>

                      <?php 

				   }

				   Database::disconnect();

                  ?>

                  </tbody>

            </table>   

    

</div>

            <div class="container" style="margin-top:20px;">

            <div class="col-sm-12 col-lg-12">

              <ul style="list-style-type:none;">

               <li style="display:inline-block;"><a href="?page=<?php $pagep=$page-1; echo $pagep;  ?>" class="btn btn-default"> << Pre</a></li>

			  <?php

                $totalpages;

				for($i=1; $i<=$paging_result; $i++)

				{

				  ?>

				  <li style="display:inline-block;"><a href="?page=<?php echo $i; ?>" class="btn btn-default"><?php echo $i; ?></a></li>

				  <?php	

				}

			  ?> 

              <li style="display:inline-block;"><a href="?page=<?php $pagen = $page+1; echo $pagen;?>" class="btn btn-default">next >></a></li>

              </ul>

            </div>

          </div>          

</body>

</html>