1. mysql 自我复制

insert into 表名(值,,,) select 值,,, from 表名;

2.打印出页码的超链接—改进

<?phpif($pageNow>1){$prePage = $pageNow-1;echo "<a href='empList.php?pageNow=$prePage'>上一页</a>&nbsp;&nbsp;";}echo "当前页{$pageNow}/共{$pageCount}&nbsp;&nbsp;";if($pageNow<$pageCount){$nextPage = $pageNow+1;echo "<a href='empList.php?pageNow=$nextPage'>下一页</a>&nbsp;&nbsp;";}echo "<br/><br/>";
?><form action="">跳转到:<input type="text" name="pageNow"/><input type="submit" value="Go">
<form>


3. 分层开发模式:




SqlHelper.class.php<?phpclass SqlHelper{public $conn;public $dbname = 'test';public $username = 'root';public $password = '123456';public $host = 'localhost';public function __construct(){$this->conn = new MySQLi($this->host,$this->username,$this->password,$this->dbname);if($this->conn->connect_error){die('connect error:' . $this->conn->connect_error);}}//执行 dql 语句public function execute_dql($sql){$res = $this->conn->query($sql) or die($this->conn->error);return $res;}//执行 dml 语句public function execute_dml($sql){$b = $this->conn->query($sql);if(!$b){return 0;}else{if($this->conn->affected_rows>0){return 1;}else{return 2; //没有行受影响}}}//关闭连接的方法public function close_connect(){if(!empty($this->conn)){}}
}
Admin.class.php<?php//它的一个对象实例,就表示admin表的一条记录
class Admin
{private $id;    //每个字段为一个成语属性private $name;private $password;public function getId(){return $this->id;}public function getName(){return $this->name;}public function getPassword(){return $this->password;}public function setId($id){$this->id = $id;}public function setName($name){$this->name = $name;}public function setPassword($password){$this->password = $password;}
}
AdminService.class.php<?phprequire_once 'SqlHelper.class.php';
//该类是一个业务逻辑处理类,主要完成对amdin表的操作class AdminService
{//提供一个验证用户是否合法的方法public function checkAdmin($id,$password){$sql = "select password,name from admin where id=$id;";//创建一个 SqlHelper 对象$sqlHelper = new SqlHelper();$res = $sqlHelper->execute_dql($sql);if($row = $res->fetch_assoc()){//比对密码if($password == $row['password']){return $row['name'];}}//释放资源$res->free();$sqlHelper->close_connect();return false;}
}
loginProcess.php<?php
require_once 'AdminService.class.php';$id = $_POST['id'];$password = $_POST['password'];//实例化一个AdminService方法
$adminService = new AdminService();
if($name = $adminService->checkAdmin($id,$password)){//合法header("Location:empManage.php?name=$name");exit();
}else{//非法header('Location:login.php?errno=1');exit();
}

4. 使用分层模式来完成雇员信息分页功能

