<?php
/**
* PHP+Mysql实现分页
* **/
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
</head> <style>
/* <!-- 设置body体内的字体样式与大小--> */
body{
font-size:12px;FONT-FAMILY:verdana;width:100%;
}
/* <!-- 样式设计 page的div居中 --> */
div.page{
text-align:center;
}
/* <!-- 设置page的div下的a标签 --> */
div.page a{
border :#aaaadd 1px solid;text-decoration:none;padding:2px 5px 2px 5px;margin:2px;
}
/* <!-- 设置当前页中页码的样式 --> */
div.page span.current{
border:#000099 1px solid;background-color:#000099;padding:4px 6px 4px 6px;margin:2px;color:#fff;
font-weight:bold;
}
/* <!-- 当连接失效时的样式 --> */
div.page span.disable{
border:#eee 1px solid;padding:2px 5px 2px 5px;margin:2px;color:#ddd;
}
/* <!-- page的div中的form里的内容放在一行 --> */
div.page form{
display:inline;
}
/* <!-- 设置content块的高度 使内容与页码分离 --> */
div.content{
height:300px;
}
</style> <body>
<?php
/* echo "<pre>";
print_r($_SERVER); */
/**1、传入页码**/
$page = $_GET['p'];//用GET方法得到页码
/**2、根据页码取出数据:php->mysql的处理**/
//配置项
$host = "localhost"; //数据库地址
$username = "root"; //登录用户名
$password = ""; //密码
$db = "test"; //所用数据库
$pageSize = 10; //每一页的内容数量
$showPage = 5; //能直接显示的页码数量
//连接数据库
$conn = mysql_connect($host,$username,$password);
if(!$conn){
echo "数据库连接失败";
}
//选择数据库
mysql_select_db($db);
//设置编码格式
mysql_query("SET NAMES UTF8");
//编写sql获取分页数据select *from 表名 limit 起始位置,显示条数
$sql = "SELECT * FROM page LIMIT ".(($page - 1) * $pageSize).", $pageSize"; //执行sql语句后得到资源句柄
$result = mysql_query($sql);
//var_dump($result); //为一个div块,放置网页内容
echo "<div class='content'>";
echo "<table border = 1 cellspacing = 0 width = 40% align=center>";
echo "<tr><td>ID</td><td>NAME</td></tr>";
//通过循环将从数据库中的数据输出
while($row = mysql_fetch_assoc($result)){
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['name']}</td>";
echo "</tr>";
}
echo "</table>";
echo "</div>"; //释放结果,关闭连接
mysql_free_result($result);
//获取数据总数
$total_sql = "SELECT COUNT(*) FROM page";
$total_result = mysql_fetch_array(mysql_query($total_sql));
$total = $total_result[0];
//计算出总的页码数
$total_pages = ceil($total/$pageSize); mysql_close($conn);
/**3、显示数据 + 分页条 **/
//初始化分页条,并放入div块中
$page_banner = "<div class='page'>";
//计算偏移量
$pageOffset = ($showPage - 1)/2; //根据显示页码数计算偏移量 //如果在第一页则隐藏首页与上一页
if($page > 1){
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'><上一页</a>";
}else{
$page_banner .= "<span class='disable'>首页</a></span>";
$page_banner .= "<span class='disable'><上一页</a></span>";
} //初始化数据
$start = 1; //能够直接选定的页码的首位
$end = $total_pages; //能够直接选定的页码的末位
//如果总页数大于显示的页数,进行隐藏,分两种情况
if($total_pages > $showPage) {
//头部省略
if($page > $pageOffset + 1){
$page_banner .= "...";
} //分别讨论首末位页码的大小
if($page > $pageOffset){
$start = $page - $pageOffset;
//末尾页码需要分情况讨论
$end = $page + $pageOffset < $total_pages ? $page + $pageOffset : $total_pages;
}else{
$start = 1;
$end = $total_pages > $showPage ? $showPage : $total_pages;
}
//当前页加上偏移量大于总页码的情况
if($page + $pageOffset > $total_pages){
$start = $start - ($page + $pageOffset - $end);
}
} //显示页码连接
for($i = $start;$i <= $end;$i ++){
if($page == $i){
$page_banner .= "<span class='current'>{$i}</span>";
}else{
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".$i."'>{$i}</a>";
}
} //尾部省略
if($total_pages > $showPage && $page + $pageOffset < $total_pages){
$page_banner .= "...";
}
//如果在最后一页则隐藏尾页与下一页
if($page < $total_pages){
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页></a>";
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".($total_pages)."'>尾页</a>";
}else{
$page_banner .= "<span class='disable'>下一页></a></span>";
$page_banner .= "<span class='disable'>尾页</a></span>";
} //跳转页码的实现
$page_banner .= "共{$total_pages}页,";
$page_banner .= "<form action='mypage.php' method='get'>";
$page_banner .= "到<input type='text' size='2' name='p'>页";
$page_banner .= "<input type='submit' value='确定'>";
$page_banner .= "</form></div>"; //将分页条输出
echo $page_banner; ?>
</body>
</html>

