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 09 PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
微信接口生成带参数的二维码
Jul 31 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 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
19个超实用的PHP代码片段
2014/03/14 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
puppeteer实现html截图的示例代码
2019/01/10 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python选择排序算法的实现代码
2013/11/21 Python
python实现矩阵乘法的方法
2015/06/28 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python正则简单实例分析
2017/03/21 Python
Python之py2exe打包工具详解
2017/06/14 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
产品售后服务承诺书
2014/05/21 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
2014年基建工作总结
2014/12/12 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
MySQL 原理与优化之Update 优化
2022/08/14 MySQL