PHP翻页跳转功能实现方法


Posted in PHP onNovember 30, 2020

我们都知道用php+mysql在web 页实现数据库资料全部显示是非常简单而有趣的,数据库资料很少的情况下页面显示还是让人满意的,但是当数据库资料非常多的情况下,页面的显示情况将会变的非常糟糕,下面就来介绍一下如何实现当前页面数据资料显示数量及如何实现动态的翻转功能。
这里将介绍两种翻页显示功能的实现
先介绍一下在翻页中用到的数据库语法:

mysql_query("select * from table order by id desc");

这条数据库语句再熟悉不过了,是用来搜索记录并倒序地显示出来,但并不能在翻页功能中起作用,而下面这个扩展了的语法才是实现翻页的核心功能:

mysql_query("select * from table order by id desc limit $start,$limit");

这里的 $start 是数据库搜索的起始行,$limit 是从起始行开始搜索到 $limit 条记录结束,好了,有了这个核心功能后,我们可以开始翻页功能了。

第一种翻页功能:
这里介绍的功能是翻页功能中最简单的一种,只能实现向前翻页和向后翻页,本站的非常新闻和下载中心的翻页功能就是这种。
先介绍翻页功能实现的思路:

  • 先确定当前页固定显示的数据记录数量,假设为 20 条记录,设定 $limit 的值为 20: $limit=20;
  • 显示数据库记录时,必须是从第一条开始显示,所以这里设置 $start 的初始值为 0:$start=0;
  • 翻页功能的实现依赖 $start 的动态变化,当向后翻页时 $start 规律地加上 $limit:$start+$limit;而向前翻页时 $start 则规律地减去 $limit:$start-$limit;

有了以上的思路后,可以开始设计程序了

page.php:

<? 
//设置当前页显示的数量(这个数量可任意设置) 
$limit=20; 
//初始化数据库搜索起始记录 
if (!emptyempty($start)) $start=0; 
mysql_connect("localhost","",""); 
mysql_select_db(database); 
//设置数据库记录总数 
$result=mysql_query("select * from table"); 
$num_max=mysql_numrows($result); 
$result=mysql_query("select * from table order by id desc limit $start,$limit); 
$num=mysql_numrows($result); 
echo "<table><tr><td>翻页功能</td></tr>"; 
if (!emptyempty($num)) { 
for ($i=0;$i<$num;$i++) { 
$val=mysql_result($result,$i,"val"); 
$val1=mysql_result($result,$i,"val1"); 
echo "<tr><td>$val</td><td>$val1</td></tr>"; 
} 
} 
echo "<tr><td>"; 
//设置向前翻页的跳转 
$prve=$start-$limit; 
if ($prve>=0) { 
echo "<a href=page.php?start=$prve>prve</a>"; 
} 
//设置向后翻页的跳转 
$next=$start+$limit; 
if ($next<$num_max) { 
echo "<a href=page.php?start=$next>next</a>"; 
} 
echo "</td></tr></table>"; 
?>

一个前翻,后翻功能的程序完成了,但这个功能对处理更多资料显示时,将会显得很累赘.下面将会继续介绍功能更强大,更加复杂的翻页功能--循环翻页(我一直都这么叫,因为找不到更合适的叫法).:)
前面介绍了简单的翻页功能实现,下面介绍的翻页功能更加强大,更加复杂,本站的非常论坛和非常文章就是使用这个循环翻页功能的.
循环翻页是前翻后翻加上数字共同实现的,具体的表现形式为:
页: prve <<1 2 3 4 ....... 20 >> next
里面的数字表示各当前的页面,前翻 prve 和后翻 next 已不仅仅是当前页的前后翻转,而是更加复杂的数字控制前后翻转。

同以往一样,在进行程序设计之前,先理清一下思路,我建议读者在看完如何实现循环翻页的功能后,能自己动手实践一次,因为这里研究的一些方法和思路可能比较抽象。
首先我们大胆假设数据库里存有超过1000 条的记录,我们希望当前显示 25 条记录,而数字翻转控制为 20,因此就有如下的显示结果:
页: 0 1 2 3 ......... 19 >> next
后翻后的显示结果:
页: prve <<20 27 28 ....... 49 >> next
好,我们来看看其中的规律,一个固定的显示数字 25 ,一个固定的数字控制倍翻 20.我们可以利用这两个数字来实现循环翻页功能;
首先设置固定显示的变量:
$limit=20;

