用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来做分页的演示的更多相关文章

  1. PreparedStatement 基于mysql数据库做分页查询和统计查询

    分页查询: 统计查询:

  2. 优化 MySQL 中的分页

    英文:Robert Eisele 译者:Giraffe 链接:http://yemengying.com/2016/05/28/optimized-pagiantion-mysql/ 一道面试的问题, ...

  3. MySQL 百万级分页优化

    MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...

  4. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

  5. MySQL 百万级分页优化(Mysql千万级快速分页)(转)

    http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table OR ...

  6. MySQL 百万级分页优化(Mysql千万级快速分页)

    以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...

  7. Ajax做分页

    Ajax做分页 用这种ajax做分页的方法比较简单,把代码直接复制就可以,然后根据实际更改一下里面的参数. .设置分页显示显示的样式,显示效果如下. 复制代码 <style type=" ...

  8. jquery ajax php+mysql 无刷新分页 详细实例

    最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...

  9. 使用PHP做分页查询(查询结果也显示为分页)

    1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单.(加上条件,实现目标结果.) <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

随机推荐

  1. JavaScript面试题

    一道常被人轻视的前端JS面试题 标签(空格分隔): JavaScript function Foo() { getName = function () { alert (1); }; return t ...

  2. js 小技巧

    如果想让js每次加载时,都要执行, 那么在 <script type="text/javascript" >中加一个属性reload="1", &l ...

  3. hexo环境变量的配置问题

    因为一些个人原因,想尝试在github上用hexo搭建一个博客,于是用npm安装,安装完成之后却一直无法确认hexo的版本问题,cmd中也一直提示hexo -v 不是有效的命令行,在重装了几次Node ...

  4. python requests 模块初探

    现在经常需要在网页中获取相关内容. 其中无非获取网页返回状态,以及查看网页获取的内容几个方面,那么在这方面来看requests可能比urllib2库更简便一些. 比如:先用方法获取网页 r = req ...

  5. C#基础——全局静态类中的静态类变量的设置

    前言 今天在设计一个系统用户管理界面的时候,出现了一个问题: 由于要在不同窗体之间传递数据,所以想到了要设置全局变量,比如一个用户有属性,ID,UserName,UserPwd和UserPower,为 ...

  6. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

  7. 【转】Alchemy的使用和多项式批量计算的优化

    原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332158.html ================================== ...

  8. google 版本号49之后chrome的跨域设置

  9. linux下oracle启动问题

    需要注意的 1.由root用户切换到su oracle 不能启动sqlplus 由root用户切换到su -oracle 可以启动sqlplus 由oracle用户直接登陆也可以启动sqlplus命令 ...

  10. 配置DNS服务器,实现局域网内的地址正反向解析

    这里会用到BIND(Berkeley Internet Name Domain) 首先查询下本地bind有没有安装 yum list all | grep "^bind" 如果没有 ...