EmpService.class.php<?php//一个函数可以获取共有多少页require_once 'SqlHelper.class.php';class EmpService
{function getPageCount($pageSize){//需要查询 $rowCount$sql = "select count(id) from emp;";$sqlHelper = new SqlHelper();$res = $sqlHelper->execute_dql($sql);//这样就可以计算 $pageCountif($row = $res->fetch_row()){$pageCount = ceil($row[0]/$pageSize);}//释放资源$res->free();//关闭连接$sqlHelper->close_connect();return $pageCount;}//一个函数可以获取应当显示的雇员信息public function getEmpListByPage($pageNow,$pageSize){$sql = "select * from emp limit " . ($pageNow - 1)*$pageSize . ",$pageSize";$sqlHelper = new SqlHelper();$res = $sqlHelper->execute_dql($sql);//关闭连接$sqlHelper->close_connect();return $res;}
}
SqlHelper.class.php<?phpclass SqlHelper{public $conn;public $dbname = 'test';public $username = 'root';public $password = '123456';public $host = 'localhost';public function __construct(){$this->conn = new MySQLi($this->host,$this->username,$this->password,$this->dbname);if($this->conn->connect_error){die('connect error:' . $this->conn->connect_error);}}//执行 dql 语句public function execute_dql($sql){$res = $this->conn->query($sql) or die($this->conn->error);return $res;}public function execute_dql2($sql){$arr = array();$res = $this->conn->query($sql) or die($this->conn->error);//把$res = >$arrwhile($row = $res->fetch_row()){$arr[] = $row;}//这里就可以立即关闭资源$res->free();return $arr;}//执行 dml 语句public function execute_dml($sql){$b = $this->conn->query($sql);if(!$b){return 0;}else{if($this->conn->affected_rows>0){return 1;}else{return 2; //没有行受影响}}}//关闭连接的方法public function close_connect(){if(!empty($this->conn)){}}
}
empList.php<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head><body>
<?php require_once 'EmpService.class.php'; //显示所有用户的信息(表格) //查询数据库 $mysqli = new MySQLi('localhost','root','123456','test'); if($mysqli->connect_error){ die('connect error' . $mysqli->connect_error); } $mysqli->set_charset('utf8') or die($mysqli->error); $pageSize = 6; $rowCount = 0; $pageNow = 1; if(!empty($_GET['pageNow'])){ $pageNow = $_GET['pageNow']; } //创建 EmpService 对象实例 $empService = new EmpService(); //调用 getPageCount 方法,获取到共有多少页 $pageCount = $empService->getPageCount($pageSize); //调用getEmpListBYPage 获取到应当显示的雇员列表 $res2 = $empService->getEmpListByPage($pageNow,$pageSize); /*$sql = "select * from emp limit " . ($pageNow - 1)*$pageSize . ",$pageSize";*/ //var_dump($sql);die(); //$sql = "select * from emp limit 0,2;"; //$res2 = $mysqli->query($sql); if(!$res2){ die($mysqli->error); } while($row = $res2->fetch_row()){ $rows[] = $row; } $res2->free(); $mysqli->close(); ?>
<h1>雇员信息列表</h1>
<table border="1" cellpadding="0" cellspacing="0" width="80%"><tr><th>id</th><th>name</th><th>grade</th><th>email</th><th>salary</th><th>操作</th></tr><?php foreach($rows as $row):?><tr><td><?php echo $row[0];?></td><td><?php echo $row[1];?></td><td><?php echo $row[2];?></td><td><?php echo $row[3];?></td><td><?php echo $row[4];?></td><td><a href="">删除用户</a>|<a href="">修改用户</a></td></tr><?php endforeach;?>
</table>
<?php if($pageNow>1){ $prePage = $pageNow-1; echo "<a href='empList.php?pageNow=$prePage'>上一页</a>&nbsp;&nbsp;"; } echo "当前页{$pageNow}/共{$pageCount}&nbsp;&nbsp;"; if($pageNow<$pageCount){ $nextPage = $pageNow+1; echo "<a href='empList.php?pageNow=$nextPage'>下一页</a>&nbsp;&nbsp;"; } echo "<br/><br/>"; ?><form action="">跳转到:<input type="text" name="pageNow"/><input type="submit" value="Go"><form><?php /* //打印出页码的超链接 for($i=1;$i<=$pageCount;$i++){ echo "<a href='empList.php?pageNow=$i'>$i</a>&nbsp;&nbsp;"; } */?></body>
</html>

应用偏移量的思路:

<?php
$page = $_GET['page'];$mysqli = new MySQLi('localhost','root','123456','test');if($mysqli->connect_error){die($mysqli->connect_error);
}$sql = "select * from test limit " . ($page-1)*2 . ",2";$res = $mysqli->query($sql);
if(!$res){die($mysqli->error);
}while($row = $res->fetch_row())
{$rows[] = $row;
}$res->free();$sql2 = "select count(*) from test;";
$res2 = $mysqli->query($sql2);
if($row = $res2->fetch_row()){$rowCount = $row[0];
}
$res2->free();$pageCount = ceil($rowCount/2);
$mysqli->close();$showPage = 5;  //总共要显示多少
$pageOffset= ($showPage-1)/2;  //偏移量,以偏移量为参考
?><html>
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="1" width="80%"><tr><td>id</td><td>name</td></tr><?php foreach($rows as $row):?><tr><td><?php echo $row[0];?></td><td><?php echo $row[1];?></td></tr><?php endforeach;?>
</table>
<?php if($page>1):?><a href="<?php echo $_SERVER['PHP_SELF'] . '?page=1'?>">首页</a><a href="<?php echo $_SERVER['PHP_SELF'] . '?page=' . ($page-1);?>">上一页</a>
<?php endif;?>
<?php$start = 1;$end = $start+4;if($page-$pageOffset<=0){$start = 1;$end = $start +4;}elseif($page+$pageOffset<=$pageCount){$start = $page-2;$end = $page + 2;}else{$start = $pageCount - 4;$end = $pageCount;}
?>
<?php if($start != 1):?><a>...</a>
<?php endif;?>
<?php for($i=$start;$i<=$end;$i++):?><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=$i"?>"><?php echo $i;?></a>
<?php endfor;?>
<?php if($end != $pageCount):?><a>...</a>
<?php endif;?>
<?php if($page != $pageCount):?><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=" . ($page+1);?>">下一页</a><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=$pageCount"?>">尾页</a>
<?php endif;?></body>
</html>

67. 查询分页数据(2)相关推荐

  1. 分页数据做缓存的思考

    当我们进行java开发时,当遇到页面数据过多或者复杂,会有很多慢sql,此时除了优化sql外,还可以通过缓存的方式来处理: 有如下方案: 1.整个页面做缓存,key为页数,value为整个页面的数据 ...

  2. php查询mysql表里的数据_PHP/MYSQL 查询大数据/遍历表

    PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50) MYSQL:5.1.51 如果我们有的一张表有几百万或几千万的记录,我们要使用 PHP 将所有的记录 ...

  3. 适合千万数据查询分页操作的一个通用存储过程

    适合千万数据查询分页操作的一个通用存储过程 一.引言                最近上班比较忙,所以就很少写东西了,MongoDB系列的文章也要拖后了,没办法,工作第一,没工作就没饭吃了.今天正好 ...

  4. Bootstrap4+MySQL前后端综合实训-Day06-PM【MD5加码-生成32位md5码、ResultData.java、分页查询用户数据、添加用户按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 MD5加码 生成32位md5码 ResultData.java 分页查询 ...

  5. 分页查询有数据无数据源问题

    分页查询有数据无数据源问题 使用前端查询有数据但无数据源问题 问题详情 具体问题演示 代码演示 解决办法 使用前端查询有数据但无数据源问题 问题详情 表格有自带的分页功能,后台分页主要是通过传{lim ...

  6. 黑马旅游网——分页数据展示(难点)和旅游线路名称查询

    狗都能看懂的代码分析!!!,虽然这一块比较绕但是我还是决定让狗都能看懂 期望效果: 数据展示功能: 当我们点击分页展示栏中任意一页时,就会展示相应板块(cid)的数据 如我们点击国内游(cid=5), ...

  7. SQL数据库查询LIMIT 数据分页

    SQL数据库查询LIMIT 数据分页 SQL的语句LIMIT 约束SELECT 查询数据包表时,使得SQL查询语句返回指定的记录数(行数).LIMIT 可以设置1个或2个int整型常量数字作为参数.L ...

  8. 使用forkjoin框架分页查询所有数据的例子

    使用forkjoin框架分页查询所有数据的例子 import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor ...

  9. php计算是否有下一页,怎么进行分页数据的查询,如何判断是否有下一页?

    怎么进行分页数据的查询,如何判断是否有下一页? 1.背景介绍 在开发过程当中,接触比较多的有MySQL.SQLServer.Oracle这三种数据库,这三种数据库都有自己内部的方法可以进行分页查询,M ...

  10. 数据查询分页显示的优化方法

    现有方法: 开始时间 [@start_dt ]   结束时间 [@end_dt ] 其它条件 [      ] 查询数据总量:[XXXX] 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

最新文章

  1. 顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
  2. Win7双击文件夹总是新窗口打开的解决方法
  3. 让我撸一次HashMap
  4. python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别
  5. curl封装php,PHP封装curl的简单方法
  6. OpenCV2:幼儿园篇 第一章 创建图像并显示
  7. MAC itunes无法验证服务器s.mzstatic/itunes无法更新服务器解决方案
  8. 滑膜观测器物理意义_电机控制中的滑模控制(滑模观测器设计)
  9. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图
  10. 办公 自动化 录制行为_我们可以自动化开放行为吗?
  11. 一些值得好好学习的博客或者网站
  12. 老板不在,你不得不做出越权的决定,咋办?(考试题系列)
  13. spring security3.x学习(15)_扩展JdbcDaoImpl。
  14. Spark操作Hive分区表
  15. mybatis的源码学习
  16. SEH in ASM研究
  17. 如何从wireshark 抓包中的RTP导出 H.264 PAYLOAD,变成可用暴风直接播放的H264 裸码流文件
  18. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)
  19. 知了课堂项目初始化数据库 进行数据迁移
  20. 【软件体系结构】软件体系结构笔记

热门文章

  1. 如何从超级用户进入非超级用户
  2. Linux计划任务入门详解
  3. NBA的字母哥如何拿到2415万美金年薪
  4. 斯坦福大学的机器学习课程,浓缩成6张速查表
  5. 浅析那些带着“主角光环“的泰坦尼克号幸存者(下)
  6. mongodb 笔记
  7. 【转】Js 数组转JSON格式
  8. webpack使用七
  9. Nginx ssl证书部署方法
  10. ASP.NET 中的 SQL Server 应用服务数据库角色和视图