数据库初始变量的设置:
$start=0;

数据库记录总数为:

$num;
页数变量:$page;
一个页数循环显示的程序如下:

<? 
... 
$result=mysql_query("select * from table"); 
$num=mysql_numrows($result); 
for ($page=0;$page<($num/$limit);$page++) { 
echo $page; 

if ($page>0 && ($page%20)==0) { 
break; //退出循环 
} 
} 
?>

这段代码除了显示数字外,其它功能一概没有实现,因为多了数字控制翻转,所以必须要有几个变量来标记并识别这些控制量,这里用了$s 来标记,这个变量是用来控制数字循环翻页控制的,现在可以看看实现循环翻页的完整代码page.php:

<? 
$limit=25; 
if (!emptyempty($start)) $start=0; 
if (!emptyempty($s)) $s=0; 
mysql_connect("localhost","",""); 
mysql_select_db(database); 
//统计数据库记录总数 
$result=mysql_query("select * from table"); 
$num=mysql_numrows($result); 
$result=mysql_query("select * from table order by id limit $start,$limit"); 
$numb=mysql_numrows($result); 
echo "<table>"; 
if (!emptyempty($numb)) { 
for($i=0;$i<$numb;$i++) { 
$val=mysql_result($result,$i,"val"); 
$val1=mysql_result($result,$i,"val1"); 
echo "<tr><td>$val</td><td>$val1</td></tr>"; 
} 
} 
echo "</table>"; 
//数字循环翻页的控制 
echo "<table>"; 
echo "<tr><td>页:</td>"; 
//前翻控制 
if ($s>20) { 
if ($s==21) { 
$st=$s-21; 
} else { 
$st=$s-20; 
} 
$pstart=$st*$limit; 
echo "<td><a href=page.php?"; 
echo "start=$pstart&s=$st>prve</a></td>"; 
} 
echo "<td> >></td>"; 
//设置当前页对应页数无链接功能 
$star=$start; 
//注意循环的初始附值,仔细想想为什么不是 0 
for ($page=$s;$page<($num/$limit);$page++) { 
$start=$page*$limit; 
echo "<td>"; 
if($page!=$star/$limit) { 
echo "<a href=page.php?"; 
echo "start=$start&s=$s>"; 
} 
echo $page; 
if($page!=$star/$limit) { 
echo "</a>"; 
} 
echo "</td>"; 
//控制数字页面限制显示功能,控制只显示 20 页 
if ($page>0 && ($page%20)==0) { 
if ($s==0) { 
$s=$s+21; 
} else { 
$s=$s+20; 
} 
$start=$start+$limit; 
if ((($num/$limit)-1)>$page) { 
echo "<td> <<</td><td><a href'page.php?"; 
echo "start=$start&s=$s>next</a></td>"; 
} 
//注意跳出循环的控制 
break; 
} 
} 
echo "</tr></table>"; 
?>

还有一个翻页功能就是提交翻页,即在提交表单添入数据提交,然后程序跳转到该对应页,这个功能实现起来比较简单,就留给读者自己完成。

以上的程序已经可以完成强大的循环翻页功能,大家可以细细研究,真正做到学以致用。

PHP 相关文章推荐
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
PHP中命名空间的使用例子
Mar 22 PHP
php中注册器模式类用法实例分析
Nov 03 #PHP
php实现zip文件解压操作
Nov 03 #PHP
thinkphp如何获取客户端IP
Nov 03 #PHP
php去除二维数组的重复项方法
Nov 03 #PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 #PHP
smarty简单应用实例
Nov 03 #PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 #PHP
You might like
咖啡的种类和口感
2021/03/03 新手入门
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python实现的读写json文件功能示例
2018/06/05 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
网络方面基础面试题
2012/11/16 面试题
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
2014教师研修学习体会
2014/07/08 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年领班工作总结
2015/04/29 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS