看了很多帖子  无论是百度百科还是咱们论坛的群  桌面上放了至少五个分页用的类了  所有人都说直接拿来用   对不起  我真的是新手  有些事情你明白了你就一点就通  从来没接触过的  真的需要详细的说一下   记得最开始我配置php用了两个星期  就是因为各种版本问题  对于一个预备程序员来说 我觉得我这两个星期真的是不值   这种问题一点都不值  我没有师傅  只能来论坛求助  找百度大神  大家你一言 我一语  但是却很难一言中的  因为有些时候你们都理解的东西  觉得这样你说就明白  但··· (也许是我自己的问题  不过··)
    分页我已经做了4 5天了   论坛一个群主(qq群)把他自己的类给了我一个  教了我一下用法  做出来了  但是在其他页上出现了各种问题  总是麻烦一个人  就算再有耐心也会觉得烦  我明白 我理解  终于  他不回复我了  我也不再烦他了   我想还是自己在网上找一个类自己研究一下  把他弄会了    看到之前有一个同学的帖子  也是分页的问题  大家给了他好多类  好多建议  我看了其中的一个  相对注释教多的  有很多地方也是不明白  在这里 希望一次性的提出来  如果有空的朋友  希望可以帮忙告诉一下啊     我提的问题可能会很繁杂  但是真的是新手遇到的问题   (之前配置的问题 我解决后 在论坛上帮助了两个同学解决呢  )
下面的是那个类   有几个问题在后面提出 :
pagef.php<?php
//为了避免重复包含文件而造成错误,
//加了判断函数是否存在的条件:  
if(!function_exists(pageft)){  
//定义函数pageft(),三个参数的含义为:  
//$totle:信息总数;  
//$displaypg:每页显示信息数,这里设置为默认是20;  
//$url:分页导航中的链接,除了加入不同的查询信息
//“page”外的部分都与这个URL相同。  
//默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。  
function pageft($totle,$displaypg=20,$url=""){  
//定义几个全局变量:  
//$page:当前页码;  
//$firstcount:(数据库)查询的起始项;  
//$pagenav:页面导航条代码,函数内部并没有将它输出;  
//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。  
global $page,$firstcount,$pagenav,$_SERVER;  
//为使函数外部可以访问这里的“$displaypg”,
//将它也设为全局变量。注意一个变量重新定
//义为全局变量后,原值被覆盖,所以这里给它重新赋值。  
$GLOBALS["displaypg"]=$displaypg;  
if(!$page) $page=1;  
//如果$url使用默认,即空值,则赋值为本页URL:  
if(!$url){ $url=$_SERVER["REQUEST_URI"];}  
//URL分析:  
$parse_url=parse_url($url);  
$url_query=$parse_url["query"]; 
//单独取出URL的查询字串  
if($url_query){  
//因为URL中可能包含了页码信息,我们要把它去掉,
//以便加入新的页码信息。  
//这里用到了正则表达式,请参考“PHP中的正规表达式  
$url_query=ereg_replace("(^|&)page=$page","",$url_query);  
 
//将处理后的URL的查询字串替换原来的URL的查询字串:  
$url=str_replace($parse_url["query"],$url_query,$url);  
 
//在URL后加page查询信息,但待赋值:  
if($url_query) $url.="&page"; else $url.="page";  
}else {  
$url.="?page";  
}  
    $lastpg=ceil($totle/$displaypg);   
    //最后页,也是总页数  
    $page=min($lastpg,$page);  
    $prepg=$page-1;   
    //上一页  
    $nextpg=($page==$lastpg ? 0 : $page+1);   
    //下一页  
    $firstcount=($page-1)*$displaypg;  
    //开始分页导航条代码:  
    $pagenav="显示第 <B>".($totle?($firstcount+1):0)."
    </B>-<B>".min($firstcount+$displaypg,$totle)."
    </B> 条记录,共 $totle 条记录<BR>";  
    //如果只有一页则跳出函数:  
    if($lastpg<=1) return false;  
    $pagenav.=" <a href='http://sameveryday.blog.163.com/blog/$url=1'>首页</a> ";  
    if($prepg) $pagenav.=" <a href='http://sameveryday.blog.163.com/blog/$url=$prepg'> 前页</a> "; 
    else $pagenav.=" 前页 ";  
    if($nextpg) $pagenav.=" <a href='http://sameveryday.blog.163.com/blog/$url=$nextpg'>后页</a> "; 
    else $pagenav.=" 后页 ";  
    $pagenav.=" <a href='http://sameveryday.blog.163.com/blog/$url=$lastpg'>尾页</a> ";  
    //下拉跳转列表,循环列出所有页码:  
   $pagenav.="到第 <select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
    for($i=1;$i<=$lastpg;$i++){  
    if($i==$page) $pagenav.="<option value='$i'
     selected>$i</option>\n";  
    else $pagenav.="<option value='$i'>$i</option>\n";  
    }  
    $pagenav.="</select> 页,共 $lastpg 页";  
    }  
    }  
