用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. Weibo SDK WP版本回调参数没有uid的解决方法

    服务端跟新浪微博交互的时候需要用到UID参数, 但WP的WeiboSDK默认没有提供, 只要增加一个类成员就好了, 序列化json的时候程序会自动处理 下载SDK源代码http://weibowp7s ...

  2. 原创: How to build a query based on Definition Updates installed

    In SCCM 2012 R2, you can use following class. Use SMS_CombinedDeviceResources.EPAntivirusSignatureLa ...

  3. 网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践

    前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 对于刮刮卡, 想必大家都很熟悉, 也很喜 ...

  4. tomcat取带有中文的参数乱码的解决办法

    1. 对于post参数,可以用filter来处理,在dofilter之前,加入以下代码: request.setCharacterEncoding("UTF-8"); 2. 对于g ...

  5. Zookeeper概论(对zookeeper的概论、原理、架构等的理解)

    Zookeeper概论(对zookeeper的概论.原理.架构等的理解) 一.概论 Zookeeper是一个分布式的.开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是h ...

  6. git下载教程

    1.git for windows的下载链接 1.*的版本   https://github.com/msysgit/msysgit/releases 2.*的版本   https://github. ...

  7. servlet/jsp详解

    首先谈servlet的简单定义,servlet其实就是一门web服务器端编程的技术. servlet它分两种,一种是servlet容器,所有的servlet对象都要放在servlet容器中才能被调用执 ...

  8. android共享内存

    在android下不能通过shm_open使用共享内存. 网上有好多关于android下使用Ashmem实现共享内存的,但经过尝试该方法可以mmap出内存,但是和另一个进程没有实现共享. 具体的使用方 ...

  9. Dos学习笔记(1)dir命令

    这个命令是最常用的命令,就像linux的ls一样,同样他也有很多很多optionnal field供我们选择, 看了半天,觉得自己离盲打肯定还是有很大的差距的,现在只是想体验一下dos,或者说感受下这 ...

  10. sql join,left join,rigt join

    left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又叫等 ...