PHP pagination class

I am looking for the pg pgination class, I used a pretty simple one in the past and it is no longer supported.

I was wondering if anyone has any recommendations?

It seems pointless to build your own when there are probably so many good ones there.

+4
source share
7 answers

After a larger search, I decided that before I use the wireframe version, I must fully understand what is involved in the paginator. So I built it myself. Thanks for the suggestions though!

+5
source

I suggest Zend_Paginator for the following reasons

  • It is loosely coupled and does not require the entire library.
  • The ZF community is larger than the PEAR community, and actively conducts security checks in code and releases service versions.
  • It separates data sources using an adapter template, and the documentation contains numerous examples of the implementation of front-end user interface templates.
+4
source

Have you tried PEAR :: Pager ? Use cases here .

+2
source
// pagination class class Pagination { // database handle private $dbh; // total records in table private $total_records; // limit of items per page private $limit; // total number of pages needed private $total_pages; // first and back links private $firstBack; // next and last links private $nextLast; // where are we among all pages? private $where; public function __construct($dbh) { $this->dbh = $dbh; } // determines the total number of records in table public function totalRecords($query, array $params) { $stmt = $this->dbh->prepare($query); $stmt->execute($params); $this->total_records = $stmt->fetchAll(PDO::FETCH_COLUMN)[0]; if (!$this->total_records) { echo 'No records found!'; return; } } // sets limit and number of pages public function setLimit($limit) { $this->limit = $limit; // determines how many pages there will be if (!empty($this->total_records)) { $this->total_pages = ceil($this->total_records / $this->limit); } } // determine what the current page is also, it returns the current page public function page() { $pageno = (int)(isset($_GET['pageno'])) ? $_GET['pageno'] : $pageno = 1; // out of range check if ($pageno > $this->total_pages) { $pageno = $this->total_pages; } elseif ($pageno < 1) { $pageno = 1; } // links if ($pageno > 1) { // backtrack $prevpage = $pageno -1; // 'first' and 'back' links $this->firstBack = "<div class='first-back'><a href='$_SERVER[PHP_SELF]?pageno=1'>First</a> <a href='$_SERVER[PHP_SELF]?pageno=$prevpage'>Back</a></div>"; } $this->where = "<div class='page-count'>(Page $pageno of $this->total_pages)</div>"; if ($pageno < $this->total_pages) { // forward $nextpage = $pageno + 1; // 'next' and 'last' links $this->nextLast = "<div class='next-last'><a href='$_SERVER[PHP_SELF]?pageno=$nextpage'>Next</a> <a href='$_SERVER[PHP_SELF]?pageno=$this->total_pages'>Last</a></div>"; } return $pageno; } // get first and back links public function firstBack() { return $this->firstBack; } // get next and last links public function nextLast() { return $this->nextLast; } // get where we are among pages public function where() { return $this->where; } } 

Using:

 $pagination = new Pagination($dbh); $pagination->totalRecords('SELECT COUNT(*) FROM `photos` WHERE `user` = :user', array(':user' => $_SESSION['id'])); $pagination->setLimit(12); $pagination->page(); echo $pagination->firstBack(); echo $pagination->where(); echo $pagination->nextLast(); 

Result:

 <div class='first-back'><a href='/xampp/web_development/new_study_2014/imagebox2016/app/public/test.php?pageno=1'>First</a> <a href='/xampp/web_development/new_study_2014/imagebox2016/app/public/test.php?pageno=3'>Back</a></div> <div class='page-count'>(Page 4 of 6)</div> <div class='next-last'><a href='/xampp/web_development/new_study_2014/imagebox2016/app/public/test.php?pageno=5'>Next</a> <a href='/xampp/web_development/new_study_2014/imagebox2016/app/public/test.php?pageno=6'>Last</a></div> 
