通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>在线服务>>疑难解答>>正文 新版上线![旧版]
注:打开慢时请稍等

请问“第 1 2 3 ...页”这种分页显示怎么做?

http://www.iyit.net  日期:2006-10-6 15:33:16  来源:iyit.net收集  点击:
参加讨论
就是按了“...”后,它又会显示“第...4  5  6...页”,到了最后又会显示“第...n-2  n-1  n  页”的,我想了很久,都做不出这种分页显示的效果,好像挺难的,大家有这方面的代码吗?贴一下好吗?asp或php的都可以!  
---------------------------------------------------------------  
 
递交一个参数啊。你看比如第二页以后的链接的url,都是有个参数=那页的数值的。  
 
然后php或者asp得到这个递交的数以后,就判断是不是>或者=n,如果是小于的,就把前前后后的数字写出来就是了。  
 
 
很简单嘛。(如果光想不写的话:)  
---------------------------------------------------------------  
 
<?php  
/*  
           function:break  page  
           author:  
           date:2003.7.15  
           parameter:  
 
           num=all  of  your  pages;  
           perpage=  how  many  do  you  want  to  show;  
           curr_page=current  page;  
           mpurl=current  url;  
 
           return:  
           multipage=a  string  under  your  page  
*/  
function  multi($num,  $perpage,  $curr_page,  $mpurl)  
           {  
                       if($num  >  $perpage)  
                                   {  
                                               $page  =  10;  
                                               $offset  =  2;  
 
                                               $pages  =  ceil($num  /  $perpage);//得到页数  
                                               $from  =  $curr_page  -  $offset;//偏移两页  
                                               $to  =  $curr_page  +  $page  -  $offset  -  1;  
                                   if($page  >  $pages)    
                                               {  
                                                           $from  =  1;  
                                                           $to  =  $pages;  
                                               }    
                                   else  
                                               {  
                                               if($from  <  1)  
                                                           {  
                                                                       $to  =  $curr_page  +  1  -  $from;  
                                                                       $from  =  1;  
                                                           if(($to  -  $from)  <  $page  &&  ($to  -  $from)  <  $pages)    
                                                                       {  
                                                                                   $to  =  $page;  
                                                                       }  
                                                           }    
                                               elseif($to  >  $pages)  
                                                           {  
                                                                       $from  =  $curr_page  -  $pages  +  $to;  
                                                                       $to  =  $pages;  
                                                                       if(($to  -  $from)  <  $page  &&  ($to  -  $from)  <  $pages)  
                                                                                   {  
                                                                                               $from  =  $pages  -  $page  +  1;  
                                                                                   }  
                                                           }  
                                               }  
                                   $fwd_back  .=  "<a  href=\"$mpurl&page=1\">&lt;&lt;</a>  &nbsp;";  
                                   for($i  =  $from;  $i  <=  $to;  $i++)  
                                               {  
                                                           if($i  !=  $curr_page)  
                                                                       {  
                                                                                   $fwd_back  .=  "<a  href=\"$mpurl&&page=$i\">[$i]</a>&nbsp;";  
                                                                       }  
                                                           else  
                                                                       {  
                                                                                   $fwd_back  .=  "<u><b>[$i]</b></u>&nbsp;";  
                                                                       }  
                                               }  
                                   $fwd_back  .=  $pages  >  $page  ?  "  ...  <a  href=\"$mpurl&&page=$pages\">  [$pages]  &gt;&gt;</a>"  :  "  <a  href=\"$mpurl&&page=$pages\">&gt;&gt;</a>";  
                                   $multipage  =  $fwd_back;  
                                   }  
           return  $multipage;  
           }  
 
//use  
 
//分页开始  
 
/*  
如果你有一个表叫xxxx,里面有字段叫cid和time,那么可以这样使用。第一次查询出总数num,第二次是进行你所要进行的真正查询,如内容什么的,  
mpurl是你当前页面的url,multipage是最后得到的一个分页串,  
*/  
$table="xxxx";  
$sql1            =  "select  count(*)  as  rcnt  from  $table  where  cid=$cid  order  by  time  desc";  
$result1      =  @mysql_query($sql1);  
$array1        =  @mysql_fetch_array($result1);  
$num              =  $array1[rcnt];  
$mpurl          =  "xxxx.php?cid=$cid";  
if(!empty($page))  {  
           $start_limit  =  ($page  -  1)  *    $morenum;  
}  
else  {  
           $start_limit  =  0;  
           $page  =  1;  
}  
$multipage  =  multi($num,$morenum,$page,$mpurl);  
$sql="select  *  from  $table  where  cid=$cid  order  by  time  desc  limit  $start_limit,$morenum";  
//分页结束  
$result      =  @mysql_query($sql);  
while($array        =  @mysql_fetch_array($result)){  
           xxxxx;  
           }//至此已取得数组,不用我再写了吧,我得回家了。  
 
