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 条评论
登录 后参与评论

相关文章

来自专栏LIN_ZONE

Vue 中动态添加class(使用v-bind:class)

今天在Vue中动态修改类名,元素的样式就是不改变,类名也没有加上去,里面的问题具体我还是不太清楚,有可能是因为自己不认真,把 :class= 后面的内容的格式给...

472
来自专栏王磊的博客

js常用事件整理—兼容所有浏览器

1.鼠标滚动事件。 说明:返回值 大于0向上滚动,小于0向下滚动。 兼容型:所有浏览器。 代码: /*********************** * 函数:...

3639
来自专栏青枫的专栏

vi/vim命令复习和练习

591
来自专栏前端说吧

JS-鼠标经过显示二级菜单

32110
来自专栏CDA数据分析师

Excel:Ctrl+F人人都会用,但这3个技巧99%的人不知道

本文为简书作者傲看今朝原创,CDA数据分析师已获授权。 查找与替换是Excel中最为简单实用的功能之一,几乎用过Excel的人都知道这个功能,也都会简单使用这个...

1995
来自专栏跟着阿笨一起玩NET

border、margin、padding属性的区别

可以先看下这个视频教程:http://my.tv.sohu.com/us/97014746/64226777.shtml

372
来自专栏WindCoder

5月14日项目小结-获取与增加html节点

需要实现类似聊天的功能,找了半天没找到满意的,只好手动用最笨的方式通过在<ul></ul>中添加<li>相关节点实现。此处代码仅作为实现思路,若是照搬不保证最终...

361
来自专栏天天

框架设计(一)

583
来自专栏九彩拼盘的叨叨叨

CSS伪元素介绍

伪元素表示了某个元素的子元素。这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

564
来自专栏布尔

js checkbox.checked=true在document.body.appendChild(checkbox)前与后赋值

如果想改变元素的视觉效果(checkbox.checked=true会打钩),请在把元素添加到页面上再为其赋值,否则赋值无效。 看这段代码,18行与21行,如果...

1835

扫码关注云+社区