+1
source
 public function make_pagination() { $total = 0; $query = "SELECT COUNT(downloads.dn_id) FROM downloads WHERE downloads.dn_type = 'audios'"; $stmt = $this->conn->prepare($query); $stmt->execute(); $total = $stmt->fetchColumn(); //echo 'row_count = ' . $total; // How many items to list per page $limit = 11; // How many pages will there be $pages = ceil($total / $limit); // What page are we currently on? $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array( 'options' => array( 'default' => 1, 'min_range' => 1, ), ))); // Calculate the offset for the query $offset = ($page - 1) * $limit; // Some information to display to the user $start = $offset + 1; $end = min(($offset + $limit), $total); // The "back" link $prevlink = ($page > 1) ? '<a href="?page=1" title="First page">&laquo;</a> <a href="?page=' . ($page - 1) . '" title="Previous page">&lsaquo;</a>' : '<span class="disabled">&laquo;</span> <span class="disabled">&lsaquo;</span>'; // The "forward" link $nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) . '" title="Next page">&rsaquo;</a> <a href="?page=' . $pages . '" title="Last page">&raquo;</a>' : '<span class="disabled">&rsaquo;</span> <span class="disabled">&raquo;</span>'; // Display the paging information echo '<div id="paging"><p>'.$prevlink.' Page '.$page.' of '.$pages. ' pages'. $nextlink.' </p></div>'; //prepare the page query $query2 = " SELECT * FROM downloads, map_artists, song_artists WHERE map_artists.dn_id = downloads.dn_id AND song_artists.artist_id = map_artists.artist_id AND downloads.dn_type = 'audios' GROUP BY downloads.dn_id ORDER BY downloads.dn_time DESC LIMIT :limit OFFSET :offset "; $stmt2 = $this->conn->prepare($query2); $stmt2->bindParam(':limit', $limit, PDO::PARAM_INT); $stmt2->bindParam(':offset', $offset, PDO::PARAM_INT); $stmt2->execute(); // Do we have any results? if ($stmt2->rowCount() > 0) { // Define how we want to fetch the results $stmt2->setFetchMode(PDO::FETCH_ASSOC); $iterator = new IteratorIterator($stmt2); // Display the results foreach ($iterator as $row) { echo '<p>'. $row['dn_title'].' - '. $row['artist_name'].'</p>'; } } else { echo '<p>No results could be displayed.</p>'; } } 
+1
source

you can try the following: Zebra_Pagination, generic, Twitter Bootstrap compatible, pagination class written in PHP check the link below: http://stefangabos.ro/php-libraries/zebra-pagination

0
source

Perhaps your SELECT SELECT 1000 query may result in thousands of records. But do not show all the results on one page. Thus, we can divide this result into many pages as required as a pagination class.

PAGENTATE PAGINATION VERY EASY DATA

the pagination class helps generate paging

How to use the pagination class follow this link for more information http://utlearn.com/2017/02/15/pagination-class-use-pagination-class/

 <?php /** * @package pagination class * @version 1.0 */ /* @class Name: pagination @Author: Ahmed Mohamed @Version: 1.0 @Author URI: https://www.fb.com/100002349977660 @Website URI: http://www.utlearn.com @class page URI: http://utlearn.com/2017/02/15/pagination-class-use-pagination-class */ include_once 'libs/config.php'; include_once 'libs/Database.php'; include_once 'libs/Model.php'; include_once 'libs/pagination.php'; if(!empty($_GET["page"]) and is_numeric($_GET["page"])){ $page = htmlspecialchars(strip_tags($_GET["page"])); } else { $page = 1; } // news = table name / you page URL / current page / true or false for full query // its false i just use table name $pag = new pagination("news", URL."?page=", 3, $page, false); $pagination = $pag->pagination(); $data = $pag->data(); ?> <news> <?php foreach($data as $news){ ?> <header><h1><?=$news->title ?></h1> | <span><?=$news->date ?></span></header> <div> <?=$news->content ?> </div> <?php } ?> </news> <?=$pagination ?> 
0
source

Source: https://habr.com/ru/post/1304409/


All Articles