首页  >  文章  >  后端开发  >  php基于SQLite实现分页功能的方法

php基于SQLite实现分页功能的方法

墨辰丷
墨辰丷原创
2018-05-21 11:41:261384浏览

这篇文章主要介绍了php基于SQLite实现的分页功能,结合具体实例形式分析了php操作SQLite数据库实现分页功能的相关技巧与注意事项,需要的朋友可以参考下

具体如下:

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

<meta charset=&#39;utf-8&#39;>
<?php
class SqlitePage{
  public function __construct()
  {
    $this->table_name=&#39;&#39;;
    $this->tj=&#39;&#39;;
    $this->page_size=&#39;&#39;;
    $this->current_page=&#39;&#39;;
    $this->total_page=&#39;&#39;;
    include_once &#39;sqlite_db.php&#39;;
    $this->db=new SqliteDB();//可以调用他的操作方法了
  }
  function entrance($table_name,$page_size,$tj=&#39;&#39;)//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[&#39;page&#39;])) {
      $this->current_page=1;//如果没有page,则设置为默认第一页
    }
    else{
      $this->current_page=$_GET[&#39;page&#39;];
    }
    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.&#39; limit &#39;.$this->page_size.&#39; offset &#39;.($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, &#39;?&#39;);
    $pre_urls=&#39;test&#39;;
    if ($check) {//如果urls中有?
      if(substr($old_url, $check+1) == &#39;&#39;)
      { //有问号,但是后面没有跟任何参数
        $first_urls=$old_url.&#39;page=1&#39;;//首页
        $pre_urls=$old_url.&#39;page=&#39;.($this->current_page-1);//上一页;
        $next_urls=$old_url.&#39;page=&#39;.($this->current_page+1);//下一页;
        $end_urls=$old_url.&#39;page=&#39;.$this->total_page;//末页
      }
      else {//有问号,并且有参数
        if (isset($_GET[&#39;page&#39;])) {//如果参数中包含page参数,则注销这个参数
          unset($_GET[&#39;page&#39;]);
          $old_url=&#39;http://&#39;.$_SERVER[&#39;HTTP_HOST&#39;].$_SERVER[&#39;PHP_SELF&#39;].&#39;?&#39;.http_build_query($_GET);
        }
        $first_urls=$old_url.&#39;&page=1&#39;;//首页
        $pre_urls=$old_url.&#39;&page=&#39;.($this->current_page-1);//上一页;
        $next_urls=$old_url.&#39;&page=&#39;.($this->current_page+1);//下一页;
        $end_urls=$old_url.&#39;&page=&#39;.$this->total_page;//末页
      }
    }
    else{// 如果没有问号(也就是说后面没有任何参数,则直接跟)
      $first_urls=$old_url.&#39;?page=1&#39;;
      $first_urls=$old_url.&#39;?page=1&#39;;//首页
      $pre_urls=$old_url.&#39;?page=&#39;.($this->current_page-1);//上一页;
      $next_urls=$old_url.&#39;?page=&#39;.($this->current_page+1);//下一页;
      $end_urls=$old_url.&#39;?page=&#39;.$this->total_page;//末页
    }
    // echo $this->table_name.&#39;table_name&#39;;
    return &#39;
    <p class="page">
      <a>【共&#39;.$this->total_page.&#39;页,第&#39;.$this->current_page.&#39;页】</a>
      <a href="&#39;.$first_urls.&#39;" rel="external nofollow" >首页</a>
      <a href="&#39;.$pre_urls.&#39;" rel="external nofollow" >上一页</a>
      <a href="&#39;.$next_urls.&#39;" rel="external nofollow" >下一页</a>
      <a href="&#39;.$end_urls.&#39;" rel="external nofollow" >末页</a>
    </p>
    &#39;;
  }
  public function get_total_page()
  {
    return ceil($this->total_record/$this->page_size);
  }
}
// $page=new PrePage();
// $res=$page->entrance(&#39;log&#39;,10);
// echo "<hr />";
// foreach ($res as $key => $row) {
// echo $row[&#39;urls&#39;].&#39;<br />&#39;;
// }
// echo $page->page_bar();
?>

相关推荐:

SQLite PHP接口详解

PHP操作SQLite数据库类与用法

PHP中PDO实现的SQLite操作类

以上是php基于SQLite实现分页功能的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn