用PHP+MySQL来做分页的演示
用php做分页弄懂逻辑关系其实不难,不过我在听课的时候估计是被老师讲的那些变量里的英文单词给听懵了,因为有几个变量的名字都很像,只是换了两三个英文字母而已,有的就少几个这样的,听到一半已经不知道老师讲的这个变量代表的是什么了,写这个也只是为了复习一下,温故而知新嘛。
英文翻译:page:页 per:由,依靠
//引用数据库 下面附赠一个连接数据库的包装函数使用sql语句时用my_query()这个函数;include ./MySQLDB.php;
//先设置当前选中的页码数
$pageNum = isset($_GET['num']) ? $_GET['num'] : 1;
//定义每一页显示的记录数
$rowsPerPage = 5;
//查询总记录数
$sql = "select count(*) from publish";
$result = my_query($sql);
$rows = mysql_fetch_row($result);
$rowCount = $rows[0];//总记录数
//计算总页数
$pages = ceil($rowCount/$rowsPerPage); //总页数=向上取整(总记录数/每一页显示的记录数)
//拼凑出页码字符串
$strPage = ''; //这里是定义一个空字符串,然后用连接的方式把HTML的标记和内容都串联起来
//先拼凑出首页
$strPage .="<a href='./list_father.php?num=1'>首页</a>";
//拼凑出上一页
$preNum = $pageNum == 1 ? 1 : $pageNum-1;
$strPage .="<a href='./list_father.php?num=$preNum'>上一页</a>";
//显示的初始页
if($pageNum <= 3){
$startNum = 1;
}else{
$startNum = $pageNum-2;
}
//显示的初始页最大值
if($startNum >=$pageNum - 4){ //要显示的是五个页数所以初始页的最大值不能大于当前页—4
$startNum = $pageNum -4;
}
//防止页码出现负值
if($startNum <=1){
$startNum = 1;
}
//确定显示的最后一页$endNum
$endNum = $startNum + 4; //要显示的是五个页数所以最后一页必定是初始页+4
//防止最后一页出界
if($endNum>=$pages){ //最后一页大过总页就让他数字变总页的数字
$endNum = $pages;
}
for($i=$startNum;$i<=$endNum;$i++){ //拿初始页和最后一页循环比大循环,循环5次
if($i==$pageNum){ //当前的页码数被选中就给它样式区分其他页的页码数
$strPage .= "<a href='./list_father.php?num=$i'><font color=blue>$i</font></a>";
}else{
$strPage .= "<a href='./list_father.php?num=$i'>$i</a>";
}
}
//拼凑出下一页
$nextNum = $pageNum == $pages ? $pages : $pageNum+1;
$strPage .= "<a href='./list_father.php?num=$nextNum'>下一页</a>";
//拼凑出尾页
$strPage .= "<a href='./list_father.php?num=$pages'>尾页</a>";
//分页到此结束
<?php
function my_connect($arr){
//接受参数
$host = isset($arr['host']) ? $arr['host']:'主机名字';
$port = isset($arr['$port']) ? $arr['port']:'端口号';
$user = isset($arr['user']) ? $arr['user']:'用户类型';
$pass = isset($arr['isset']) ? $arr['isset']:'自己设置的密码';
$link = @ mysql_connect("$host:$port",$user,$pass);
if(!$link){
//数据库连接失败
echo "数据库连接失败!<br/>";
echo "错误编号:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),"<br/>";
die;
}
}
function my_query($sql){
//先执行sql语句
$result = mysql_query($sql);
//判断是否执行成功
if(!$result){
//输出相关错误信息
echo "sql语句执行失败!<br/>";
echo "错误sql语句是:",$sql,"<br/>";
echo "错误编号:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),"<br/>";
die;
}
return $result;
}
//设置默认字符集
function my_charset($charset){
$sql = "set names $charset";
my_query($sql);
}
//设置默认数据库
function my_database($db_name){
$sql = "use $db_name";
my_query($sql);
}
//连接数据库
$arr = array(
"user" => "用户类型",
"pass" => "设置的密码"
);
//连接数据三部曲
my_connect($arr);
my_charset('字符集');
my_database('要选择的数据库');
用PHP+MySQL来做分页的演示的更多相关文章
- PreparedStatement 基于mysql数据库做分页查询和统计查询
分页查询: 统计查询:
- 优化 MySQL 中的分页
英文:Robert Eisele 译者:Giraffe 链接:http://yemengying.com/2016/05/28/optimized-pagiantion-mysql/ 一道面试的问题, ...
- MySQL 百万级分页优化
MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
- MySQL 百万级分页优化(Mysql千万级快速分页)(转)
http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table OR ...
- MySQL 百万级分页优化(Mysql千万级快速分页)
以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...
- Ajax做分页
Ajax做分页 用这种ajax做分页的方法比较简单,把代码直接复制就可以,然后根据实际更改一下里面的参数. .设置分页显示显示的样式,显示效果如下. 复制代码 <style type=" ...
- jquery ajax php+mysql 无刷新分页 详细实例
最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...
- 使用PHP做分页查询(查询结果也显示为分页)
1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单.(加上条件,实现目标结果.) <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
随机推荐
- 在Eclipse中对自动封装的设定颜色
在Eclipse中,对自动封装进行特别着色提醒的方法:windows-->Preference-->java-->Editor-->Syntax Coloring-->j ...
- 推荐一个自动抽取pdf高亮笔记的web应用
很多人可能像我一样,喜欢用电脑或平板阅读pdf格式的论文或电子书,阅读过程中难免会使用highlight(高亮)工具标记出重要的文字和段落.有没有办法将所有高亮的部分抽取出来,形成一篇单独的笔记呢?下 ...
- Kerberos简介及常见问题
基本描述 Kerberos使用Needha-Schroeder协议作为它的基础.它使用了一个由两个独立的逻辑部分:认证服务器和票据授权服务器组成的"可信赖的第三方",术语称为密钥分 ...
- linux 服务的操作
启动和停止服务service 命令用于启动及停止某个服务,例如:service camsd stop 停止 camsd 服务service oracled start 启动 oracled ...
- folly::AtomicHashmap源码分析(一)
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Atomic的两点背景 看下这个场景,老张去厕所,发现门是锁着的,他就在门口等着里边人出来,此时小王也来了,他想了 ...
- 同时有background-size background-positon 两个属性的时候,如何在合并的background样式中展示
今日写css,遇到background很多属性,于是想合并写,w3c只是说了各个属性都可以合并,但是并没有给出background-size background-positon合并的具体例子 bac ...
- React(JSX语法)-----JSX基本语法
JSX------HTML tags vs React Components: 1.To render a html tag,just use lower-case tag names in JSX; ...
- Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextV ...
- Obiee11g变量
原文地址:http://xee123.blog.163.com/blog/static/277119942012612104438332/ Obiee 版本 11.1.1.5 库变量 库变量在同一时刻 ...
- Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xm
mybatis解析xml配置文件出现异常: org.apache.ibatis.exceptions.PersistenceException: Error building SqlSession. ...