您的位置:首页 > 编程语言 > PHP开发

一个简单的PHP分页类

2017-03-23 13:45 615 查看
PHP分页类代码:

<?php
/**
* Created by PhpStorm.
* User: hongqiang
* Date: 2017/1/5
* Time: 9:38
*
*   1. 总数
*   2. 每页显示多少条
*
*
*/

//分页类
class Page{
private $total;   //总记录数
private $nums;    //每页显示的条数
private $pages;   //总页数
private $cpage;   //当前页
private $url;     //当前url

public function __construct($total, $nums)
{
$this->total = $total;
$this->nums = $nums;
$this->pages = $this->getPages();
$this->url = $this->setUrl();

//获取当前页
$this->cpage = !empty($_GET['page']) ? $_GET['page'] : $this->pages;
}

//获取URL
private function setUrl(){
$url = $_SERVER['REQUEST_URI'];    //获取当前url带参数的

//判断是都有问号,有?说明有参数
if (strstr($url, "?")){
//使用parse_url函数将URL分成path和query两个部分
$arr = parse_url($url);

//如果有query下标在,说明有参数
if (isset($arr['query'])){
//使用parse_str函数将参数$page=5$page=6变成$output['page']=5  $output['page']=6
parse_str($arr['query'], $output);
}

//删去数组中的下标是page的
unset($output['page']);
//再使用http_build_query将关联数组变成参数字符串
$url = $arr['path'].'?'.http_build_query($output);
}else{
$url .= "?";
}
return $url;
}

//获取页数
private function getPages(){
return ceil($this->total/$this->nums);    //ceil函数为进1取整  ceil(3.1)=4
}

private function first(){
//如果当前页是第一页,则不显示这些
if ($this->cpage > 1){
$prev = $this->cpage - 1;

return '<a href="'.$this->url.'&page=1">首页</a>  <a href="'.$this->url.'&page='.$prev.'">上一页</a>';
}else{
return "";
}
}

private function flist(){
$list = "";
$num = 4;
//当前页之前的列表
for ($i=$num; $i>=1; $i--){
$page = $this->cpage - $i;

if ($page >= 1){
$list .= ' <a href="'.$this->url.'&page='.$page.'">'.$page.'</a> ';
}else{
continue;
}
}
//当前页
$list .= ' ';
$list .= $this->cpage;
$list .= ' ';
//当前页之后的列表
for ($i=1; $i<=$num; $i++){
$pag
4000
e = $this->cpage + $i;
//如果在页数之内的显示
if ($page <= $this->pages){
$list .= ' <a href="'.$this->url.'&page='.$page.'">'.$page.'</a> ';
}else {
break;
}
}

return $list;
}

private function last(){
if ($this->cpage < $this->pages){
$next = $this->cpage + 1;

return '<a href="'.$this->url.'&page='.$next.'">下一页</a>  <a href="'.$this->url.'&page='.$this->pages.'">末页</a>';
}else{
return "";
}

}

//从多少条开始
public function start(){
return ($this->cpage - 1)*$this->nums + 1;
}

//从多少条结束
private function end(){
return min($this->cpage*$this->nums, $this->total);
}

//当前页显示的记录数
private function currnum(){
return $this->end()-$this->start()+1;
}

//调用这条方法就可以使用分页
function fpage(){
$arr = func_get_args();  //获取所有的参数

$fpage="";

$list[0] = " 总{$this->total}条记录 ";
$list[1] = " 本页显示".$this->currnum()."条记录 ";
$list[2] = " 从".$this->start()."-".$this->end()."条 ";
$list[3] = " {$this->cpage}/{$this->pages} ";
$list[4] = " ".$this->first()." ";
$list[5] = " ".$this->flist()." ";
$list[6] = " ".$this->last()." ";

if (count($arr) < 1){
$arr = array(0, 1, 2, 3, 4, 5, 6);
}

foreach ($arr as $n){
$fpage .= $list[$n];
}

return $fpage;
}
}

?>


应用实例:

<?php
/**
* Created by PhpStorm.
* User: hongqiang
* Date: 2017/1/5
* Time: 9:37
*/
header("content-type:text/html; charset=utf-8");

session_start();
include ("connect_db.php");
include ("page.class.php");

if ($_SESSION['permission'] == null){
header("Location::error.html");
exit;
}

//链接数据库
$conn = db_connect();

$sql = "select count(*) as total from upfiles";
$result = $conn -> query($sql);
$data = mysqli_fetch_array($result);

//创建分页对象
$page = new Page($data['total'], 10);

//执行sql
$sql = "select file_id, file_name, file_path, file_owner, file_time, file_classification, file_discription, file_size
from upfiles ORDER BY file_id limit {$page->start()},10";

$result = $conn -> query($sql);
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title></title>
</head>
<body>
<div align="center">
<br />
<div>
<br />
<font face="Georgia, Times New Roman, Times, serif" size="4" color="#A4B8F2"> You are here: Fetal ECG Data </font>
</div>
<br />
<hr width="50%" id="hr_home"/>
<br /><br />
<table border="2" width="80%" align="center" cellspacing="2px" cellpadding="2px">

<tr>
<th id="form1_D">ID</th>
<th id="form1_D">NAME</th>
<th id="form1_D">PATH</th>
<th id="form1_D">OWNER</th>
<th id="form1_D">TIME</th>
<th id="form1_D">CATEGORY</th>
<th id="form1_D">DISCRIPTION</th>
<th id="form1_D">SIZE</th>
</tr>
<?php
while($row = mysqli_fetch_array($result, MYSQLI_NUM)){
?>
<tr>
<td id="form2_1"><?php echo $row[0]; ?></td>
<td id="form2_1"><a href='detail.php?id=<?php echo $row[0]; ?>'><?php echo $row[1]; ?></a></td>
<td id="form2_1"><?php echo $row[2]; ?></td>
<td id="form2_1"><?php echo $row[3]; ?></
aafe
td>
<td id="form2_1"><?php echo $row[4]; ?></td>
<td id="form2_1"><?php echo $row[5]; ?></td>
<td id="form2_1"><?php echo $row[6]; ?></td>
<td id="form2_1"><?php echo $row[7]; ?></td>
</tr>
<?php
}
?>

<tr><td colspan="8" align="right" id="form2_1"><?php echo $page->fpage(); ?></td></tr>
</table>
</div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 分页 class