?>  
---------------------------------------------------------------  
 
在youngfly0137(杨)的激励下,我花了半个晚上动手写,终于自己想出了一个解决的方案,不知有没有纰漏,我是这样想的:  
假设$per_page是每页显示信息的条数,$long是一次显示的页数,比如显示“第  1  2  3  ...页”的话,$long就等于3了,$max_page是总页数,$topage是要去的那一页,也可以说是当前页  
当$max_page<2*$long时,直接显示所有页数。当$max_page>=2*$long时,又分为三种情况:  
$topage<$long+1时,就显示成诸如这样的:“第  1  2  3  ...页”  
当$long<$topage<$max_page-$long+1时,就显示成诸如这样的:“第  ...4  5  6  ...页”  
当$topage>$max_page-$long时,就显示成诸如这样的:“第  ...7  8  9  页”,下面是具体的代码:  
<?php  
$per_page=3;  
$long=3;  
if($topage<1)$topage=1;  
if($topage>$max_page)$topage=$max_page;  
echo  "$topage/$max_page  ";  
   if($max_page>2*$long-1){  
     if($topage<$long+1){  
         echo"第";  
           for($i=1;$i<$long+1;$i++){  
               echo"  <a  href='show.php?topage=$i'>$i</a>  ";  
             }  
         $temp=$long+1;  
       echo"<a  href='show.php?topage=$temp'>...</a>  ";  
       echo"页";  
   }  
 if($topage>$max_page-$long)  
   {  
       echo"第";  
       $temp=$max_page-$long;  
       echo"  <a  href='show.php?topage=$temp'>...</a>";  
           for($i=$max_page-$long+1;$i<$max_page+1;$i++){  
               echo"  <a  href='show.php?topage=$i'>$i</a>  ";  
           }  
       echo"页";  
   }  
 if($topage>$long&&$topage<$max_page-$long+1){  
   echo"第";  
   $temp=$topage-1;  
   echo"  <a  href='show.php?topage=$temp'>...</a>";  
         for($i=$topage;$i<$long+$topage;$i++){  
             echo"  <a  href='show.php?topage=$i'>$i</a>  ";  
         }  
   $temp=$long+$topage;  
   echo"<a  href='show.php?topage=$temp'>...</a>  ";  
   echo"页";  
 }  
}  
else  
{  
   echo"第";  
       for($i=1;$i<$max_page+1;$i++){  
           echo"  <a  href='show.php?topage=$i'>$i</a>  ";  
       }  
   echo"页";  
}  
?>  
至于怎样读数据库得到$max_page,和数据的移动,我就不多说了。我用了几组$per_page和$long的值去验证,发觉都是正确的!至于有没有其他逻辑的漏洞就不知道了,如果有的话,请大家指出!

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:对文本文件操作很好的类
下一篇:怎么在页面之间传递多个变量!
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
我在windows  xp上安装apache2.044+ph
apache+php,怎样打开session支持??
在linux中怎么配置pdflib和php  高分!
怎么样同时解释.php和.php3的文件呀,
php 4.1.0 及以后版本使用post变量的接
我在windows  xp上安装apache2.044+ph
apache+php,怎样打开session支持??
在linux中怎么配置pdflib和php  高分!
怎么样同时解释.php和.php3的文件呀,
php 4.1.0 及以后版本使用post变量的接
apache2-win32+php的成功安装方法
我只是想在本地机上学习php ,还要安装
装了php。运行时出现在以下提示
如何安装apache2.0
怎么删除mysql???
我在windows  xp上安装apache2.044+ph
apache+php,怎样打开session支持??
如何实现注册时的确认码功能
请帮忙解决,图随机上传,不限量,定位
有没有很好方法,获得在线登陆用户名单
qq密码被盗怎么办!我教你找回密码
如何控制我的电脑只允许登录我自己的q
qq2006 beta3隆重发布 实用功能一一奉
美国微软总部相中重庆15岁网络奇才(图
百度声明称遭受有史以来最大规模黑客攻
被删除系统文件恢复全攻略
使用身份验证来禁止内部用户上网 
国内首次发现带有感染文件特征盗号病毒
06年08月31日石家庄太和 内存报价
用css控制透明图片 
exeplorer.exe错误的问题的总结、解决
三分钟让你的系统变处女:acronis tru
让你的密码成为黑客的“耻辱”
比较sql server2005和oracle 10g r2
比较sql server2005和oracle 10g r2
sql server2005的xml数据类型之基础篇
sql server服务器的“偷梁换柱”
在win2003下mysql数据库每天自动备份
win2000 apache php mysql 安装及安全
mysql账户相关
快速安装windows操作系统独家秘籍
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息