超强分页类2.0发布,支持自定义风格,默认4种显示模式_PHP教程
超强分页类2.0发布,支持自定义风格,默认4种显示模式
看到论坛上有人求百度分页类,所以把几周前的分页类贴出来。
2.0相对1.0修正如下:
1、支持PHP4和PHP5
2、增加了对ajax分页的功能
3、优化了程序整体结构
4、增加了自定义风格的功能
代码如下:
/**
* filename: ext_page.class.php
* @package:phpbean
* @author :feifengxlq
* @copyright :Copyright 2006 feifengxlq
* @license:version 2.0
* @create:2006-5-31
* @modify:2006-6-1
* @modify:feifengxlq 2006-11-4
* description:超强分页类,四种分页模式,默认采用类似baidu,google的分页风格。
* 2.0增加功能:支持自定义风格,自定义样式,同时支持PHP4和PHP5,
* to see detail,please visit [url=http://www.phpobject.net/blog/read.php]http://www.phpobject.net/blog/read.php[/url]?
* example:
* 模式四种分页模式:
require_once('../libs/classes/page.class.php');
$page=new page(array('total'=>1000,'perpage'=>20));
echo 'mode:1
'.$page->show();
echo '
mode:2
'.$page->show(2);
echo '
mode:3
'.$page->show(3);
echo '
mode:4
'.$page->show(4);
开启AJAX:
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
echo 'mode:1
'.$ajaxpage->show();
采用继承自定义分页显示模式:
demo:http://www.phpobject.net/blog
*/
class page
{
/**
* config ,public
*/
var $page_name="PB_page";//page标签,用来控制url页。比如说xxx.php?PB_page=2中的PB_page
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动作名
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))||($totalerror(__FUNCTION__,$total.' is not a positive integer!');
if((!is_int($perpage))||($perpageerror(__FUNCTION__,$perpage.' is not a positive integer!');
if(!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)*$this->perpage;
if(!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->nowindextotalpage){
return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
}
return ''.$this->next_page.'';
}
/**
* 获取显示“上一页”的代码
*
* @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 ''.$this->pre_page.'';
}
/**
* 获取显示“首页”的代码
*
* @return string
*/
function first_page($style='')
{
if($this->nowindex==1){
return ''.$this->first_page.'';
}
return $this->_get_link($this->_get_url(1),$this->first_page,$style);
}
/**
* 获取显示“尾页”的代码
*
* @return string
*/
function last_page($style='')
{
if($this->nowindex==$this->totalpage){
return ''.$this->last_page.'';
}
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;$ipagebarnum;$i++)
{
if($itotalpage){
if($i!=$this->nowindex)
$return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style));
else
$return.=$this->_get_text(''.$i.'');
}else{
break;
}
$return.="\n";
}
unset($begin);
return $return;
}
/**
* 获取显示跳转按钮的代码
*
* @return string
*/
function select()
{
$return='';
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($url)){
//手动设置
$this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."=";
}else{
//自动获取
if(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($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('1')将返回[1]
*
* @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($style))?'':'class="'.$style.'"';
if($this->is_ajax){
//如果是使用AJAX模式
return 'ajax_action_name.'(\''.$url.'\')">'.$text.'';
}else{
return ''.$text.'';
}
}
/**
* 出错处理方式
*/
function error($function,$errormsg)
{
die('Error in file '.__FILE__.' ,Function '.$function.'() :'.$errormsg);
}
}
?>
提供一个简单的演示demo
require_once('../libs/classes/page.class.php');
$page=new page(array('total'=>1000,'perpage'=>20));
echo 'mode:1
'.$page->show();
echo '
mode:2
'.$page->show(2);
echo '
mode:3
'.$page->show(3);
echo '
mode:4
'.$page->show(4);
echo '
开始AJAX模式:';
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
echo 'mode:1
'.$ajaxpage->show();
?>
演示地址:http://traffic02.100steps.net/52site/test/page.php

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

방해 금지 모드에서 전화를 받는 것조차 매우 짜증나는 경험이 될 수 있습니다. 이름에서 알 수 있듯이 방해 금지 모드는 모든 수신 전화 알림과 이메일, 메시지 등의 알림을 끕니다. 다음 솔루션 세트를 따라 문제를 해결할 수 있습니다. 수정 1 – 초점 모드 활성화 휴대폰에서 초점 모드를 활성화합니다. 1단계 – 위에서 아래로 스와이프하여 제어 센터에 액세스합니다. 2단계 – 다음으로 휴대폰에서 "초점 모드"를 활성화합니다. 집중 모드는 전화기에서 방해 금지 모드를 활성화합니다. 수신 전화 알림이 전화기에 표시되지는 않습니다. 수정 2 - 초점 모드 설정 변경 초점 모드 설정에 문제가 있는 경우 이를 수정해야 합니다. 1단계 – iPhone 설정 창을 엽니다. 2단계 – 다음으로 집중 모드 설정을 켭니다.

1. 아래 그림은 edius의 기본 화면 레이아웃입니다. 기본 EDIUS 창 레이아웃은 가로 레이아웃이므로 단일 모니터 환경에서는 많은 창이 겹쳐져 있으며 미리보기 창은 단일 창 모드입니다. 2. [보기] 메뉴 바를 통해 [듀얼 윈도우 모드]를 활성화하면 미리보기 창에 재생 창과 녹음 창이 동시에 표시되도록 할 수 있습니다. 3. [보기 메뉴바>창 레이아웃>일반]을 통해 기본 화면 레이아웃을 복원할 수 있습니다. 또한, 자신에게 맞는 레이아웃을 사용자 정의하여 자주 사용하는 화면 레이아웃으로 저장할 수도 있습니다. 창을 자신에게 맞는 레이아웃으로 드래그한 후 [보기 > 창 레이아웃 > 현재 레이아웃 저장 > 새로 만들기]를 클릭한 후 팝업 [현재 레이아웃 저장] 레이아웃] 작은 창에 레이아웃 이름을 입력하고 확인을 클릭합니다.

