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也可以?成Shell Script
Oct 09 PHP
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP脚本的10个技巧(4)
Oct 09 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php表单习惯用的正则表达式
Oct 11 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 PHP
如何用Laravel包含你自己的帮助函数
May 27 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中的内存管理问题
2011/08/31 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
vue中轮训器的使用
2019/01/27 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
建筑工程专业学生的自我评价
2013/12/25 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
初中运动会前导词
2015/07/20 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
数据设计之权限的实现
2022/08/05 MySQL