php实现网页上一页下一页翻页过程详解

前言

这几天做项目因为数据太多,需要对信息进行上下翻页展示,就自己写了翻页的代码
大致功能就是页面只显示几条信息,按上一页、下一页切换内容,当显示第一页时上一页和首页选项不可选,当页面加载到最后一页时下一页和尾页选项不可选

具体效果如下:

实现代码

1)原生PHP方法

先说一下总思路吧,首先我们要查询所有符合条件需要进行分页的总数据,计算展示的总页数。

然后获取当前显示的是第几页信息,用当前页数每页数据条数表示为总数据的第几条,再根据限制条件查询出当前页所需显示出来的数据。将每一条数据echo替换HTML结构内容中,最后显示出来

关于分页的限制条件很简单,只要查询到当前页为第1页时,首页和上一页选项跳转链接都固定在第一页同时设置选项disabled不可选,尾页也是相同的步骤。

具体代码如下:

当前页cPage需要传过来,我的办法是初始cPage=0

list.php*

<a href="listmore.php?cPage=0" rel="external nofollow" rel="external nofollow" class="pull-right">更多>></a>
$row=$table->fetch()每次读取一条信息,得到的是一个索引数组,代码里的$row['id']表示$row里面名为id的值,也可表示为$row.id

connect.php(连接数据库)

<?php
$link=new PDO("mysql:host=localhost;port=3306;dbname=db","root","");
$link->query("set names utf8");
listmore.php

<ul id="list" class="media-list">
<?php
include_once('connect.php');
$result = $link->query("select * from news");
$total=$result->rowCount();//查询出来符合条件的总数
$pages=ceil($total/4);//分页的总页数
$num = 4;//每页显示的数据条数
$cPage = $_GET['cPage'];//获取当前是显示的第几页
$start = $cPage * $num;//第一条数据
$table = $link->query("select * from news order by id desc limit {$start},$num");
$link = null;//销毁
while ($row=$table->fetch()){//每次读出一条数据,赋给$row
//插入多行文本,把值替换掉
echo <<<_
<li class="media">
<a href="detail.php?id={$row['id']}" rel="external nofollow" >
<img class="pull-left" src="{$row['src']}">
<figcaption>
<h4><span class="title">{$row['title']}</span> <span class="news-date">{$row['time']}</span></h4>
<p>{$row['content']}</p>
</figcaption>
</a>
</li>
_;
}
?>
</ul>

上下翻页:

<div class="page text-center">
<ul class="pagination" id="page">
<li data-i="0" id="index" class="<?php if ($cPage==0) echo 'disabled'; ?>"><a href="listmore.php?cPage=0" rel="external nofollow" rel="external nofollow" >«首页</a></li>
<li data-i="1" class="<?php if ($cPage==0) echo 'disabled';?>"><a href="listmore.php?cPage=<?php echo $cPage>0?$cPage-1:0?>" rel="external nofollow" ><上一页</a></li>
<li data-i="2" class="<?php if ($cPage==$pages-1) echo 'disabled'?>"><a href="listmore.php?cPage=<?php echo $cPage==($pages-1)?$pages-1:$cPage+1?>" rel="external nofollow" >下一页></a></li>
<li data-i="3" id="end" class="<?php if ($cPage==$pages-1) echo 'disabled'?>"><a href="listmore.php?cPage=<?php echo $pages-1?>" rel="external nofollow" >尾页»</a></li>
<li class="disabled">
<a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="total"><?php echo ($cPage+1)?>/<?php echo "$pages"?></a>
</li>
</ul>
</div>

2)ajax方法

HTML代码,展示信息装在panel-body里面

<div class="panel-body" id="content">
<ul id="list" class="media-list">
</ul>
</div>
<div class="page text-center">
<ul class="pagination" id="page">
<li data-i="0" id="index" class="disabled"><a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >«首页</a></li>
<li data-i="1" class="disabled"><a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><上一页</a></li>
<li data-i="2"><a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一页></a></li>
<li data-i="3" id="end"><a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >尾页»</a></li>
<li class="disabled">
<a href="##" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="total"></a>
</li>
</ul>
</div>
<template id="temp"> //引用模板
<li class="media">
<a href="detail.html?id={id}" rel="external nofollow" >
<img class="pull-left" src="{src}">
<figcaption>
<h4><span class="title">{title}</span> <span class="news-date">{date}</span></h4>
<p>{content}</p>
</figcaption>
</a>
</li>
</template>

JS代码:

