搜尋
首頁php教程php手册PHP分页实现(附效果图)

首先一个分页类,如下(摘自网络)可拷贝直接使用

<?php
/*
 * Created on 2013-12-3
 * 分页类
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
class Pagination {
	private $each_disNums; //每页显示的条目数
	private $nums; //总条目数
	private $current_page; //当前被选中的页
	private $sub_pages; //每次显示的页数
	private $pageNums; //总页数
	private $page_array = array (); //用来构造分页的数组
	private $subPage_link; //每个分页的链接
	private $subPage_type; //显示分页的类型
	/*
	__construct是SubPages的构造函数,用来在创建类的时候自动运行.
	@$each_disNums 每页显示的条目数
	@nums 总条目数
	@current_num 当前被选中的页
	@sub_pages 每次显示的页数
	@subPage_link 每个分页的链接
	@subPage_type 显示分页的类型

	当@subPage_type=1的时候为普通分页模式
	example: 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
	当@subPage_type=2的时候为经典分页样式
	example: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
	*/
	function __construct($each_disNums, $nums, $current_page, $sub_pages, $subPage_link, $subPage_type) {
		$this->each_disNums = intval($each_disNums);
		$this->nums = intval($nums);
		if (!$current_page) {
			$this->current_page = 1;
		} else {
			$this->current_page = intval($current_page);
		}
		$this->sub_pages = intval($sub_pages);
		$this->pageNums = ceil($nums / $each_disNums);
		$this->subPage_link = $subPage_link;
		$this->show_SubPages($subPage_type);
		//echo $this->pageNums."--".$this->sub_pages;
	}

	/*
	  __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
	 */
	function __destruct() {
		unset ($each_disNums);
		unset ($nums);
		unset ($current_page);
		unset ($sub_pages);
		unset ($pageNums);
		unset ($page_array);
		unset ($subPage_link);
		unset ($subPage_type);
	}

	/*
	  show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页
	 */
	function show_SubPages($subPage_type) {
		if ($subPage_type == 1) {
			$this->subPageCss1();
		}
		elseif ($subPage_type == 2) {
			$this->subPageCss2();
		}
	}

	/*
	  用来给建立分页的数组初始化的函数。
	 */
	function initArray() {
		for ($i = 0; $i < $this->sub_pages; $i++) {
			$this->page_array[$i] = $i;
		}
		return $this->page_array;
	}

	/*
	  construct_num_Page该函数使用来构造显示的条目
	  即使:[1][2][3][4][5][6][7][8][9][10]
	 */
	function construct_num_Page() {
		if ($this->pageNums < $this->sub_pages) {
			$current_array = array ();
			for ($i = 0; $i < $this->pageNums; $i++) {
				$current_array[$i] = $i +1;
			}
		} else {
			$current_array = $this->initArray();
			if ($this->current_page <= 3) {
				for ($i = 0; $i < count($current_array); $i++) {
					$current_array[$i] = $i +1;
				}
			}
			elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1) {
				for ($i = 0; $i < count($current_array); $i++) {
					$current_array[$i] = ($this->pageNums) - ($this->sub_pages) + 1 + $i;
				}
			} else {
				for ($i = 0; $i < count($current_array); $i++) {
					$current_array[$i] = $this->current_page - 2 + $i;
				}
			}
		}

		return $current_array;
	}

	/*
	 构造普通模式的分页
	 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
	 */
	function subPageCss1() {
		$subPageCss1Str = "";
		$subPageCss1Str .= "共" . $this->nums . "条记录,";
		$subPageCss1Str .= "每页显示" . $this->each_disNums . "条,";
		$subPageCss1Str .= "当前第" . $this->current_page . "/" . $this->pageNums . "页 ";
		if ($this->current_page > 1) {
			http://blog.csdn.net/tangcheng_ok/article/details/$firstPageUrl = $this->subPage_link . "1";
			http://blog.csdn.net/tangcheng_ok/article/details/$prewPageUrl = $this->subPage_link . ($this->current_page - 1);
			$subPageCss1Str .= "[首页] ";
			$subPageCss1Str .= "[上一页] ";
		} else {
			$subPageCss1Str .= "[首页] ";
			$subPageCss1Str .= "[上一页] ";
		}

		if ($this->current_page < $this->pageNums) {
			http://blog.csdn.net/tangcheng_ok/article/details/$lastPageUrl = $this->subPage_link . $this->pageNums;
			http://blog.csdn.net/tangcheng_ok/article/details/$nextPageUrl = $this->subPage_link . ($this->current_page + 1);
			$subPageCss1Str .= " [下一页] ";
			$subPageCss1Str .= "[尾页] ";
		} else {
			$subPageCss1Str .= "[下一页] ";
			$subPageCss1Str .= "[尾页] ";
		}

		echo $subPageCss1Str;

	}

	/*
	 构造经典模式的分页
	 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
	 */
	function subPageCss2() {
		$subPageCss2Str = "";
		$subPageCss2Str .= "当前第" . $this->current_page . "/" . $this->pageNums . "页 ";

		if ($this->current_page > 1) {
			http://blog.csdn.net/tangcheng_ok/article/details/$firstPageUrl = $this->subPage_link . "1";
			http://blog.csdn.net/tangcheng_ok/article/details/$prewPageUrl = $this->subPage_link . ($this->current_page - 1);
			$subPageCss2Str .= "  首页  ";
			$subPageCss2Str .= "  上一页  ";
		} else {
			$subPageCss2Str .= "  首页  ";
			$subPageCss2Str .= "  上一页  ";
		}

		$a = $this->construct_num_Page();
		for ($i = 0; $i < count($a); $i++) {
			$s = $a[$i];
			if ($s == $this->current_page) {
				$subPageCss2Str .= "  <span style='color:red;font-weight:bold;'>" . $s . "  ";
			} else {
				http://blog.csdn.net/tangcheng_ok/article/details/$url = $this->subPage_link . $s;
				$subPageCss2Str .= "  " . $s . "  ";
			}
		}

		if ($this->current_page < $this->pageNums) {
			http://blog.csdn.net/tangcheng_ok/article/details/$lastPageUrl = $this->subPage_link . $this->pageNums;
			http://blog.csdn.net/tangcheng_ok/article/details/$nextPageUrl = $this->subPage_link . ($this->current_page + 1);
			$subPageCss2Str .= "  下一页  ";
			$subPageCss2Str .= "  尾页  ";
		} else {
			$subPageCss2Str .= "  下一页  ";
			$subPageCss2Str .= "  尾页   ";
		}
		echo $subPageCss2Str;
	}
}
?>

在需要分页的php文件中

include_once ("Pagination.php");
//每页显示的条数
$pageSize = 10;
//总条目数
$pageTotal = $db->get_var("select count(*) from tb");
//每次显示的页数
$sub_pages = 10;
//得到当前是第几页
if (is_array($_GET) && count($_GET) > 0) {
	if (isset ($_GET["p"])) { //是否存在"id"的参数
		$pageCurrent = $_GET["p"];
	}
} else {
	$pageCurrent = 1;
}
$goodses = $db->get_results("SELECT g.id,* FROM tb as g INNER JOIN (select id from tb  order by updatetime desc limit " . ($pageCurrent -1) * $pageSize . ",10 )as g1 ON g.id=g1.id");

显示分页数据

<?php $subPages = new Pagination($pageSize, $pageTotal, $pageCurrent, $sub_pages, "index.php?p=", 2);?>

效果图:

注:本文的Pagination类来自网络,没有标注网址,在原代码的基础上进行了修改,如果涉及任何问题,请留言。在此感谢作者,并作出上述声明。

转载请注明出处:http://blog.csdn.net/tangcheng_ok


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器