php+mysql实现分页代码

mysql+php实现分页

数据库设计,如图

<?php
/**
* 1.获取页数
*/
$page = empty($_GET['p'])?1:($_GET['p']);
/**
* 2.处理数据
*/
// 链接数据库
$host = "127.0.0.1";
$user = "root";
$pwd = "root";
$db = "test";
$mysqli = mysqli_connect($host $user $pwd $db);
if (!$mysqli) {
echo "数据库连接错误";
exit();
}
// 设置参数
$pageSize = 10;
// 查询并显示数据(分页公式:(当前页-1)*每页显示的条数 每页显示的条数)
$sql = "select * from page limit ".($page-1)*$pageSize.""."{$pageSize}";
$result = mysqli_query($mysqli $sql);
echo "<table border=1 cellspacing=1 width=30%>";
echo "<tr><td>编号</td><td>姓名</td></tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>{$row['id']}</td><td>{$row['name']}</td>";
echo "</tr>";
}
echo "</table>";
// 查询总的页数
$total_sql = "select count(*) from page";
$total_result = mysqli_fetch_array(mysqli_query($mysqli$total_sql));
$total = ceil($total_result[0]/$pageSize);
mysqli_close($mysqli);
/**
* 3.输出分页
*/
$showPage =5;// 显示页数
$banner_page = "<div class='page'>";
$pageOffSet = ($showPage-1)/2;//偏移量
if ($page>1) {
$banner_page.= "<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
$banner_page.= "<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
}
// 初始化数据
$start = 1;
$end = $total;
// 数字前的省略(该部分内容顺序不可修改!!!)
if ($total>$showPage) {
if($page>$pageOffSet+1){
$banner_page .= "...";
} if($page>$pageOffSet) {
$start = $page-$pageOffSet;
$end = $total>$page+$pageOffSet?$page+$pageOffSet:$total;
}else{
$start = 1;
$end = $total>$showPage?$showPage:$total;
}if($page+$pageOffSet>$total){
$start = $start-($page+$pageOffSet-$end);
}
}
// 中间省略
for ($i=$start; $i <= $end; $i++) {
$banner_page.= "<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
}
// 尾部的省略
if ($total>$showPage && $total>($page+$pageOffSet)) {
$banner_page.= "...";
}
if ($page<$total) {
$banner_page.= "<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
$banner_page.= "<a href='".$_SERVER['PHP_SELF']."?p={$total}'>尾页</a>";
}
// 自定义跳转页数
$banner_page.="共{$total}页跳转到<form method='get' action='".$_SERVER['PHP_SELF']."'><input type='text' name='p' size='5' />页<input type='submit' value='跳转'/></form></div>";
echo "$banner_page";
?>

原文发布于微信公众号 - 思梦PHP(sm_php)

原文发表时间:2016-11-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mySoul

文档和元素的几何滚动

当浏览器在窗口中渲染文档时,它将会创建文档一个视觉表现层,在哪里每个元素都有自己的位置和尺寸。通常web应用程序将文档看做元素的树。

1050
来自专栏mySoul

jQuery (二)

还可以使用三个值,第一值为事件,第二个值为Event对象的data属性,在调用最后一个处理函数的时候,会将第二个值作为对象的data属性,这样即可避免使用闭包操...

793
来自专栏我的博客

TP入门第十二天

1、模板技术 为何使用模板这里就不罗嗦了,直接介绍模板技术 变量传递和显示: 例如在action里面可以这样写 $title=”变量”; $arr=array(...

2946
来自专栏程序员叨叨叨

Excel单元格内计算式及字符串拼接实现

&:逻辑并,用以拼接字符串 =:计算式求结果 " ":其内部放入要显示的字符串

646
来自专栏练小习的专栏

Dom 事件处理函数

别人整理的,我顺手就给捏来了哈哈。很详细的一些事件,浏览器支持情况,以及详细的说明。在这里向整理者致敬。 <!DOCTYPE html PUBLIC "-//W...

1728
来自专栏彭湖湾的编程世界

【javascript】原生js更改css样式的两种方式

下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1;css表达式...

1658
来自专栏编程

前端学习自学笔记:day03

嗯,说实话,我写这个的话比较少人看啊,但是还是继续坚持下去吧,可不可能半途而废啊,接下来是第三天的笔记. ? 在此之前先为大家显示下前端工程师的路线图: 第三天...

1755
来自专栏西枫里博客

解决Chrome不兼容li标签中的文本溢出自动隐藏的问题

一般情况下对文章列表的调用,通常使用ul循环li标签。受页面模块宽度的的限制,一般需要对li进行文本内容溢出隐藏处理,实现更加合理的排版。经过测试在li标签中使...

532
来自专栏算法channel

Python-GUI|生成菜单,封装自己的控件

01 创建菜单 Tk中菜单控件封装在Menu类中。 menubar = Menu(parent) 上面代码指定menbar为Menu,且父控件为parent ...

2646
来自专栏ionic3+

【技巧】ionic3独享滚动区域之滑动segment

其实这两个列表是公用ion-content的滚动条的,也就是说,当列表1滚动到一定距离,当切换到列表2显示时,列表2已滚动到列表1所在的位置了(效果图我就不上了...

512

扫描关注云+社区