var html=$('#temp').html();
var curPage=0,pages=0;
$.getJSON('php/pages.php',function (res) {
pages=Math.ceil(res/4);/*获取信息的总页数*/
});
function show(cPage){//替换每一页的内容
$.getJSON('php/listmore.php',{cPage:cPage},function (json) {
var str='';
$('#list').empty();
json.forEach(function (el) {
str+=html.replace('{id}',el.id).replace('{title}',el.title).replace('{src}',el.src)
.replace('{content}',el.content).replace('{date}',el.time);
});
$('#list').html(str);
});
$('#total').html((curPage+1)+'/'+pages);
}
setTimeout(function () {
show(0);
},100);
$('#page').on('click','li',function () {//上下翻页,翻遍当前页的值
var i=$(this).data('i');//jquery里特有的获取data-*属性的方法
switch (i){
case 0:curPage=0;break;
case 1:curPage>0?curPage--:0;break;
case 2:curPage<(pages-1)?curPage++:pages-1;break;
case 3:curPage=pages-1;break;
}
show(curPage);
disabled(curPage);
})
function disabled(curPage) {//关于临界值禁止选择
if (curPage==0){/*当前页为第一页,首页和上一页选项禁止点击*/
$('#index').addClass('disabled').next().addClass('disabled');
$('#end').removeClass('disabled').prev().removeClass('disabled');
} else if (curPage==pages-1){
$('#index').removeClass('disabled').next().removeClass('disabled');
$('#end').addClass('disabled').prev().addClass('disabled');
} else {/*当前页为最后一页,尾页和下一页选项禁止点击*/
$('#index').removeClass('disabled').next().removeClass('disabled');
$('#end').removeClass('disabled').prev().removeClass('disabled');
}
}

connect.php(连接数据库)

<?php
$link=new PDO("mysql:host=localhost;port=3306;dbname=db","root","");
$link->query("set names utf8");

pages.php(获取总页数)

<?php
include_once('connect.php');//连接数据库
$result = $link->query("select * from news");
$row=$result->rowCount();
echo $row;

listmore.php(获取数据库里的数据)

