php基于SQLite实现的分页功能示例


Posted in PHP onJune 21, 2017

本文实例讲述了php基于SQLite实现的分页功能。分享给大家供大家参考,具体如下:

这里操作数据库文件使用的是前面文章《PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】》中的SQLite数据库操作类。废话不说,直接上代码:

<meta charset='utf-8'>
<?php
class SqlitePage{
  public function __construct()
  {
    $this->table_name='';
    $this->tj='';
    $this->page_size='';
    $this->current_page='';
    $this->total_page='';
    include_once 'sqlite_db.php';
    $this->db=new SqliteDB();//可以调用他的操作方法了
  }
  function entrance($table_name,$page_size,$tj='')//sql中不包含limit  page_size为每页显示条数
  {
    // 首先获取当前页
    // sql = "select * from tab where "+条件+" order by "+排序+" limit "+要显示多少条记录+" offset "+跳过多少条记录;
    $this->page_size=$page_size;
    $this->table_name=$table_name;
    $this->tj=$tj;
    $this->total_page=ceil($this->db->total($this->table_name,$this->tj)/$this->page_size);
    if (!isset($_GET['page'])) {
      $this->current_page=1;//如果没有page,则设置为默认第一页
    }
    else{
      $this->current_page=$_GET['page'];
    }
    if ($this->current_page>$this->total_page) {//当当前页数目大于总页数,则设置当前页数为总页数
      $this->current_page=$this->total_page;
    }
    if ($this->current_page<1) {//当当前页数目大于总页数,则设置当前页数为总页数
      $this->current_page=1;
    }
    $tj=$this->tj.' limit '.$this->page_size.' offset '.($this->current_page-1)*$this->page_size;
    $result=$this->db->query($this->table_name,$tj);
    return $result;
  }
  function page_bar()
  {
    $old_url = $_SERVER["REQUEST_URI"];
    $check = strpos($old_url, '?');
    $pre_urls='test';
    if ($check) {//如果urls中有?
      if(substr($old_url, $check+1) == '')
      { //有问号,但是后面没有跟任何参数
        $first_urls=$old_url.'page=1';//首页
        $pre_urls=$old_url.'page='.($this->current_page-1);//上一页;
        $next_urls=$old_url.'page='.($this->current_page+1);//下一页;
        $end_urls=$old_url.'page='.$this->total_page;//末页
      }
      else {//有问号,并且有参数
        if (isset($_GET['page'])) {//如果参数中包含page参数,则注销这个参数
          unset($_GET['page']);
          $old_url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.http_build_query($_GET);
        }
        $first_urls=$old_url.'&page=1';//首页
        $pre_urls=$old_url.'&page='.($this->current_page-1);//上一页;
        $next_urls=$old_url.'&page='.($this->current_page+1);//下一页;
        $end_urls=$old_url.'&page='.$this->total_page;//末页
      }
    }
    else{// 如果没有问号(也就是说后面没有任何参数,则直接跟)
      $first_urls=$old_url.'?page=1';
      $first_urls=$old_url.'?page=1';//首页
      $pre_urls=$old_url.'?page='.($this->current_page-1);//上一页;
      $next_urls=$old_url.'?page='.($this->current_page+1);//下一页;
      $end_urls=$old_url.'?page='.$this->total_page;//末页
    }
    // echo $this->table_name.'table_name';
    return '
    <div class="page">
      <a>【共'.$this->total_page.'页,第'.$this->current_page.'页】</a>
      <a href="'.$first_urls.'" rel="external nofollow" >首页</a>
      <a href="'.$pre_urls.'" rel="external nofollow" >上一页</a>
      <a href="'.$next_urls.'" rel="external nofollow" >下一页</a>
      <a href="'.$end_urls.'" rel="external nofollow" >末页</a>
    </div>
    ';
  }
  public function get_total_page()
  {
    return ceil($this->total_record/$this->page_size);
  }
}
// $page=new PrePage();
// $res=$page->entrance('log',10);
// echo "<hr />";
// foreach ($res as $key => $row) {
// echo $row['urls'].'<br />';
// }
// echo $page->page_bar();
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
《APMServ 5.1.2》使用图解
Oct 23 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
smarty表格换行实例
Dec 15 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
PHP递归调用数组值并用其执行指定函数的方法
Apr 01 PHP
php递归实现无限分类的方法
Jul 28 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 #PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 #PHP
老生常谈PHP面向对象之标识映射
Jun 21 #PHP
PHP封装的PDO数据库操作类实例
Jun 21 #PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 #PHP
php 猴子摘桃的算法
Jun 20 #PHP
详解php框架Yaf路由重写
Jun 20 #PHP
You might like
memcache一致性hash的php实现方法
2015/03/05 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
python中xrange和range的区别
2014/05/13 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Python引用计数操作示例
2018/08/23 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Form表单及django的form表单的补充
2019/07/25 Python
python监控nginx端口和进程状态
2019/09/06 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
Python字典dict常用方法函数实例
2020/11/09 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
如何写一份好的英文求职信
2014/03/19 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
合作协议书范本
2014/04/17 职场文书
户籍证明模板
2014/09/28 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书