엑셀 표에서는 데이터의 변화 추세를 보다 직관적으로 확인하기 위해 좌표축을 삽입해야 하는 경우가 있습니다. 아직 테이블에 좌표축을 삽입하는 방법을 모르는 친구들이 있습니다. 다음으로 Excel에서 좌표축 배율을 사용자 정의하는 방법을 알려 드리겠습니다. 좌표축 삽입 방법: 1. Excel 인터페이스에서 데이터를 선택합니다. 2. 삽입 인터페이스에서 클릭하여 세로 막대형 차트 또는 막대형 차트를 삽입합니다. 3. 확장된 인터페이스에서 그래픽 유형을 선택합니다. 4. 테이블의 마우스 오른쪽 버튼 클릭 인터페이스에서 데이터 선택을 클릭합니다. 5. 확장된 인터페이스에서 사용자 정의할 수 있습니다.

Youku 소프트웨어는 모든 사람이 시청할 수 있도록 다양한 비디오 리소스를 통합합니다. 그리고 비디오를 다운로드할 때 친구가 비디오의 기본 다운로드 해상도를 설정할 수 있습니다. 그렇다면, 기억하십시오. 자세한 내용을 보려면 PHP 중국어 웹사이트를 방문하세요. Youku의 기본 다운로드 해상도를 공유하는 방법 1. 먼저 휴대폰에서 Youku Video 앱을 열고 페이지 오른쪽 하단에 있는 [내]를 클릭하여 전환합니다. 2. 마이페이지에 접속하신 후, 아래의 [설정] 기능을 찾아 클릭하시면 열립니다. 3. 설정 페이지에 [기본 다운로드 해상도]가 있습니다. 이를 클릭하여 설정으로 들어갑니다. 4. 마지막으로 기본 다운로드 해상도 페이지에 옵션 목록이 표시됩니다. 설정하려는 해상도를 선택하세요.

PHP 배열을 페이지화하는 가장 일반적인 두 가지 방법은 array_slice() 함수를 사용하는 것입니다. 건너뛸 요소 수를 계산한 다음 지정된 요소 범위를 추출합니다. 내장 반복자 사용: Iterator 인터페이스를 구현하고 rewind(), key(), current(), next() 및 valid() 메서드를 사용하여 지정된 범위 내의 요소를 탐색합니다.

전자와 반각 문자의 차이점은 무엇입니까? 일상생활에서 우리는 전자와 반각이라는 두 가지 개념을 자주 접하게 되는데, 특히 이 두 글자를 사용하는 입력 방법, 조판, 인쇄 등에서 더욱 그렇습니다. 그렇다면 전자와 반각 문자의 차이점은 무엇입니까? 아래에서 이 문제를 논의해 보겠습니다. 우선 전각문자와 반각문자는 원래 중국 타자기에 의해 도입된 개념이었다. 소위 반각문자란 문자 폭의 절반을 차지하는 문자를 말하며, 주로 영문자와 아라비아 숫자를 가리킨다. 전폭 문자가 차지함

최근 삼성디스플레이와 마이크로소프트(MS)가 중요한 협력 협약을 체결했다. 이번 협약에 따라 삼성디스플레이는 수십만 개의 혼합현실(MR) 헤드마운트 기기용 OLEDoS 패널을 개발해 마이크로소프트에 공급하게 된다. 마이크로소프트는 게임, 영화 등 멀티미디어 콘텐츠용 MR 기기를 개발할 예정이다. OLEDoS 사양이 확정된 후 출시될 예정이며, 주로 상업용 분야에 서비스를 제공할 예정이며, 이르면 2026년에 출시될 것으로 예상됩니다. OLEDoS(OLED on Silicon) 기술 OLEDoS는 실리콘 기판에 OLED를 증착하는 새로운 디스플레이 기술로, 기존 유리 기판에 비해 더 얇고 픽셀이 높습니다. OLEDoS 디스플레이와 일반 디스플레이

C++ 소프트웨어는 중국어 지원을 어떻게 구현합니까? 세계화 과정에서 중국어를 포함한 여러 언어를 지원해야 하는 소프트웨어가 점점 더 많아지고 있습니다. C++ 개발에서 중국어 지원 구현은 복잡하지 않으며 몇 가지 기본 기술과 도구만 있으면 쉽게 완료할 수 있습니다. 이 기사에서는 C++ 소프트웨어에서 중국어 지원을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 유니코드 인코딩을 사용하십시오. 중국어를 지원하려면 먼저 소프트웨어가 내부적으로 유니코드 인코딩을 사용하는지 확인해야 합니다. 유니코드는 표준이다
