本文实例讲述了php基于SQLite实现的分页功能。分享给大家供大家参考,具体如下:
这里操作数据库文件使用的是前面文章《PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】》中的SQLite数据库操作类。废话不说,直接上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<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程序设计有所帮助。