首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

超强分页类2.0发布,支持自定义风格,默认4种显示模式

看到论坛上有人求百度分页类,所以把几周前的分页类贴出来。
   2.0相对1.0修正如下:
  1、支持PHP4和PHP5
  2、增加了对ajax分页的功能
  3、优化了程序整体结构
  4、增加了自定义风格的功能

代码如下:
复制PHP内容到剪贴板
PHP代码:

<?
/**
 * filename: ext_page.class.php
 * @package:phpbean
 * @author :feifengxlq<feifengxlq#gmail.com><[url=http://www.phpobject.net/]http://www.phpobject.net/[/url]>
 * @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<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();
   采用继承自定义分页显示模式:
   demo:[url=http://www.phpobject.net/blog]http://www.phpobject.net/blog[/url]
 */
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))||($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(
$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(
$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(
$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('<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($style))?'':'class="'.$style.'"';
  if(
$this->is_ajax){
      
//如果是使用AJAX模式
   
return '<a '.$style.' href="javascript:'.$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);
 }
}
?>

[ 本帖最后由 feifengxlq 于 2007-10-10 14:47 编辑 ]
昵称: feifengxlq  时间: 2006-11-14 20:23:00
提供一个简单的演示demo
复制PHP内容到剪贴板
PHP代码:

<?
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);
echo 
'<hr>开始AJAX模式:';
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
echo 
'mode:1<br>'.$ajaxpage->show();
?>

演示地址:http://traffic02.100steps.net/52site/test/page.php

效果图见附件
昵称: feifengxlq  时间: 2006-11-14 20:40:00
提供自定义风格的演示demo一个。
地址:http://traffic02.100steps.net/52site/test/page2.php?PB_page=13

php代码
复制PHP内容到剪贴板
PHP代码:

<?
require_once('../libs/classes/page.class.php');
class 
mypage extends page
{
    function 
mypage($array)
 {
     
parent::page($array);
  
$this->first_page=1;
  
$this->last_page=$this->totalpage;
  
$this->set('format_left','');
  
$this->set('format_right','');
 }
 
 function 
show()
 {
     
$pagestr='<div class="pagenavi" id="lopage">页:';
  
$pagestr.=$this->first_page().' ';
  
$pagestr.=$this->nowbar('','curr');
  
$pagestr.='<span class="break">...</span>';
  
$pagestr.=$this->last_page();
  
$pagestr.='   (总计<span class="num">'.$this->totalpage.'</span>页) </div>';
  
$pagestr.='</div>';
  return 
$pagestr;
 }
}
$page=new mypage(array('total'=>1000,'perpage'=>20));
echo 
$page->show();
?>

其中用到的CSS样式
复制内容到剪贴板
代码:
<style type="text/css">
<!--
.pagenavi { text-align:center;  font: 11px Arial, tahoma, sans-serif; padding-top: 20px; padding-bottom: 10px; margin: 0px; }
.pagenavi a {border: 1px solid #E2F1AF; background: #FFFFFF; text-decoration: none; color:#C16012; display:inline-block; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi a:visited {border: 1px solid #E2F1AF; background: #FFFFFF; text-decoration: none; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi .break {border: medium none;  text-decoration: none; color:#C16012; background:;; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi .num {color:#C16012; font-size:12pt; padding-left:3px; padding-right:3px; padding-top:0; padding-bottom:0}
.pagenavi .curr {padding: 2px 6px; border-color: #999; font-weight: bold; font-size:12pt; background:transparent;}
.pagenavi a:hover {color: #C16012; background: #E2F1AF; text-decoration: none}
-->
</style>
昵称: feifengxlq  时间: 2006-11-14 21:00:00
好帖子,顶一下!
昵称: forest  时间: 2006-11-14 21:03:00
昵称: weiwei  时间: 2006-11-14 22:08:00
昵称: lmhllr  时间: 2006-11-14 22:33

绝对好贴,绝对的顶,
昵称: lmhllr  时间: 2006-11-14 22:33:00
:lol
昵称: cator  时间: 2006-11-15 00:30:00
这东西好啊.超强....
昵称: 凤舞酒天  时间: 2006-11-23 14:14:00
收了 好东西 呵呵
昵称: hangrila  时间: 2006-11-23 22:51:00
厉害。。。顶
昵称: laopi  时间: 2006-11-23 23:39:00
不错,收藏了,谢谢
昵称: stefenjun  时间: 2006-11-24 10:43:00
强啊!
昵称: 王洋姜  时间: 2006-11-25 00:05:00
收藏,感谢
昵称: ere  时间: 2006-11-25 00:10:00
强烈的顶
昵称: shenstef  时间: 2006-11-25 00:27:00
收藏!
昵称: dzjzmj  时间: 2006-11-25 01:37:00
feifengxlq 是华工的学生?我见到你的演示用百步梯的空间
昵称: xwoniu  时间: 2006-11-25 19:03:00
不错,下来试一下。多谢!
昵称: zssupertim  时间: 2006-11-26 12:25:00
厉害,看不懂
也不知道怎么用
写出来的效果很不错!
昵称: ak-1  时间: 2006-11-26 14:13:00
这个分页的下拉列表不能跳转!
昵称: Internet  时间: 2006-11-26 20:33:00
收藏了

昵称: forest  时间: 2006-12-14 09:46:00
先顶后看
昵称: unspace  时间: 2006-12-14 10:39:00
收藏;了
昵称: softly  时间: 2006-12-14 10:51:00
下拉跳转没有用
昵称: submit  时间: 2006-12-14 10:52:00
不是一般的好
昵称: dmkf  时间: 2006-12-21 23:06:00
不错
昵称: lu5266  时间: 2006-12-22 02:08:00
不错
收藏・・~
昵称: jyb21  时间: 2006-12-22 09:56:00
收藏...:lol
昵称: Poon  时间: 2006-12-22 16:21:00
收藏了
昵称: suturn-ly  时间: 2006-12-22 16:42:00
收下了
昵称: jeffeng  时间: 2006-12-30 14:20:00
要写出这样的类,需要什么样的水平,楼主接触PHP多久了
昵称: aerial  时间: 2006-12-31 13:10:00
为什么我用了,显示出错?求助

我文件源代码:
-----------------------
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" c>
</head>
<body>
<?php
require_once('conn.php');
require_once('lib/page.class.php');
?>
<?php
$result=mysql_query("select * from book");
?>
<table width="700" align="center" cellspacing="1" bgcolor="#CCCCCC">
  <tr align="center">
    <td>ID:</td>
    <td>名称:</td>
    <td>详细:</td>
    <td> </td>
  </tr>
  <?php
  if($myrow=mysql_fetch_array($result)){
  do{
?>
  <tr align='center' bgcolor='#FFFFFF'>
    <td><?php echo"<a href='view.php?ljl_id=$myrow[ljl_id]'>$myrow[0]</a>";?></td>
    <td><?php echo"$myrow[1]";?></td>
    <td><?php echo"$myrow[2]";?></td>
    <td><a href="edit.php?ljl_id=<?php echo"$myrow[ljl_id]";?>">修改</a> <a href="del.php?ljl_id=<?php echo"$myrow[ljl_id]";?>">删除</a></td>
  </tr>
  <?php
}
while($myrow=mysql_fetch_array($result));
}else
echo"<script>alert(\"没有相关记录\");location.href=\"index.php\";</script>";
?>
</table>
<?
$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();
?>
</body>
</html>


出错提示:
Notice: Undefined property: perpage in d:\usr\www\html\ljlphp\lib\page.class.php on line 80

----------------------------
原类代码没有改变的
昵称: 玉面修罗  时间: 2006-12-31 13:32:00
显示分页,一般用JS

PHP告诉JS总行数,分页大小,当前页数就可以了!!!

好处:1、修改方便 2、减轻服务器负担
昵称: noble  时间: 2006-12-31 13:58:00
不错嘛 强人
昵称: terry39  时间: 2006-12-31 17:02:00
像分页这些我都用JS去做的。

用JS去代替部分PHP劳动是我的观点!
昵称: mooncn  时间: 2006-12-31 17:04:00
果然是超级强的
昵称: shenzhe  时间: 2007-01-02 19:14:00
引用:
原帖由 zssupertim 于 2006-11-26 12:25 发表
feifengxlq 是华工的学生?我见到你的演示用百步梯的空间
难道你也是?呵呵~~
昵称: loveathena  时间: 2007-01-04 11:55:00
引用:
原帖由 terry39 于 2006-12-31 17:02 发表
显示分页,一般用JS

PHP告诉JS总行数,分页大小,当前页数就可以了!!!

好处:1、修改方便 2、减轻服务器负担
你们说的用JS分页是怎样的?一开始把数据全取出然后再用js来分页么?
昵称: finian  时间: 2007-01-04 22:35:00
谢谢楼主了
支持一下
以后多给一些
帮助我们这些初学者
昵称: finian  时间: 2007-01-04 22:42:00
强。。虽然还看不懂也要支持
昵称: 3x032  时间: 2007-01-04 22:47:00
还能有比这更好的帖吗?
昵称: mqfcuv  时间: 2007-01-06 10:42:00
这么长
会不会影响执行的效率?
昵称: 19342174  时间: 2007-01-06 14:19:00
有没有PHP5风格的哦~!
昵称: 七月十五  时间: 2007-01-07 00:38:00
好东西,收下了。。。 :lol
昵称: falloutxxx2  时间: 2007-01-07 01:38:00
弄下来,好好学了,
昵称: wuzhongao  时间: 2007-01-11 15:55:00
:victory:
昵称: naodai  时间: 2007-01-12 19:01:00
,
LZ     �c�粝吕��]反��哦.不知道其他人是否也是�@��.

[ 本帖最后由 lucky.zhang 于 2007-1-15 16:03 编辑 ]
昵称: jnkq  时间: 2007-01-15 15:40:00
一直再做测试,也一直没搞明白你如何跟数据库的结合哦 能给个列子吗?
昵称: lucky.zhang  时间: 2007-01-15 15:56:00
郁闷!这东西让菜鸟看了一头雾水....
昵称: wang15109133  时间: 2007-01-19 13:06:00
好文章啊   学到不少~~
昵称: Ydl  时间: 2007-01-28 16:26:00
昵称: jianchuan1216  时间: 2007-1-31 11:19

疯狂的版主
昵称: 小竣  时间: 2007-01-28 17:02:00
很强,收藏,谢谢!!!!
昵称: jianchuan1216  时间: 2007-01-31 11:19:00
专门上来顶一下啊!!
昵称: history  时间: 2007-01-31 11:52:00
好 啊
支持
昵称: louisliu  时间: 2007-01-31 17:50:00
      :victory:  :victory:  :victory:  :victory:  :victory:
昵称: 想学习的笨鸟  时间: 2007-03-06 14:42:00
好东西
昵称: boyzly  时间: 2007-03-21 14:49:00
好,好!!!
昵称: weilian000  时间: 2007-03-22 16:30:00

支持
昵称: emyshen  时间: 2007-04-18 15:14:00
好东西,帮顶

收下
昵称: feilaifeiqu  时间: 2007-04-18 16:18:00
好东西,帮顶。学习
昵称: cl360  时间: 2007-04-21 12:58:00
mysql怎么获取 limit 后的内容啊?
要自己写吗?
自己写了!

[ 本帖最后由 sooden 于 2007-4-25 14:29 编辑 ]
昵称: zwws  时间: 2007-04-21 13:59:00
引用:
原帖由 sooden 于 2007-4-25 10:29 发表
mysql怎么获取 limit 后的内容啊?
要自己写吗?
自己写了!
有个offset函数自动返回的
昵称: zwws  时间: 2007-04-21 14:00:00
我昨天写了一个仿百度搜索,不是用类写的,感觉也不是很麻烦的
昵称: sooden  时间: 2007-04-25 10:29:00
我也写过..

不过..

很欣赏...AJAX..模式的..
昵称: feifengxlq  时间: 2007-05-02 00:30:00
高手呀。谢谢了!
昵称: hs1107033  时间: 2007-05-02 20:18:00
用js不好,不利于seo
昵称: 折翼の天使♂  时间: 2007-05-03 09:16:00
不能分页啊。。
效果是显示出来了。。
就是没有limit,无法实现分页。。
昵称: xiaoqiang527  时间: 2007-05-03 23:35:00
绝对的好帖,要好好学习以下喽~
昵称: bingofei  时间: 2007-05-04 18:02:00
支持~~
昵称: fyp83  时间: 2007-05-17 12:29:00
版主出来看看。。。
不实现分页功能。
效果显示出来了
昵称: fly1983  时间: 2007-05-17 12:33:00
先收起来,慢慢学.
昵称: kelvin_1984  时间: 2007-05-17 14:07:00
正缺这么一个东西,谢了
昵称: fyp83  时间: 2007-05-17 14:29:00
很好
昵称: feng123  时间: 2007-05-17 17:10:00
哪位能给个结合mysql查询的例子
昵称: 逍遥重生  时间: 2007-05-17 18:09:00
收藏个
昵称: lin_chaoqi  时间: 2007-05-22 13:29:00
收藏个
昵称: 傲枭  时间: 2007-07-23 18:30:00
:L 怎么这么卡,一次发了2个
昵称: pack08  时间: 2007-07-23 20:59:00
感谢你,学习学习...
不知道怎么和页面显示的东西结合起来啊!谁能发个例子阿?万分感谢!

[ 本帖最后由 smallhook 于 2007-7-29 16:35 编辑 ]
昵称: pack08  时间: 2007-07-23 21:00:00
怎么也要给出数据记录集的接口吧?不然他给哪个记录集分页啊?我一般每个页面都有很多个记录集的。楼主能加以说明吗?
昵称: pack08  时间: 2007-07-23 21:01:00
page::offset()函数返回了偏移量,结合limit就可以使用了。
另外推荐使用js来分页处理,提供一个不是很成熟的JS分页类给大家使用http://www.phpobject.net/blog/read.php/84.htm
昵称: smallhook  时间: 2007-07-29 00:55:00
这么好的帖,不顶我还是人吗
昵称: atiao00  时间: 2007-07-30 15:46:00
学习了
昵称: feifengxlq  时间: 2007-07-30 16:14:00
不错,谢谢,我在我的代码中用用试试
昵称: 不吃猫的鱼  时间: 2007-07-30 19:04:00
复制PHP内容到剪贴板
PHP代码:
/**
* filename: ext_page.class.php
* @package:phpbean
* @author :feifengxlq<feifengxlq#gmail.com><[url]http://www.phpobject.net/[/url]>
* @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?[/url]
* 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();
   采用继承自定义分页显示模式:
   demo:[url]http://www.phpobject.net/blog[/url]
*/
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))||($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(
$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->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(
$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('<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($style))?'':'class="'.$style.'"';
  if(
$this->is_ajax){
      
//如果是使用AJAX模式
   
return '<a '.$style.' href="javascript:'.$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);
}
}


昵称: icoder  时间: 2007-07-31 08:53:00
复制PHP内容到剪贴板
PHP代码:

<?
/**
* filename: ext_page.class.php
* @package:phpbean
* @author :feifengxlq<feifengxlq#gmail.com><[url]http://www.phpobject.net/[/url]>
* @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?[/url]
* 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();
   采用继承自定义分页显示模式:
   demo:[url]http://www.phpobject.net/blog[/url]
*/
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))||($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(
$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->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(
$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('<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($style))?'':'class="'.$style.'"';
  if(
$this->is_ajax){
      
//如果是使用AJAX模式
   
return '<a '.$style.' href="javascript:'.$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);
}
}
?>

昵称: 呼噜猪  时间: 2007-07-31 09:28:00
支持一下:


用人东西,保留版权
昵称: only4  时间: 2007-08-02 16:09:00
:) :) :) 路过,看不懂
昵称: only4  时间: 2007-08-02 16:09:00
强是强`~!不过对我这样的菜鸟来说就不知道该怎么用了

楼主来点小小例子说明下吧~
昵称: fnet  时间: 2007-08-14 12:24:00
LZ
怎么结合数据库呢??能不能搞一下DEMO出来叱/?哈哈:lol
昵称: moonstar  时间: 2007-08-14 13:56:00
LZ
能不能出一下,与数据库结合的DEMO出来呢??:lol
昵称: skxc  时间: 2007-08-26 17:12:00
好东西,收藏了,留个脚印:D
昵称: mall333  时间: 2007-08-26 22:31:00
绝对好贴,绝对的顶
昵称: mall333  时间: 2007-08-26 22:32:00
我靠,你是高手行了吧?老子研究了两个小时了也没研究明白怎么能显示出来东西来,你的注释不能写明白点吗?最起码给个连数据库的例子吧?俺是新手俺承认,你发这么个贴子说话又不说明白你让俺们这些新手怎么办?多写几个字你能死啊?我实在是研究的火大了,你们都是高手,俺服行了吧?能不能让俺整明白了啊?
昵称: 博博  时间: 2007-08-26 22:39:00
好啊。
昵称: 无名小草  时间: 2007-09-19 16:42:00
好�|西我喜�g��。。
昵称: lenson_cn  时间: 2007-09-20 00:49:00
新手来学习!
昵称: sueswriter  时间: 2007-09-25 16:54:00
好贴!!!
:)
昵称: aboc  时间: 2007-09-25 17:02:00
这个东西太好了给个结合数据库的例子把
昵称: Vicke  时间: 2007-09-25 17:52:00
好东..学习
昵称: luzhou  时间: 2007-09-25 18:37:00
好东..学习:)
:) :)
昵称: ijxfx  时间: 2007-09-28 17:26:00
:lol :lol
昵称: asd0470  时间: 2007-09-29 17:40:00
这个不错,最近一直在用
昵称: asd0470  时间: 2007-09-29 17:41:00
收下学习了,谢谢斑竹!:)
昵称: 疯子-斯  时间: 2007-10-06 20:22:00
引用:
原帖由 mall333 于 2007-8-26 22:32 发表
LZ
能不能出一下,与数据库结合的DEMO出来呢??:lol
昵称: 傲枭  时间: 2007-10-07 11:28:00
下载来用了一下,感觉还是不错的,但还有些bug和不够完善。
第81行的  $this->offset=($this->nowindex-1)*$this->perpage;
应该为  $this->offset=($this->nowindex-1)*$perpage;
将第192行的 $return='<select name="PB_Page_Select" >';
改为 $return='<select name="PB_Page_Select" onchange="self.location.href=\''.$this->url.'\'+this.options[this.selectedIndex].value ">';
就可以完成选择页面跳转了。
另外在对css的使用上还可以做得更灵活一些,而不用别人重新继承一个类来实现。

和数据库结合很简单的,只要你将$this->offset和$perpage传给sql的limit就行了。
昵称: claymore  时间: 2007-10-07 17:47:00
看了第2天了,回个贴,纪念一下
昵称: ffffffff8  时间: 2007-10-09 09:38:00
收藏了,学习学习
昵称: sentrychen  时间: 2007-10-10 11:53:00
昵称: robertvvv  时间: 2007-10-24 12:47:00
超好帖子,感谢!
昵称: piaomiao227  时间: 2007-11-20 23:08:00
超强
昵称: MoHock  时间: 2007-11-20 23:16:00
没看到楼主出现了

function pre_bar() 在哪儿呢? 银是木有发现. 叫好的人不知道看完程式没有
昵称: conanjoe  时间: 2007-11-21 09:14:00
NND, 升级 BBS 把偶的签名升级不见了
昵称: Edward_Sim  时间: 2007-11-23 13:07:00
呵呵 崇拜一个!
昵称: dennis  时间: 2007-12-13 16:31:00
不顶不行啊~~学习了.
昵称: dennis  时间: 2007-12-13 16:32:00
好,留个脚印
昵称: sandssss  时间: 2007-12-13 17:40:00
我是初学者,不是很懂,但是我知道,分页真的很麻烦
昵称: jackywdx  时间: 2007-12-18 22:10:00
强人
昵称: sunflower  时间: 2007-12-18 22:46:00
和数据库结合很简单的,只要你将$this->offset和$perpage传给sql的limit就行了。

很简单的,为什么没有人举个实在点的例子啊?
昵称: sysco  时间: 2007-12-19 00:01:00
做了两次查询 而第一次反复取一个总的值,好像是没有必要做的,不知道最佳的是怎么样的?
复制PHP内容到剪贴板
PHP代码:
//调用分页类
    
require_once('include/page.class.php');
    
$intPerpage 10;
    if (
$_REQUEST['PB_page']) {
        
$intOffect = ($_REQUEST['PB_page'] -1)*$intPerpage;
    }
    else {
        
$intOffect 0;
    }
    
$db_conn DbConnect();
    
$strQuery "SELECT * FROM `threads`";
    
$result $db_conn->query($strQuery);
    
$intNum $result->num_rows;
    
$page=new page(array('total'=>$intNum,'perpage'=>$intPerpage));
    echo 
'<div >'.$page->show(1).'</div>';
    echo(
'<table cellspacing="0" class = "threads">
    <tr><th></th><th>标题</th><th>回复/查看</th><th>最后发表</th><th>编辑</th></tr>'
);
    
//取到分页的值
    
$strQuery "SELECT * FROM `threads` ORDER BY threadid DESC  LIMIT ".$intOffect.",".$intPerpage;
    
$result $db_conn->query($strQuery);
    while (
$row $result->fetch_assoc()) {
        echo 
'<tr><td class = "icon"><img src="images/bbs/topic_read.gif" /> </td>';
        echo 
'<td class = "subject" ><a href="?action=detail&threadid='.$row['threadid'].'">'.$row['subject'].'</a><br />by '.$row['author'].' on <span class="little">'.date("Y-m-s H:i:s" ,$row['dateline']).'</span></td>';
        echo 
'<td class = "view">'.$row['reply'].' / '.$row['view'].'</td>';
        echo 
'<td class = "lastreply">by '.$row['lastreplyer'].' <img src="images/bbs/icon_topic_latest.gif" /><br />on <span class="little">'.date("Y-m-s H:i:s" ,$row['lastreply']).'</span></td>';
        echo 
'<td class = "edit"><a href="?action=edit&rankid='.$row['rankid'].'" ><img src="images/icon/edititem.gif" border="0" title="编辑" alt="编辑" align="absmiddle" /></a>   <a href="?action=delete&rankid='.$row['rankid'].'" ><img src="images/icon/delete.gif" border="0" title="删除" alt="删除" align="absmiddle"/></a></td></tr>'."\n";
    }
    
mysqli_close($db_conn);
    echo 
'</table>';

[ 本帖最后由 hatoyu 于 2007-12-29 00:04 编辑 ]
昵称: 枫叶  时间: 2007-12-19 09:10:00
好帖啊。帮你顶起来,再搜藏
昵称: hatoyu  时间: 2007-12-28 23:25:00
像俺这种菜鸟看这东东是很困难的,只能慢慢摸索了。
昵称: hatoyu  时间: 2007-12-28 23:50:00
能支持自定义字段排序吗?
昵称: alex_wang58  时间: 2007-12-29 09:52:00
怎么让它和页的链接联系起来了。
昵称: moriya221  时间: 2007-12-29 23:11:00
分页类 顶
昵称: fiyu  时间: 2007-12-31 11:59:00
我也觉得这是个不错的分页程序
能和smarty 接合起来吗
LZ能否出一个smarty版的
以及贴出和数据库打交道的部分
这样大家看得会更明白些
昵称: oolala  时间: 2008-01-02 22:04:00
怎么使用?
昵称: kissweb  时间: 2008-01-16 09:15:00
演示的地址貌似不能用
昵称: liuzp  时间: 2008-01-18 16:06:00
不错,顶一个;虽然没怎么看,但是LZ费了那么大的力气弄出来的东西,不论如何也要顶一下拉
昵称: yoqao_lee  时间: 2008-01-21 11:47:00
不错 ,支持一下!
昵称: ct_174880859  时间: 2008-01-21 14:47:00
不错 ,支持一下!
昵称: grb12508  时间: 2008-01-21 17:10:00
谢谢。

[ 本帖最后由 Aoron 于 2008-2-7 08:06 编辑 ]
昵称: wrsns  时间: 2008-01-21 17:17:00
好东西收刮拉~
昵称: wrsns  时间: 2008-01-21 17:17:00
好啊・
昵称: Aoron  时间: 2008-02-07 03:30:00
好帖。收藏了。
不错的分页类!
昵称: tb123  时间: 2008-02-07 10:03:00
好东西~
昵称: mayuanshmily  时间: 2008-03-05 13:57:00
好!支持!加油!
昵称: hbwh08520  时间: 2008-03-06 11:06:00
昵称: useless  时间: 2008-03-23 23:49:00
:victory:
昵称: zxe  时间: 2008-03-26 18:44:00
DZ的收藏功能不是用来看的
昵称: FrogPrince  时间: 2008-04-01 12:41:00
DZ的收藏功能不是用来看的
昵称: lxydyx  时间: 2008-04-03 15:38:00
非常感谢,支持你。
昵称: 飘渺晴霜  时间: 2008-04-03 16:09:00
最好用了.
很容易继承他的类然后自己控制样式..
昵称: 飘渺晴霜  时间: 2008-04-03 16:10:00
好东西!!!!谢谢
昵称: doudou0512  时间: 2008-04-13 18:46:00
很好很强大!
昵称: xxtyshun  时间: 2008-04-15 22:44:00
相当不错
昵称: zhuweibao  时间: 2008-04-19 16:32:00
好东西。
昵称: atree1984  时间: 2008-05-12 23:16:00
昵称: ufo  时间: 2008-05-13 07:23:00
顶了~~~~看看~~~呵呵
昵称: cy_520php  时间: 2008-05-16 16:57:00
学习,改正,加强,出品 谢谢楼主!!!
昵称: mz198424  时间: 2008-05-16 17:00:00
好东西先收藏,然后学习,修改,加强,自已用.呵呵.谢谢楼主
昵称: piaomiao163  时间: 2008-05-16 23:10:00
严重顶一下!
昵称: pxsnow  时间: 2008-05-17 10:23:00
非常感谢。收藏了
昵称: pxsnow  时间: 2008-05-17 10:25:00
好东西,收藏之,回来再慢慢看
昵称: 纪念未来  时间: 2008-08-02 23:34:00
昵称: xu569874  时间: 2008-08-11 15:52:00
收藏了 <a href="http://www.zhuangyangyaow.com">壮阳药</a>
昵称: pianbeifeng  时间: 2011-08-31 19:44:57