PHP分页设计

一、分页类设计Page.php

<?php

class Page {

public $pageSize=6;//每页显示记录数

public $res;  //记录集

public $rowCount;//记录总数数

public $pageNow=1;  //当前页

public $pageCount=1;  //总页数

public $navigate;   //导航

public $url;    //地址

public $firstRow;  //每页显示的第一条记录

public $rollPage;  //分栏每页显示页数

public $startNum;   //【1】

public $endNum;

public function setNav(){

$navigate="";

//本导航的起始页

if($this->startNum>1){

$jump=$this->startNum-$this->rollPage;

//$nav=$this->url."/pageNow/$jump";

$navigate.= "<a href=‘{$this->url}?pageNow=$jump‘><<</a>&nbsp;&nbsp;";

}

for($start=$this->startNum;$start<=$this->endNum;$start++)

{

$navigate.="<a href=‘{$this->url}?pageNow=$start‘>[{$start}]</a>";

}

if($this->endNum<$this->pageCount)

{

$jump=$this->startNum+$this->rollPage;

$navigate.= "<a href=‘{$this->url}?pageNow=$jump‘>>></a>&nbsp;&nbsp;";

}

$navigate.="第".$this->pageNow."页/共".$this->pageCount."页";

$this->navigate=$navigate;

}

public function setPage($url,$pageNow,$rowCount,$pageSize=6,$rollPage=4){

$this->url=$url;

$this->pageNow=$pageNow;

$this->rowCount=$rowCount;

$this->pageSize=$pageSize;

$this->rollPage=$rollPage;

$this->pageCount=ceil($this->rowCount/($this->pageSize+0.0));

$this->firstRow=($this->pageNow-1)*$this->pageSize;

$this->startNum=floor(($this->pageNow-1)/$this->rollPage)*$this->rollPage+1;

$this->endNum=$this->startNum+$this->rollPage-1;

if($this->endNum>$this->pageCount)

{

$this->endNum=$this->pageCount;

}

if($rowCount==0){

$this->pageNow=1;

$this->rollPage=1;

$this->firstRow=1;

$this->pageCount=1;

}

$this->setNav();  //字符串存储导航

}

}

?>

二、SqlHelper.class.php定义分页显示方法

public function excute_dql_page($sql1,$sql2,&$page){

//数据表信息分页

//sql1数据,sql2求行数

$result=mysql_query($sql1,$this->conn)or die(mysql_errno());

$arr=array();

while($row=mysql_fetch_assoc($result)){

$arr[]=$row;

}

mysql_free_result($result);

$result=mysql_query($sql2,$this->conn) or die(mysql_errno());

if($row=mysql_fetch_row($result)){

$page->pageCount=ceil($row[0]/$page->pageSize);

$page->rowCount=$row[0];

}

mysql_free_result($result);

//实现导航条

$page->res_array=$arr;   //数组存储记录集

$fenyePage->setNav();

return $arr;

}

三、使用分页(userList.php)

<?php

header("content-type:text/html;charset=utf-8");

require_once ‘SQLHelper.class.php‘;

require_once ‘UserService.class.php‘;

echo"用户信息表<br/>";

echo"<table border=1 width=600px><tr><th>id</th><th>name</th><th>删除</th><th>修改</th></tr>";

//创建fenyePage并设置属性值

$page=new Page();

$page->url="userList.php";

$page->pageNow=1;

if(isset($_GET[‘pageNow‘])){

$page->pageNow=$_GET[‘pageNow‘];

}

//创建Service负责产生一个记录集(分页后的)

$page->setPage($url,$pageNow);

$userService=new UserService();

$userService->getUserListByPage($fenyePage);

foreach ($page->res_array as $row){

$id=$row[‘id‘];

echo"<tr><td>{$row[‘id‘]}</td><td>{$row[‘name‘]}</td><td><a href=‘userProcess.php?action=delete&id=$id‘>删除</a></td><td><a href=‘updateUserUI.php?id=$id‘>修改</a></td></tr>";

//print_r($row[‘id‘]);

}

echo"</table>";

echo $fenyePage->navigate;

?>

<form action="userList.php" method="get">

到第 <input type="text" size="1" name="pageNow" />页<input type="submit" value="确定"/>

</form>

时间: 2024-08-29 13:16:28

PHP分页设计的相关文章

Angular简易分页设计

