简单分页程序,adodb+smarty
08-31
分页类
- <?php
- /* Page.Class.php
- * Page
- * @link http://www.sunboyu.cn
- * @package OA
- * @version V1.0
- *
- * 2008 08 28 sunboyu@gmail.com
- * Demo
- $page = new Page( 1 , 'v_user' , '*' , '' );
- $rs = $page->__getlist();
- $smarty->assign("page",$page->__getpagelist());
- */
- class Page
- {
- public $count; #结果总数
- public $page; #当前页
- public $pagesize; #每页结果数
- public $pagecount; #翻页数
- public $baseurl; #url
- public $result; #结果数组集
- public $pagelist; #每翻页数
- public $db; #数据库连接
- public $table; #要查询的表
- public $fileds; #要返回的字段
- public $where; #where条件
- #构造函数,初始化变量
- function __construct( $page , $table , $fields = '*' , $where = false , $baseurl = false )
- {
- global $_CFG;
- $this->db = GetDB();
- $this->count = $count;
- $this->table = $table;
- $this->page = isset($page) ? intval($_GET['page']) : 1;
- $this->fileds = $fields;
- $this->pagesize = $_CFG['pagesize'];
- $this->baseurl = ($baseurl!=false) ? $baseurl : $this->__geturl();
- $this->pagelist = $_CFG['pagelist'];
- $this->where = $where;
- }
- #获得当前url
- function __geturl()
- {
- $str = ereg_replace(sprintf("(^|&)page=%d",$this->page),"",$_SERVER['QUERY_STRING']);
- return $str=="" ? '?' : $str;
- }
- #获得记录集
- function __getlist()
- {
- #获得count记录
- $sql = sprintf("SELECT COUNT(0) AS table_count FROM %s",$this->table);
- $rs = $this->db->Execute( $sql );
- $this->count = $rs->fields['table_count'];
- $offset = ($this->page-1)*$this->pagesize-1;
- $sql = sprintf("SELECT %s FROM %s %s",$this->fileds,$this->table,(($this->where!=false) ? " WHERE ".$this->where : ''));
- $rs = $this->db->SelectLimit( $sql , $this->pagesize , $offset );
- $list = false;
- while(!$rs->EOF)
- {
- $list[] = $rs->fields;
- $rs->MoveNext();
- }
- return $list;
- }
- #获得分页列表
- function __getpagelist()
- {
- $this->result['count'] = $this->count;
- $this->result['page'] = $this->page;
- $this->result['pagesize'] = $this->pagesize;
- $this->result['pagecount'] = ceil($this->count/$this->pagesize);
- if($this->result['pagecount']<=1) //只有一页以下
- {
- $this->result['pagelist'] = 0;
- }
- else //一页以上
- {
- #前一页,第一页的算法
- $this->result['first'] = ($this->page == 1) ? 0 : 1;
- $this->result['pre'] = ($this->page == 1) ? 0 : 1;
- #后一页,最后一页的算法
- $this->result['next'] = ($this->page == $this->pagecount ) ? 0 : 1;
- $this->result['last'] = ($this->page == $this->pagecount ) ? 0 : 1;
- #起始
- $pagearray = array();
- $start = floor(($this->page-1)/10)*10+1;
- for($i=0;$i<10;$i++)
- {
- if( ($start+$i) <= $this->result['pagecount'])
- {
- $pagearray[$i]['page'] = $start+$i;
- }
- if( ($start+$i) != $this->page )
- {
- $pagearray[$i]['link'] = 1;
- }
- }
- #分页导航列表
- $this->result['pagelist'] = $pagearray;
- $this->result['baseurl'] = $this->baseurl;
- }
- return $this->result;
- }
- }
- ?>
smarty模版
- {{config_load file="Lang.Page.$lang.conf"}}<div id="page">
- <table>
- <tr>
- <td>
- {{#gongs#}}{{$page.count}}{{#pagecountend#}} {{#pagepagesizeper#}}{{$page.pagesize}}{{#pagepagelistper#}}{{#tiao#}} {{#gongs#}}{{$page.pagecount}}{{#page#}} {{#pagepage#}}{{$page.page+1}}{{#page#}}
- </td>
- <td>
- {{if $page.pagecount>1}}
- {{if $page.first eq 1}}
- <a href="{{$page.baseurl}}">{{#pagefirst#}}</a>
- {{else}}
- {{#pagefirst#}}
- {{/if}}
- {{if $page.pre eq 1}}
- <a href="{{$page.baseurl}}&page={{$page.page-1}}">{{#pagepre#}}</a>
- {{else}}
- {{#pagepre#}}
- {{/if}}
- {{foreach from=$page.pagelist item=vols}}
- {{if $vols.link eq 1}}
- <a href="{{$page.baseurl}}&page={{$vols.page}}">[{{$vols.page}}]</a>
- {{else}}
- [{{$vols.page}}]
- {{/if}}
- {{/foreach}}
- {{if $page.next eq 1}}
- <a href="{{$page.baseurl|default:"?"}}&page={{$page.page+1}}">{{#pagenext#}}</a>
- {{else}}
- {{#pagenext#}}
- {{/if}}
- {{if $page.last eq 1}}
- <a href="{{$page.baseurl|default:"?"}}&page={{$page.pagecount}}">{{#pageend#}}</a>
- {{else}}
- {{#pagelast#}}
- {{/if}}
- {{/if}}
- </td>
- </tr>
- </table>
- </div>
语言包内容
- pagecountend = "条数据"
- pagepagesizeper = "每页"
- pagepagesizeend = "条"
- page = "页"
- tiao = "条"
- pagepage = "当前第"
- pagefirst = "首页"
- pagepre = "上一页"
- pagenext = "下一页"
- pagelast = "尾页"
- gongs = "共"