经典php分页代码,支持数字偏移
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-15 16:33:58 浏览: 评论:0
这款php分页代码是一款完整的php mysql css的经典分页功能,很适合于大分类有像phpwindow dz等论坛效果.
CSS样式代码如下:
- <style type="text/css">
- <!--
- body {
- width:800px;
- margin:0 auto;
- margin-top:50px;
- font-size:12px;
- }
- a {
- color:#014ccc;
- text-decoration:none;
- }
- .div {
- float:left;
- cursor:pointer;
- font-weight:bold;
- margin-right:5px;
- display: block;
- padding:3px 7px;
- text-align:center;
- border:#bbdded solid 1px;
- }
- .divs {
- float:left;
- font-weight:bold;
- margin-right:5px;
- display: block;
- padding:3px 7px;
- text-align:center;
- border:#cccccc solid 1px;
- }
- .divsi {
- float:left;
- font-weight:bold;
- margin-right:5px;
- display: block;
- padding:3px 7px;
- text-align:center;
- background:#3399ff;
- color:#ffffff;
- border:#cccccc solid 1px;
- }
- .div:hover {
- background:#3399ff;
- color:#ffffff;
- }
- .divsi:hover {
- background:#3399ff;
- color:#ffffff;
- }
- -->
- </style>
PHP实例效果代码如下:
- <?php
- mysql_connect('localhost','root','');
- mysql_select_db('news');
- mysql_query('set names gbk');
- $sql = mysql_query("select * from `v_char`");
- $num = mysql_num_rows($sql);
- include 'page.class.php';
- /*参数说明:
- *getpages($pagesize,$pagenum,$page,$init,$page_len);
- *$pagesize 每页记录
- *$pagenum 总记录数
- *$page $_get[page]
- *$init 数字分页最小数,默认为1,一般不用更改。
- *$page_len 数字分页的数量。
- */
- $model = new getpages(10,$num,$_get['page']);
- $sql = "select * from `v_char` limit $model->offset,$model->pagesize";
- $res = mysql_query($sql);
- while($row = mysql_fetch_assoc($res))
- {
- echo $row['id'] . " - " . $row['name'] .'<br>';
- }
- //输出分页信息
- echo $model->getpage();
- ?>
- page.class.php
- <?php
- /*
- * author:陈凯
- * data:2010-09-14
- */
- class getpages
- {
- public $pagesize; //每页记录
- public $offset; //起始记录数
- public $pagenum; //总记录
- public $page; //当前页码
- public $init; //数字分页最左边数字
- public $page_len; //数字分页最右边数字
- public $pages; //总页数
- //初始化赋值。
- function __construct($pagesize,$pagenum,$page,$init=1,$page_len=7)
- {
- $this->pagesize = $pagesize;//每页记录
- $this->pagenum = $pagenum; //总记录
- $this->page = $page;
- $this->pages = ceil($this->pagenum/$this->pagesize); //总页数
- if(emptyempty($this->page) || $this->page <1 || $this->page > $this->pages)$this->page=1;
- $this->init = $init; //数字分页左
- $this->page_len = $page_len;//数字分页右
- $this->offset = ($this->page-1)*$this->pagesize;
- }
- //输出分页
- function getpage()
- {
- $this->prepg = $this->page-1; //上一页
- $this->nextpg= ($this->page == $this->pages) ? 0 : $this->page+1; //下一页
- // if($this->pages == 1) return false; //如果只有一页跳出
- $pagenav = "<span class='divs'>共 ".$this->pages."页".$this->pagenum."条</span>";
- if($this->page == 1)
- {
- $pagenav .="<a href='#' class='div'>首页</a> ";
- $pagenav .="<a href='#' class='div'>上一页</a> ";
- }
- else
- {
- $pagenav .="<a href='".$this->get_url()."=1' class='div'>首页</a> ";
- $pagenav .="<a href='".$this->get_url()."=".$this->prepg."' class='div'>上一页</a> ";
- }
- $pagenav .= $this->getvalpage(); //数字分页
- if($this->page == $this->pages)
- {
- $pagenav .="<a href='#' class='div'>下一页</a> ";
- $pagenav .="<a href='#' class='div'>尾页</a> ";
- }
- else
- {
- $pagenav .="<a href='".$this->get_url()."=".$this->nextpg."' class='div'>下一页</a> ";
- $pagenav .="<a href='".$this->get_url()."=".$this->pages."' class='div'>尾页</a> ";
- }//开源代码phpfensi.com
- //下拉菜单分页列表
- 代码如下 复制代码
- $pagenav .= "<select name='page' class='select' onchange='window.location.href="".$this->get_url()."="+this.value'> ";
- for($i=1;$i<=$this->pages;$i++)
- {
- if($i == $this->page){
- $pagenav .= "<option value='".$i."' selected>".$i."</option> ";
- }
- else
- {
- $pagenav .= "<option value='".$i."'>".$i."</option> ";
- }
- }
- $pagenav.="</select> ";
- return $pagenav;
- }
- //数字分页
- function getvalpage()
- {
- $max_p = $this->pages;
- $this->page_len = ($this->page_len%2) ? $this->page_len : $this->page_len+1; //如果为偶数便+1
- $pageoffset = ($this->page_len-1)/2; //数字分页左右数量
- //总页数和数字分页显示数
- if($this->pages > $this->page_len)
- {
- //数字分页左右数量大于等于当前页面,不进行偏移
- if($pageoffset>=$this->page)
- {
- $this->init = 1;
- $max_p= $this->page_len;
- }
- else
- {
- //当前页码+左右数量 大于总数量,不进行偏移
- if($this->page+$pageoffset > $this->pages)
- {
- $this->init = $this->pages-$this->page_len+1;
- }
- else
- {
- //进行偏移,最左边 当前页码 - 左右数量
- $this->init = $this->page-$pageoffset;
- $max_p = $this->page+$pageoffset;
- }
- }
- }
- //循环数字分页
- for($i=$this->init ;$i<=$max_p;$i++)
- {
- //$i 等于 当前页码
- if($i == $this->page)
- {
- $pagenav .= "<a href='#' class='divsi'>".$i."</a>";
- }
- else
- {
- $pagenav .= "<a href='".$this->get_url()."=".$i."' class='div'>".$i."</a>";
- }
- }
- return $pagenav;
- }
- //获取url地址
- function get_url()
- {
- $url = $_server['request_uri'];
- $parse_url = parse_url($url);
- $query_url = $parse_url['query']; //取出url上的参数
- if($query_url)
- {
- //将&page 替换为空
- $query_url = ereg_replace("(^|&)page=$this->page","",$query_url);
- $url = str_replace($parse_url['query'],$query_url,$url);
- if($query_url)$url .= '&page';
- else $url .= 'page';
- }
- else
- {
- $url .= '?page';
- }
- return $url;
- }
- }
- ?>
数据库代码如下:
- /*
- navicat mysql data transfer
- source server : localhost_3306
- source server version : 50051
- source host : localhost:3306
- source database : news
- target server type : mysql
- target server version : 50051
- file encoding : 65001
- date: 2010-03-30 00:17:08
- */
- set foreign_key_checks=0;
- -- ----------------------------
- -- table structure for `v_char`
- -- ----------------------------
- drop table if exists `v_char`;
- create table `v_char` (
- `id` int(10) not null auto_increment,
- `name` char(10) default null,
- primary key (`id`)
- ) engine=innodb auto_increment=401 default charset=gbk;
- -- ----------------------------
- -- records of v_char
- -- ----------------------------
- insert into `v_char` values ('1', 'test1');
- insert into `v_char` values ('2', 'test2');
- insert into `v_char` values ('3', 'test3');
- insert into `v_char` values ('4', 'test4');
- insert into `v_char` values ('5', 'test5');
- insert into `v_char` values ('6', 'test6');
- insert into `v_char` values ('7', 'test7');
- insert into `v_char` values ('8', 'test8');
- insert into `v_char` values ('9', 'test9');
- insert into `v_char` values ('10', 'test10');
- insert into `v_char` values ('11', 'test11');
- insert into `v_char` values ('12', 'test12');
Tags: php分页代码 数字偏移
- 上一篇:php ajax分页代码
- 下一篇:php分页代码(实用的分页程序)
相关文章
- ·php分页代码与分页原理(2013-11-12)
- ·简单入门级php分页代码(2014-05-10)
- ·两款实用php分页代码(2014-08-15)
- ·php分页代码(实用的分页程序)(2014-08-16)
- ·php分页代码(下一页 上一页)(2014-08-16)
- ·php分页代码(2014-08-16)
- ·php简单分页实例程序代码详解(2014-09-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)