<?php
include_once ('connect.php');
$num = 4;//每一页显示的数据条数
$cPage = $_GET['cPage'];//获取当前页
$start = $cPage * $num;//计算当前页显示的第一条数据的数目
/*从表中查询从开始$start的一共$num条数据*/
$result = $link->query("select * from news order by id desc limit {$start},$num");
$link = null;
while ($row=$result->fetch()){/*每一次读取一条数据*/
$json[]=$row;/*把数据赋给json数组*/
}
echo json_encode($json);/*把json数组以json格式返回给HTML*/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • PHP翻页跳转功能实现方法

    我们都知道用php+mysql在web 页实现数据库资料全部显示是非常简单而有趣的,数据库资料很少的情况下页面显示还是让人满意的,但是当数据库资料非常多的情况下,页面的显示情况将会变的非常糟糕,下面就来介绍一下如何实现当前页面数据资料显示数量及如何实现动态的翻转功能. 这里将介绍两种翻页显示功能的实现: 先介绍一下在翻页中用到的数据库语法: mysql_query("select * from table order by id desc"); 这条数据库语句再熟悉不过了,是用来搜索记

  • PHP 翻页 实例代码

    复制代码 代码如下: <?php class Page { private $pageSize;//每一页多少行 private $absolutePage;//当前页 private $pageCount;//总页码数 private $totalNum;//总行数 private $prePage;//上一页 private $nextPage; //下一页 private $sqlStr; private $baseUrl; //不带GET参数的URL get传输网址 function _

  • 一个很不错的PHP翻页类

    复制代码 代码如下: <?php /* * Created on 2007-6-8 * Programmer : Alan , Msn - haowubai@hotmail.com * PHP100.com Develop a project PHP - MySQL - Apache * Window - Preferences - PHPeclipse - PHP - Code Templates */ //为了避免重复包含文件而造成错误,加了判断函数是否存在的条件: if(!function

  • PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部

    复制代码 代码如下: <?php function ff_page($content,$page) { global $expert_id; $PageLength = 2000; //每页字数 $CLength = strlen($content); $PageCount = floor(($CLength / $PageLength)) + 1; //计算页数 $PageArray=array(); $Seperator = array("\n","\r"

  • php微信公众号开发之翻页查询

    本文为大家分享了php微信公众号开发之翻页查询的具体代码,供大家参考,具体内容如下 注意:公众号列表最多只能列出8列,超出会报错 分页原理 limit 开始位置 , 条数 (当前页数 - 1) x 每页条数 , 每页条数 limit ($Page - 1) * $PageSize , $PageSize 0 为开始位置 mysql_num_rows 条数 require() 与 require_once() 开始加载,错误停止 include() 与 include_once() 使用加载,错误

  • Windows下Goland的环境搭建过程详解

    1.安装包下载 进入Go官方下载界面 下载并安装,安装时注意最好不要将其安装在C盘,我这里将它安装在D盘: 2.环境变量配置 安装包会自动添加环境变量,但是默认的Go工作空间C盘,而我们一般不在C盘放自己的文件,这里以我的工作空间为例我的Go项目文件放在D盘的GoFiles文件夹中,所以这里演示重新配置: 主要是配置两个环境变量:GOROOT和GOPATH: GOROOT指GO的安装目录 GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径,不要设置为GO的安装目录,我们一般用

  • windows下创建项目的虚拟环境过程详解

    一. 为何使用虚拟环境 虚拟环境是Python解释器的一个私有副本,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器. 在这个虚拟环境中的所有安装包,都是针对此环境的,不会被外界所利用. 为每个程序代码地创建虚拟环境可以保证程序只能访问虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建虚拟环境的源. 虚拟环境非常有用,可以在系统的Python解释器中避免包的混乱和版本的冲突.[重要是不同虚拟环境可以搭建不同的python版本,创建时候选择??] 二. 创建虚拟

  • iOS开发retina屏幕下的点与像素关系详解

    目录 引言 I iOS中点与像素有什么关系? II 图片使用的相关注意事项 2.1 推荐使用png格式 2.2 关于图像的实例化 2.3 动画结束之后清除帧动画数组 III 设置状态栏字体颜色 3.1 方式一 3.2 方式二 see also 引言 提交app store的时候 需要一张1024*1024的 如果不设置这两种的尺寸启动页的话,在4英寸.3.5英寸的设备上展示不了启动页,app 的高度也默认都是矮的960px.** 注意@3x 提供给开发的px 为12422208 ,但真实的px

  • php中文本数据翻页(留言本翻页)

    在mysq中介绍翻页的文章不少,而文本数据表格式的翻页介绍的很少,这里我就简单的说一下翻页 主要介绍以下翻页思想1.留言本的翻页2.文本论坛的翻页 ------------------------留言本的翻页:------------------------------这个在文本数据表中的翻页是最简单的翻页,这样说明一下 golbal file    Data.dat    ---    NOTE FILE USE    user.dat    ---     Forum File useDat

  • Linux下tcpdump命令解析及使用详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具.tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 实用命令实例 默认启动 tcpdump 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 监视指定网络接口的数据包 tcpdum

  • android中使用react-native设置应用启动页过程详解

    一.背景 在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面 然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案 二.方案 1.使用第三方库(react-native-splash-screen) 2.ios系统设置(仅适用ios系统,在这里不做讲解) 三.具体实现方式 一).react-native-splash-screen 1.安装 npm i react-native-splash-screen --save 2.

  • validate 注册页的表单数据校验实现详解

    目录 1.注册页是什么 2.为什么需要注册页 3.注册页如何实现 3.1分析业务需求 3.2获取数据 v-model双向绑定 3.3校验数据 3.4method中的发送数据 3.5处理数据 4总结 1.注册页是什么 当我们使用一个从未使用过的网站时,想要注册账号,点击注册账号时看到的网页就是注册页注册页例子如下: 我们看到以下的注册页中,有两大类信息: 第一大类是用户信息类, 包括用户名,密码和email,他们都有自己的 取值规则 ,例如用户名显示不得小于3个字符 第二大类是验证码类,一般有两种

  • history保存列表页ajax请求的状态使用示例详解

    目录 问题 优化前代码 history history.pushState() window.onpopstate 问题2 问题 最近碰到两个问题: 从首页进入列表页之后,点击下一页的时候,使用ajax请求更新数据, 然后点击浏览器“后退”按钮就直接返回到首页,实际这里想要的效果是返回列表页上一页. 在列表页分页为2的页面进入详情页,然后点击“后退”按钮,返回的事列表页分页为1的页面.没法记住之前分页状态. 优化前代码 代码如下,在页数变化的时候,去异步请求数据,渲染页面. const curr

  • linux上免安装版MySQL5.7.18的教程详解

    1. 下载mysql 从官网下载mysql的压缩包    mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2 把下载的包上传到linux上,先安装下依赖包:Ubuntu用 apt-get install libaio*    centOS用yum install libaio* 3 用tar -xzvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 解压 改名并移动到/usr/local  下:mv mysql-5.7.1

  • js单页hash路由原理与应用实战详解

    本文主要介绍了js单页hash路由原理与应用实战详解,分享给大家,具体如下: 什么是路由? 通俗点说,就是不同的URL显示不同的内容 什么是单页应用? 单页,英文缩写为SPA( Single Page Application),就是把各种功能做在一个页面内. 那所谓的单页路由应用就是:在一个页面内,通过切换地址栏的URL来实现切换内容的变化. 如何知道URL切换了呢? 当url后面的锚文本发生变化时, 会触发onhashchange事件.通过这个事件,我们就可以对不同的URL 做出不同的处理.锚

随机推荐