Q
PHP分頁類
4
A
回答
5
更多的搜索後,我決定之前,我使用frameworked版本我應該充分了解什麼是參與一個分頁程序。所以我自己建了一個。感謝您的建議,但!
2
你試過PEAR::Pager?用法示例here。
4
我建議Zend_Paginator,原因如下
- 它是鬆散耦合的,不需要整個庫。
- ZF社區比PEAR社區還要大,並且正在積極地對代碼進行安全審計,併發布維護版本。
- 它使用適配器模式分離數據源,並且文檔中有許多前端UI模式實現的示例。
0
你可以試試這個: Zebra_Pagination,通用,Twitter的引導兼容,分頁用PHP編寫的 檢查類別下面的鏈接: http://stefangabos.ro/php-libraries/zebra-pagination
1
// 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;
}
}
用途:
$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();
結果:
<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>
0
它很可能是您的SQL SELECT語句查詢可能會導致1000條記錄。但是在一個頁面上顯示所有結果並不是一個好主意。所以我們可以根據需要將這個結果分成許多頁作爲分頁類。與分頁類VERY EASY
分頁類
PAGINATE數據有助於產生尋呼
如何使用分頁類 訪問此鏈接瞭解更多信息 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 ?>
1
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">«</a> <a href="?page=' . ($page - 1) . '" title="Previous page">‹</a>' : '<span class="disabled">«</span> <span class="disabled">‹</span>';
// The "forward" link
$nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) . '" title="Next page">›</a> <a href="?page=' . $pages . '" title="Last page">»</a>' : '<span class="disabled">›</span> <span class="disabled">»</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. php分頁類
- 2. 分類分類php
- 3. PHP嵌套分頁/分頁
- 4. 的PHP分頁類和顯示問題
- 5. 從頁面刮價格分類Php
- 6. 分頁在php
- 7. PHP MYSQL分頁
- 8. PHP SQL分頁
- 9. 用php分頁?
- 10. 分頁在PHP
- 11. PHP AJAX分頁
- 12. 分頁和分類
- 13. PHP分類與子分類
- 14. 分頁類
- 15. Php動態頁面分頁
- 16. PHP分頁目標頁面
- 17. PHP或jQuery/PHP分頁
- 18. 分手PHP分頁鏈接
- 19. PHP:分類?
- 20. PHP分頁腳本
- 21. PHP和MySQL分頁
- 22. 優化PHP分頁
- 23. 分頁問題[PHP]
- 24. 蛋糕php分頁
- 25. PHP分頁倒掛
- 26. PHP分頁問題
- 27. PHP簡單分頁
- 28. 分頁在PHP MVC
- 29. 分頁PHP,htaccess的
- 30. PHP Ajax MySql分頁
這是最好的方法。 – Stann 2011-07-08 05:51:45
我使用庫是因爲我不想關心內部進程。 – cweiske 2012-05-03 06:38:18