简单的PHP+Mysql实现分页的更多相关文章

  1. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1;   SELECT a FROM ...

  2. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

  3. MySQL高效分页-mybatis插件PageHelper改进

    MySQL分页在表比较大的时候,分页就会出现性能问题,MySQL的分页逻辑如下:比如select * from user limit 100000,10 它是先执行select * from user ...

  4. Oracle和MySql的分页查询区别和PL/SQL的基本概念

    Oracle和MySql的分页查询区别:     Oracle的分析查询,之前Oracle的分页是使用伪列 ROWNUM 结合子查询实现,mysql的分页更简单,直接使用 LIMIT 关键字就可以实现 ...

  5. mysql 深度分页

    mysql  分页查询使我们常见的需求 ,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况.我们可以把分页分为两个步骤,1.定位偏移量,2.获取分页条数的 数据. 所以当数据较大页数较深时 ...

  6. MySQL的分页优化

    今天下午,帮同事重写了一个MySQL SQL语句,该SQL语句涉及两张表,其中一张表是字典表(需返回一个字段),另一张表是业务表(本身就有150个字段,需全部返回),当然,字段的个数是否合理在这里不予 ...

  7. oracle sqlserver mysql数据库分页

    1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...

  8. MySQL的分页

    有朋友问: MySQL的分页似乎一直是个问题,有什么优化方法吗?网上看到网上推荐了一些分页方法,但似乎不太可行,你能点评一下吗? 方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL ...

  9. MySql通用分页存储过程

    MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...

随机推荐

  1. bzoj 4501: 旅行 01分数规划+概率期望dp

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4501 题解: 首先我们不考虑可以删除边的情况下,如何计算期望边数. 然后我们发现这是个有 ...

  2. C# Hashtable赋值给另一个Hashtable时

    c#中想将一个hashtable的元素全部给另一个hashbale时, 使用迭代一个一个元素赋值 如: ammus.Clear(); IDictionaryEnumerator ie = _temp. ...

  3. Android的Notification相关设置

    Android手机:三星Galaxy S6 Android版本:Android 7.0 Android系统自带的本地通知会从顶部Pop下来,用来提示用户有新的消息,然后在Notification栏中停 ...

  4. 洛谷【P1104】生日(冒泡排序版)

    题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,我主要是来讲冒泡排序的. 所谓冒泡排序,流程如下: 每次确定一个\(rk\)(从\(n\ ...

  5. easy_install下载地址及安装

    下载地址 https://pypi.python.org/pypi/setuptools 解压 tar -xzvf xx.tar.gz 安装 cd 解压目录 sudo python setup.py ...

  6. Java中是构造器创建对象吗?

    首先,这里说明” Java中是构造器创建对象 “这句话是完全错误的. Java中构造器的作用主要是为了初始化变量的值...其实在执行构造器之前,Java对象所需要的内存空间,已经产生了... 一般可以 ...

  7. ios判断是否为iphone6或iphone6plus代码

    转自:http://blog.csdn.net/lvxiangan/article/details/45288505 #define IS_IPAD (UI_USER_INTERFACE_IDIOM( ...

  8. JSP介绍(4)--- JSP 过滤器

    过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...

  9. Flask16 项目结构、flask_script插件

    1 项目结构 需求:易维护.可扩展 1.1 views 处理逻辑和路由映射 C 1.2 models 模型类 M 1.3 templates 模板文件 V 1.4 static 今天文件,如:js.c ...

  10. 【机器学习】主题模型(二):pLSA和LDA

      -----pLSA概率潜在语义分析.LDA潜在狄瑞雷克模型 一.pLSA(概率潜在语义分析) pLSA:    -------有过拟合问题,就是求D, Z, W pLSA由LSA发展过来,而早期L ...