?>1·这个类我需要单存为一个php文件 作为调用 对吧?  调用是require('pagef.php'); 然后需要比如$pagef=new pagef(“这里面应该是写参数  对于这个类  我要写什么  雷里面的函数是function pageft($totle,$displaypg=20,$url="") 那么我写的第一个参数是$totle 我在这里要先计算出数据库总条数 然后写到这么?或者还是我写一个sql语句计算条数综合  然后在这里写$sql   ”)
本人理解:$pagef=new pagef($sql)
2·类后面写了一些http:的连接  这个具体是什么  我应该写什么呢?
3·如果我想把我的分页放在一个div中  我怎么做  直接把整个<? ?>的套在php里面么?如:<div><? ?></div>
暂时就三个问题  公司有事儿要走了  希望大家帮个忙···

解决方案 »

  1.   

    //分页其实不难,当你熟悉后你会感觉,原来不过如此,当然了,新手会感觉有点发憷,不过不要留下阴影哦//php处理部分(1)、每页显示条数
    $size = 5;
    (2)获取当前页数
    $page = isset($_GET['page'])? intval($_GET['page']): 1;//如果url参数中存在page这个参数那么获取并用intval()过滤来得到当前页数(注:intval()将参数转为整形-integer),否则默认为第一页
    (3)、组合mysql语句
    /*
    $start = $page * $size (起始条数 = 当前页数 * 每页显示的条数)
    */
    select * from users limit $satrt, $size//html部分/*
    这个不说了
    */
    <a href="url/page=1">首页</a>
    /*
    echo ($page - 1 < 1? $page: --$page);
    意思是如果$page - 1 < 1那么也就是已经是第一页了,那么不做动作(等同$page = 1),否则就让$page - 1(等同--$page),这样就是上一页了
    */
    <a href="url/page=<?php echo ($page - 1 < 1? $page: --$page); ?>">上一页</a>
    /*
    与上一页类似
    */
    <a href="url/page=<?php echo ($page + 1 > $totalPageNum? $totalPageNum: ++$page); ?">下一页</a>
    <a href="url/page=$totalPageNum">尾页</a>//$totalPageNum是总页数共有多少页(可在php中用数据总条数除以每页显示条数,并将得出的数上取整-ceil(),最有一页就算是一条那么它依然是一页)
    //写的啰嗦了,看着可能会有点害怕
      

  2.   

    首先类的写法应该是:<?php
      class pages{//类的名字
         function gopage(传过来的参数){ //要调用的方法
              //分页代码
      }
    }?>调用的时候: include('分页的文件');//这里用include,当包含的文件有错误的时候会提示,并依旧执行后面的代码
    $page=new pages;//pages是类名
    $p=$page->gopage('和类中相对应的参数');//调用类中的某个方法,并赋给一个变量
    写入html页面中就是:
    <div><?=$p?></div>或<div><?echo $p?></div>
      

  3.   

    最后一点写错了,应该是
    <div><?php echo $p?></div>
      

  4.   

    对于分页我当初也是自己跟着老师讲的一节课学会的。然后,自己不停地尝试改造自己的分页类性能,最后发到通用性非常的好。现在,我在开发中却并不用这个自己写的分页类,为什么?因为,平常开发都有定义好的分页类或框架里面已经实现了分页类。你只需要会用就OK了。没必要钻死理儿。如果,觉得自己实在想知道那就自己琢磨,分析别人的代码。问人,是很难说清楚的。另外,推荐一个初学者方面的网站你:http://www.phpcxz.com/archives/view_374.html
      

  5.   

    我学PHP的时候好像没用这么多时间,两天看完一本书<PHP网络编程标准教程(人民邮电出版社)>,因为我是多年的asp程序员,有asp做铺垫,看完书了解了php的语法,把最常用到的函数以及语法,使用editplus的代码提示acp文件配置一下就开始写了.
    后来随着水平不断提升,又逐步买了3本书,分别是<明解C语言(日本人写的书,台湾翻译成了繁体版)>,<Ubuntu 1.04><PHP5/mysql程式设计乐活学(台湾拓峰出版,可惜错误太多)>其实现在回想一下,PHP的主体就是class和array,而对于那些函数,你可以用editplus的代码提示配置一下就行了,不需要死记硬背,用的时候直接看代码提示现找就行了.
      

  6.   

    应该是<Ubuntu 10.04入门到精通>
    上边打错了,其实看着本书的目的是因为台湾这边的服务器基本都是linux(这边有版权管制,大家不敢用盗版windows,尤其是正版server版的windows操作系统更是贵的离谱),因此大家都用linux做服务器