之前网站的后台管理为了图快,把Jquery写的前台页面使用的分页插件,套到Angular中使用.现在后台的小编说这东西有时候翻页失败,而插件代码十分复杂,无法定位bug进行修改,也无法保证修改后不会出现别的bug,干脆舍弃插件,自己写一个. 设计时,我大概看了一下插件的代码,基本思路就是通过数据处理判断,然后通过字符串拼接,生成新的dom元素.而我们需要的分页是在Angular中运行,应当尽量避免这种做法.怎么简单怎么来,我们固定一次只显示7个页码,不需要动态增删元素. <ul> <li

Hbase 分页设计

hbase 数据获取方式 直接根据 rowkey 查找,速度最快 scan,指定 startrowkey.endrowkey 和 limit获取数据,在 rowkey 设计良好的情况下,效率也不错 全表扫,强烈不推荐这种做法,效率极差,在线业务不用考虑这种方式 hbase 数据排序怎么做? 我觉得这个分两种情况,一是数据量比较少,业务上每次拉取所有的数据,可以在客户端做排序,二是数据比较多,需要分页,这种情况下客户端做显然不合适,因为要从服务器拉取所有数据,排序完成,获取某一页,剩余的数据全都不

分页设计

#!/usr/bin/python # -*- coding: UTF-8 -*- import tornado.web from controllers import home setting = { "template_path":"views",# 模板路径配置 "static_path":"statics", # 静态文件配置# 静态文件配置 #"static_url_prefix":"/

JSP通用分页框架

写一个通用的分页框架,这样一个项目里面如果想做分页,只需要改动少数参数就可以实现分页处理了,这样写起来会简单很多 一.分页类 既然要分页那么我们就要考虑建一个通用的分页类,里面需要的参数一般有: 总页数 totalPage 总共记录数 totalRecord 每页显示数 pageSize 当前页pageIndex 承载当前页数据的集合 List datas 完整代码:Page.java import java.util.List; public class Pager<E> { /** * 总

设备资源管理系统-分页

设备资源管理系统-分页 分页设计 userindex.jsp userList.jsp Ajax框架 要求: 1.需要2个页面(XXXindex.jsp,XXXlist.jsp) 2.一个jsp页面中使用2个form对象,分别为Form1和Form2. 3.另一个jsp的页面中第一个jsp页面的form2的内容. 原理: 提交过程,实质是提交Form1的参数,使用Fom1的参数,查询后台数据,返回结果,将结果在XXXlist.jsp上显示,用XXXlist.jsp的内容替换XXXIndex.js

【asp.net】asp分页&lt;牛腩&gt;

前言 在我们平时浏览网页时,都会遇到样式各异的分页,这样做既美观,又减少了系统的压力,一举多得.鉴于牛腩新闻发布系统中,牛腩老师只讲了分页的方法,并举了个例子,并没有真正将分页融合到系统中,今天我就将分页融合到系统的方法分享给大家. 假分页 顾名思义,这个不是真正的分页,而是先选择出所有的记录后在进行分页.如下: 首先,我们打开gridview控件的属性,将gridview的AllowPaging属性改为True,然后,可以更改的它的PageSize属性,来控制每页显示的数据.最后,打开该控件的

Tornado-基于正则的路由和动态分页

概览 这一小节涉及了三部分内容: 1.动态分页设计 2.基本的路由系统以及基于正则的路由 3.模块引擎的继承和导入 4.web项目文件夹和ReuquestHandler的分类 5.跨站脚本攻击 文件结构 Python代码 start.py from tornado.ioloop import IOLoop import tornado.web from controllers import account from controllers import home from controllers

Entity Framework分页扩展

Entity Framework分页在我初入门时总是困扰这我,无论是SQL分页还是Entity Framework的分页,总是显得那么麻烦,因此对于Entity Framework单独封装了分页. 一.分页原理 对于分页本质是针对现有数据进行分段展示,如图: 对于这12条数据属于筛选后的数据,针对筛选后的数据我们再进行分页,PageSize(每页数量),最后一页数量>0 && <PageSize则算一页. 二.分页设计(对于设计并不是很专业,马马虎虎)  最终我们通过PageL

Linux的内存分页管理【转】

内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存分页的概念. 内存 简单地说,内存就是一个数据货架.内存有一个最小的存储单位,大多数都是一个字节.内存用内存地址(memory address)来为每个字节的数据顺序编号.因此,内存地址说明了数据在内存中的位置.内存地址从0开始,每次增加1.这种线性增加的存储器地址称为线性地址(linear address).为了方便,我们用十六进制数来表示内存地址,比