经典php分页代码,支持数字偏移
这款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 ( empty empty ( $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' );查看更多关于经典php分页代码,支持数字偏移 - php分页的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did27920