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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
第五节--克隆
Nov 16 PHP
用来给图片加水印的PHP类
Apr 09 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 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
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python and or用法详解
2019/06/26 Python
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
30岁生日感言
2014/01/25 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
服务行业演讲稿
2014/09/02 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2014年工程工作总结
2014/11/25 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
法律服务所工作总结
2015/08/10 职场文书