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 相关文章推荐
php获取地址栏信息的代码
Oct 08 PHP
Cakephp 执行主要流程
Mar 24 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
php学习之function的用法
Jul 14 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
用PHP代码给图片加水印
Jul 01 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP高并发和大流量解决方案整理
Mar 09 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
php与paypal整合方法
2010/11/28 PHP
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
Python程序设计入门(2)变量类型简介
2014/06/16 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python列表解析操作实例总结
2020/02/26 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
高职助产应届生自荐信
2013/09/24 职场文书
技术人员面试提纲
2013/11/28 职场文书
党日活动总结
2014/05/07 职场文书
教师岗位职责范本
2015/04/02 职场文书
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers