⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page.class.php

📁 一个文章管理系统,很不错的,php语言开发,运行平台:windows和linux
💻 PHP
字号:
<?php
/**
 * 分页类
 *
 * @author      myblessu <sc@lin.net.cn>
 * @version     1.0
 * @lastupdate  2003-09-26
 *
 *
 * 使用实例:
 * $p = new page;		//建立新对像
 * $p->setpage(1);		//设置当前页为1页
 * $p->setpagesize(10);		//设置每页显示信息数,默认是10条
 * $p->settotal(200);		//设置信息总数
 * $p->setunit('条');		//设置分页信息单位,默认是条
 * $p->setinfo('信息');		//设置分页信息名称,默认是信息
 * $p->settablewidth('100%');	//设置显示宽度,默认是100%
 * $p->settablealign('center');	//设置显示对齐方式,默认是居中对齐
 * $p->settablecss('');		//设置文字的显示样式
 * $p->setall(page,total,pagesize,unit,info,tablewidth,tablealign,tablecss);
 *				//同时设置8个参数:
 *				1.当前页
 *				2.每页显示数
 *				3.信息总数
 *				4.信息单位
 *				5.信息名称
 *				6.显示宽度
 *				7.对齐方式
 *				8.文字样式
 *
 * $p->printpage($para1,$para2,$para3);
 *				//打印分页,共三个参数:
 *				1.传递的变量数组,可选。
 *					示例:共传递两个变量
 *					$para1[0][0]="random";	  //$para1[0][0]存放random变量名
 *					$para1[0][1]=$random;	  //$para1[0][1]存放random变量值
 *					$para1[1][0]="BigClass";  //$para1[1][0]存放BigClass变量名
 *					$para1[1][1]=$BigClass;   //$para1[1][1]存放BigClass变量值
 *				2.显示样式,可选
 *				3.是否显示分页说明信息,默认是显示
 *
 */
 
 
class page{

	var $page;			//当前页
	var $pagesize=10;		//每页显示数目
	var $total;			//总共条数

	var $unit="条";			//分页信息单位
	var $info="信息";		//说明信息
	var $tablewidth="100%";		//表格宽度
	var $tablealign="center";	//表格对齐方式
	var $tablecss;			//表格样式;
	
	var $output;			//输出	
	var $lang;
	
	function page(){
		global $page,$total;
		$this->page=$page;
		$this->total=$total;
	}

	//现在PHP还不支持构造涵数重载。
	/*
	function page($page,$total,$pagesize=20){
		$this->page=$page;
		$this->total=$total;
		$this->pagesize=$pagesize;
	}
	function page($page,$total,$pagesize=20,$unit,$info,$tablewidth,$tablealign,$tablecss){
		$this->page=$page;
		$this->total=$total;
		$this->pagesize=$pagesize;
		$this->unit=$unit;
		$this->info=$info;
		$this->tablewidth=$tablewidth;
		$this->tablealign=$tablealign;
		$this->tablecss=$tablecss;
	}
	*/
	
	function setpage($page){
		$this->page=$page;
	}
	
	function setpagesize($pagesize){
		$this->pagesize=$pagesize;
	}
	
	function settotal($total){
		$this->total=$total;
	}
	
	function setunit($unit){
		$this->unit=$unit;
	}
	
	function setinfo($info){
		$this->info=$info;
	}
	
	function settablewidth($tablewidth){
		$this->tablewidth=$tablewidth;
	}
	
	function settablealign($tablealign){
		$this->tablealign=$tablealign;
	}
	
	function settablecss($tablecss){
		$this->tablecss=$tablecss;
	}
	
	function setall($page,$total,$pagesize,$unit,$info,$tablewidth,$tablealign,$tablecss){
		$this->page=$page;
		$this->total=$total;
		$this->pagesize=$pagesize;
		$this->unit=$unit;
		$this->info=$info;
		$this->tablewidth=$tablewidth;
		$this->tablealign=$tablealign;
		$this->tablecss=$tablecss;
	}
	
	
	function printpage($paraArr=null,$css=null,$showtop=1){
		global $lang;
		if (!is_numeric($this->page)){
			$this->err($lang['page.str3']);
			return;
		}
		if (!is_numeric($this->pagesize)){
			$this->err($lang['page.str4']);
			return;
		}
		if (!is_numeric($this->total)){
			$this->err($lang['page.str5']);
			return;
		}
		
		if ($css==null){
			$this->returnpage($paraArr,$showtop);
			echo $this->output;
		}else{
			if (is_int($css)){
				$this->returnpage1($paraArr,$showtop);
				echo $this->output;
			}else{
				$this->err($lang['page.str6']);
			}
		}
		//$this->_printHiddenForm();
	}

	function _printHiddenForm($arr=array()){
		if( empty($arr) ){
			global $_POST;
			$arr =& $_POST;
			foreach( $arr as $name => $val ){
				if( is_array($val) && !empty($val) ){
					_printHiddenForm($val);
				} else{
					echo '<input type="hidden" name="'.$name.'" value="'.urlencode($val).'">';
				}
			}
		}
	}
	
	function returntop(){
		global $lang;
		$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
		$this->output.="<tr><td align=right height=20>".$lang['page.str1']." <b>".$this->pagesize."</b> ".$this->unit.",".$lang['page.str2']." <b>".$this->total."</b> ".$this->unit.$this->info."</td></tr>\n";
		$this->output.="</table>\n";
	}
	
	function returngoPage(){
		$this->output.="<script>\n";
		$this->output.="function goPage(page){\n";
		$this->output.="	document.goPageform.page.value=page;\n";
		$this->output.="	document.goPageform.submit();\n";
		$this->output.="}\n";
		$this->output.="</script>\n";	
	}
	
	//显示:页次:1/1 页    分页:首页 上一页 下一页 尾页   转到:页 
	function returnpage($paraArr,$showtop){
		global $lang;
		$p=floor(($this->page-1) / 10);
		$pagecount=ceil($this->total / $this->pagesize);
		
		if ($showtop) $this->returntop();
		$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
		$this->returngoPage();
		$this->output.="<form name=goPageform method=Post>\n";
		
		for ($i=0;$i<count($paraArr);$i++){
			$this->output.="<input type=hidden name=\"".$paraArr[$i][0]."\" value=\"".$paraArr[$i][1]."\">\n";	
		}
		
		$this->output.="<tr><td>".$lang['page.str7']."<font color=red>".$this->page."</font>/".$pagecount." ".$lang['page.str9']."&nbsp;";
		$this->output.="</td><td align=right>".$lang['page.str8']."\n";
		
		if ($this->page<=1){
			$this->output.=$lang['page.str10']."&nbsp;".$lang['page.str11']."&nbsp;";
		}else{
			$this->output.="<a href=\"javascript:goPage('1');\" title=\"".$lang['page.str12']."\">".$lang['page.str10']."</a>&nbsp;";
   			$this->output.="<a href=\"javascript:goPage('".($this->page-1)."');\" title=\"".$lang['page.str11']."\">".$lang['page.str11']."</a>&nbsp;";
   		}

		if (($this->page+1)>$pagecount){
			$this->output.=$lang['page.str13']."&nbsp;".$lang['page.str15']."\n";
		}else{
			$this->output.="<a href=\"javascript:goPage('".($this->page+1)."');\" title=\"".$lang['page.str13']."\">".$lang['page.str13']."</a>&nbsp;\n";
    			$this->output.="<a href=\"javascript:goPage('".$pagecount."');\" title=\"".$lang['page.str14']."\">".$lang['page.str15']."</a>\n";
  		}

		$this->output.="&nbsp;&nbsp;".$lang['page.str16']."<input type='text' class=page name=page size=1 maxlength=4 ";
		if ($pagecount==1) $this->output.=" disabled";
		$this->output.=">".$lang['page.str9']."</td>";
		$this->output.="<td width=25 align=right><input type='submit' style='height:17;font-size:9pt' value='GO' name='cndok'";
		if ($pagecount==1) $this->output.=" disabled";
		$this->output.="></td></tr></form></table>\n";
	}
	
	//显示: 页次:2/3 页    分页: [1] [2] [3] 转:页
	function returnpage1($paraArr,$showtop){
		global $lang;
		$p=floor(($this->page-1) / 10);
		$pagecount=ceil($this->total / $this->pagesize);
		
		if ($showtop) $this->returntop();
		$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
		$this->returngoPage();
		$this->output.="<form name=goPageform method=Post>\n";
		
		for ($i=0;$i<count($paraArr);$i++){
			$this->output.="<input type=hidden name=\"".$paraArr[$i][0]."\" value=\"".$paraArr[$i][1]."\">\n";	
		}
		
		$this->output.="<tr><td>".$lang['page.str7']."<font color=red>".$this->page."</font>/".$pagecount.$lang['page.str9']." &nbsp;";
		$this->output.="</td><td align=right>".$lang['page.str8']."\n";
		if ($p*10>0){
			$this->output.="<a href=\"javascript:goPage('".($p)."');\" title=\"".$lang['page.str17'].($p)." ".$lang['page.str9']."\">[<<]</a>   ";
		}
		for ($ii=($p*10+1);$ii<=($p*10+10);$ii++){
			if ($ii<=$pagecount){
			   	if($ii==$this->page){
	        	 		$this->output.="<font color=red>[".$ii."]</font> \n";
				}else{
			      		$this->output.="<a href=\"javascript:goPage('".$ii."');\" title=\"".$lang['page.str17'].$ii.$lang['page.str9']."\"><font color=blue>[".$ii."]</font></a>   \n";
			   	}
			}
		}
		if ($ii<=$pagecount){
			$this->output.="<a href=\"javascript:goPage('".$ii."');\" title=\"".$lang['page.str17'].$ii.$lang['page.str9']."\">[>>]</a>   \n";
		}

		$this->output.=$lang['page.str16']."<input type='text' class=page name=page size=1 maxlength=4 ";
		if ($pagecount==1) $this->output.=" disabled";
		$this->output.=">".$lang['page.str9']."</td>";
		$this->output.="<td width=25 align=right><input type='submit' style='height:17;font-size:9pt' value='GO' name='cndok'";
		if ($pagecount==1) $this->output.=" disabled";
		$this->output.="></td></tr></form></table>\n";
	}
	function err($msg){
		echo $msg;
	}
}
class SoPaginationClass{
/*======================================================
类名: SoPaginationClass
功能:分页类,并且提供相邻页的链接(数据无限量),提供数据库和文本两种使用实例
原创作者:西大浪人 (simonlsy@vip.sina.com) 2005-4-8
程序完善:纯粹误会 (http://www.zh5j.com QQ:44922032)2005-4-28
修改:Phzzy (http://www.phzzy.org) 2005-7-20
----------
请尊重作者的劳动,保留如上注释信息
----------
比较另类
=======================================================*/
var $mBegin;//当前分页超始位置
var $mEnd;//当前分页结束位置(不含)
var $mPageCode;#分页链接代码

function SoPaginationClass($total,$per=1,$midNum=10,$nowfont_class="nowpage",$font_class='pagefont')
{
$prepage="prepage";
$nextpage="nextpage";
$font="style=\"font-family:Webdings\"";

GLOBAL $HTTP_GET_VARS,$HTTP_SERVER_VARS;//兼容PHP4.1以下的服务器

if(!$total)return $this->mPageCode=' ';//为零的总数处理

$page_cnt=ceil($total/$per);//计算页数(取整返回)
$this->mPageCode='';#输出的分页链接初值
@$page=$HTTP_GET_VARS['page'];

if($page < 1) $page=1;
elseif($page>$page_cnt)$page=$page_cnt;
$next_page=$page+1;
$prev_page=$page-1;

/*下面是一个纯粹误会早期所写的复杂语句,功能:让当前页永远距中,并使分页链接数量保持平衡*/
$offset=floor($midNum/2);
$current_page=$page;
if($current_page-$offset<=0)$current_page=$offset+1;
if($current_page+$offset>$page_cnt)$current_page=$page_cnt-$offset;
$begin=($current_page-$offset)>0?$current_page-$offset:1;
$end=($current_page+$offset)<$page_cnt?$current_page+$offset:$page_cnt;
/*复杂语句Over*/

/*获取地址,不说下面中间两条语句多余,那是一个数组型的$_GET的除Bug方案*/
$SELF="http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]?";
@$QUERY=$_SERVER["QUERY_STRING"];
$query_page=preg_replace(array("!((&|^)page=([^&]+))|(page=)!","!(^&)|[&]{2,}|([&]$)!"),array('',''),$QUERY);
$query_per=preg_replace(array("!((&|^)page_per=([^&]+))|(page_per=)!","!(^&)|[&]{2,}|([&]$)!"),array('',''),$QUERY);
$query_page=$SELF.$query_page.($query_page?"&":"");
$query_per=$SELF.$query_per.($query_per?"&":"");
/*获取地址 Over*/

#自定义每页的记录数
if($page_cnt==1)
{
$this->mPageCode.="";
}
else
{
$this->mPageCode.=$page>1
? "\n<a href=\"{$query_page}page=1\"><span $font>9</span></a>\n<a href=\"{$query_page}page=$prev_page\" title=\"上一页(Back)\"><span $font>7</span></a>"
: "\n<span $font>9</span>&nbsp;<span $font>7</span>";

#中间页
for($i=$begin;$i<=$end;$i++)
{
$this->mPageCode.=$page==$i
? "\n<span class='$nowfont_class'>$i</span>"
: "\n<span><a href=\"{$query_page}page=$i\" class='$font_class'>$i</a></span>";
}

$this->mPageCode.=$page<$page_cnt
? "\n<a href=\"{$query_page}page=$next_page\" title=\"下一页(Next)\" ><span $font>8</span></a>\n<a href=\"{$query_page}page=$page_cnt\"><span $font>:</span></a>"
: "\n<span $font>8</span>&nbsp;<span $font>:</span>";
}

}
}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -