<?php /** * example: * 模式四种分页模式: require_once('libs/classes/page.class.php'); $page=new page(array('total'=>1000,'perpage'=>20)); echo 'mode:1<br>'.$page->show(); echo '<hr>mode:2<br>'.$page->show(2); echo '<hr>mode:3<br>'.$page->show(3); echo '<hr>mode:4<br>'.$page->show(4); 开启AJAX: $ajaxpage=new page(array ('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test')); echo 'mode:1<br>'.$ajaxpage->show(); 采用继承自定义分页显示模式: */ class page { /** * config ,public */ var $page_name = "PB_page" ; //page标签,用来控制url页 var $next_page = '>' ; //下一页 var $pre_page = '<' ; //上一页 var $first_page = 'First' ; //首页 var $last_page = 'Last' ; //尾页 var $pre_bar = '<<' ; //上一分页条 var $next_bar = '>>' ; //下一分页条 var $format_left = '[' ; var $format_right = ']' ; var $is_ajax =false; //是否支持AJAX分页模式 /** * private * */ var $pagebarnum =10; //控制记录条的个数。 var $totalpage =0; //总页数 var $ajax_action_name = '' ; //AJAX动作名 //开源代码phpfensi.com var $nowindex =1; //当前页 var $url = "" ; //url地址头 var $offset =0; /** * constructor构造函数 * * @param array $array['total'],$array['perpage'],$array['nowindex'],$array ['url'],$array['ajax'] */ function page( $array ) { if ( is_array ( $array )){ if (! array_key_exists ( 'total' , $array )) $this ->error( __FUNCTION__ ,'need a param of total'); $total = intval ( $array [ 'total' ]); $perpage =( array_key_exists ( 'perpage' , $array ))? intval ( $array [ 'perpage' ]):10; $nowindex =( array_key_exists ( 'nowindex' , $array ))? intval ( $array [ 'nowindex' ]): '' ; $url =( array_key_exists ( 'url' , $array ))? $array [ 'url' ]: '' ; } else { $total = $array ; $perpage =10; $nowindex = '' ; $url = '' ; } if ((! is_int ( $total ))||( $total <0)) $this ->error( __FUNCTION__ , $total .' is not a positive integer!'); if ((! is_int ( $perpage ))||( $perpage <=0)) $this ->error( __FUNCTION__ , $perpage .' is not a positive integer!'); if (! empty empty ( $array [ 'page_name' ])) $this ->set( 'page_name' , $array [ 'page_name' ]); //设置 pagename $this ->_set_nowindex( $nowindex ); //设置当前页 $this ->_set_url( $url ); //设置链接地址 $this ->totalpage= ceil ( $total / $perpage ); $this ->offset=( $this ->nowindex-1)* $perpage ; if (! empty empty ( $array [ 'ajax' ])) $this ->open_ajax( $array [ 'ajax' ]); //打开AJAX模式 } /** * 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception * * @param string $var * @param string $value */ function set( $var , $value ) { if (in_array( $var ,get_object_vars( $this ))) $this -> $var = $value ; else { $this ->error( __FUNCTION__ , $var . " does not belong to PB_Page!" ); } } /** * 打开倒AJAX模式 * * @param string $action 默认ajax触发的动作。 */ function open_ajax( $action ) { $this ->is_ajax=true; $this ->ajax_action_name= $action ; } /** * 获取显示"下一页"的代码 * * @param string $style * @return string */ function next_page( $style = '' ) { if ( $this ->nowindex< $this ->totalpage){ return $this ->_get_link( $this ->_get_url( $this ->nowindex+1), $this - >next_page, $style ); } return '<span class=".$style.">' . $this ->next_page. '</span>' ; } /** * 获取显示[上一页]的代码 * * @param string $style * @return string */ function pre_page( $style = '' ) { if ( $this ->nowindex>1){ return $this ->_get_link( $this ->_get_url( $this ->nowindex-1), $this - >pre_page, $style ); } return '<span class=".$style.">' . $this ->pre_page. '</span>' ; } /** * 获取显示[首页]的代码 * * @return string */ function first_page( $style = '' ) { if ( $this ->nowindex==1){ return '<span class=".$style.">' . $this ->first_page. '</span>' ; } return $this ->_get_link( $this ->_get_url(1), $this ->first_page, $style ); } /** * 获取显示[尾页]的代码 * * @return string */ function last_page( $style = '' ) { if ( $this ->nowindex== $this ->totalpage){ return '<span class=".$style.">' . $this ->last_page. '</span>' ; } return $this ->_get_link( $this ->_get_url( $this ->totalpage), $this - >last_page, $style ); } function nowbar( $style = '' , $nowindex_style = '' ) { $plus = ceil ( $this ->pagebarnum/2); if ( $this ->pagebarnum- $plus + $this ->nowindex> $this ->totalpage) $plus =( $this - >pagebarnum- $this ->totalpage+ $this ->nowindex); $begin = $this ->nowindex- $plus +1; $begin =( $begin >=1)? $begin :1; $return = '' ; for ( $i = $begin ; $i < $begin + $this ->pagebarnum; $i ++) { if ( $i <= $this ->totalpage){ if ( $i != $this ->nowindex) $return .= $this ->_get_text( $this ->_get_link( $this ->_get_url ( $i ), $i , $style )); else $return .= $this ->_get_text('<span class = ".$nowindex_style." > '.$i.' </span>'); } else { break ; } $return .= "n" ; } unset( $begin ); return $return ; } /** * 获取显示跳转按钮的代码 * * @return string */ function select() { $return = '<select name="PB_Page_Select">' ; for ( $i =1; $i <= $this ->totalpage; $i ++) { if ( $i == $this ->nowindex){ $return .= '<option value="' . $i . '" selected>' . $i . '</option>' ; } else { $return .= '<option value="' . $i . '">' . $i . '</option>' ; } } unset( $i ); $return .= '</select>' ; return $return ; } /** * 获取mysql教程 语句中limit需要的值 * * @return string */ function offset() { return $this ->offset; } /** * 控制分页显示风格 * * @param int $mode * @return string */ function show( $mode =1) { switch ( $mode ) { case '1' : $this ->next_page= '下一页' ; $this ->pre_page= '上一页' ; return $this ->pre_page(). $this ->nowbar(). $this ->next_page(). '第' . $this - >select(). '页' ; break ; case '2' : $this ->next_page= '下一页' ; $this ->pre_page= '上一页' ; $this ->first_page= '首页' ; $this ->last_page= '尾页' ; return $this ->first_page(). $this ->pre_page(). '[第' . $this - >nowindex. '页]' . $this ->next_page(). $this ->last_page(). '第' . $this ->select(). '页' ; break ; case '3' : $this ->next_page= '下一页' ; $this ->pre_page= '上一页' ; $this ->first_page= '首页' ; $this ->last_page= '尾页' ; return $this ->first_page(). $this ->pre_page(). $this ->next_page(). $this - >last_page(); break ; case '4' : $this ->next_page= '下一页' ; $this ->pre_page= '上一页' ; return $this ->pre_page(). $this ->nowbar(). $this ->next_page(); break ; case '5' : return $this ->pre_bar(). $this ->pre_page(). $this ->nowbar(). $this ->next_page (). $this ->next_bar(); break ; } } /*----------------private function (私有方法)----------------------------------- ------------------------*/ /** * 设置url头地址 * @param: String $url * @return boolean */ function _set_url( $url = "" ) { if (! empty empty ( $url )){ //手动设置 $this ->url= $url .(( stristr ( $url , '?' ))? '&' : '?' ). $this ->page_name. "=" ; } else { //自动获取 if ( empty empty ( $_SERVER [ 'QUERY_STRING' ])){ //不存在QUERY_STRING时 $this ->url= $_SERVER [ 'REQUEST_URI' ]. "?" . $this ->page_name. "=" ; } else { // if ( stristr ( $_SERVER [ 'QUERY_STRING' ], $this ->page_name. '=' )){ //地址存在页面参数 $this ->url= str_replace ( $this ->page_name. '=' . $this ->nowindex, '' , $_SERVER [ 'REQUEST_URI' ]); $last = $this ->url[ strlen ( $this ->url)-1]; if ( $last == '?' || $last == '&' ){ $this ->url.= $this ->page_name. "=" ; } else { $this ->url.= '&' . $this ->page_name. "=" ; } } else { // $this ->url= $_SERVER [ 'REQUEST_URI' ]. '&' . $this ->page_name. '=' ; } //end if } //end if } //end if } /** * 设置当前页面 * */ function _set_nowindex( $nowindex ) { if ( empty empty ( $nowindex )){ //系统获取 if (isset( $_GET [ $this ->page_name])){ $this ->nowindex= intval ( $_GET [ $this ->page_name]); } } else { //手动设置 $this ->nowindex= intval ( $nowindex ); } } /** * 为指定的页面返回地址值 * * @param int $pageno * @return string $url */ function _get_url( $pageno =1) { return $this ->url. $pageno ; } /** * 获取分页显示文字,比如说默认情况下_get_text('<a href="">1</a>')将返回[<a href="">1</a>] * * @param String $str * @return string $url */ function _get_text( $str ) { return $this ->format_left. $str . $this ->format_right; } /** * 获取链接地址 */ function _get_link( $url , $text , $style = '' ){ $style =( empty empty ( $style ))? '' : 'class="' . $style . '"' ; if ( $this ->is_ajax){ //如果是使用AJAX模式 return '<a ' . $style . ' href="网页特效:' . $this - >ajax_action_name. '(' '.$url.' ')">' . $text . '</a>' ; } else { return '<a ' . $style . ' href="' . $url . '">' . $text . '</a>' ; } } /** * 出错处理方式 */ function error( $function , $errormsg ) { die ( 'Error in file <b>' . __FILE__ . '</b> ,Function <b>' . $function .'()</b> :'. $errormsg ); } } $page = new page( array ( 'total' =>1000, 'perpage' =>20)); echo 'mode:1<br>' . $page ->show(); echo '<hr>mode:2<br>' . $page ->show(2); echo '<hr>mode:3<br>' . $page ->show(3); echo '<hr>mode:4<br>' . $page ->show(4); echo '<hr>开始AJAX模式:' ; $ajaxpage = new page( array ( 'total' =>1000, 'perpage' =>20, 'ajax' => 'ajax_page' , 'page_name' => 'test' )); echo 'mode:1<br>' . $ajaxpage ->show(); ?>
查看更多关于php 多风格的分页类(支持ajax分页)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did27964