php分页使用sql语句的limit实现。分页时每页会有不同的内容和固定的条数。在实际应用中后端会计算出总页数并输出展示到前端,前端通过请求相应的页数,后端处理后并返回相应页数的内容。
一、分页关键词
当前页:每次要跳转到的页数
分页大小:每页显示的内容条数
总记录数:表中总共有的数据条数
总页数:总记录条数/分页大小 (ceil向上取整数)
二、分页公式
(page-1)*pagesize,pagesize
ps : (当前页-1)*分页大小,分页大小 假如用户表为user,sql语句:select * from user limit ($page-1)*$pagesize,$pagesize,比如每页取10条,
第1页:select * from user limit 0,10; (1-1)*10,10
第2页:select * from user limit 10,10 ; (2-1)*10,10
第3页:select * from user limit 30,10 ; (3-1)*10,10
第4页:select * from user limit 40,10 ; (4-1)*10,10
.....
三、分页类代码
dbh = $dbh;
$this -> sql = $sql;
$this -> url = $url;
$this -> pagesize = $pagesize;
$this -> page = intval($page);
if(empty($this->page)){
$this->page=1;
}
}
//分页数据sql
public function pages(){
if(empty($this -> pagesize)){
$this -> pagesize = 6;
}
$sql1 = $this->sql.' LIMIT '.($this->page-1)*$this->pagesize.','.$this->pagesize;
$res = $this -> dbh -> query($sql1);
return $res -> fetchAll();
}
//分页样式输出
public function page_nums (){
$sql = $this -> sql;
$res = $this -> dbh -> query($sql);
$res1 = $res -> fetchAll();
$allnum = count($res1);//总条数
$allpage = ceil($allnum/$this->pagesize);//总页数
if($allpage<2&&$allpage>0){
}else{
$p='';
$p.= '';
return $p;
}
}
} 调用:
$res = new page($dbh,$sql,$url,$pagesize=20,$page); $res1['page']= $res -> page_nums(); $res1['res'] = $res -> pages(); return $res1;
效果图:



