这是第二个文件pageft.php<?php
if(!function_exists(pageft)){ 
function pageft($totle,$displaypg=10,$url=''){global $page,$firstcount,$pagenav,$_SERVER;
$GLOBALS["displaypg"]=$displaypg;if(!$page) $page=1;
if(!$url){ $url=$_SERVER["REQUEST_URI"];}//URL分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //单独取出URL的查询字串
if($url_query){
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
$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="显示第 ".($totle?($firstcount+1):0)."-".min($firstcount+$displaypg,$totle)." 条记录,共 $totle 条记录<br><br>";//如果只有一页则跳出函数:
if($lastpg<=1) return false;
$pagenav.=" <a href='$url=1'>首页</a> ";
if($prepg) $pagenav.=" <a href='$url=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href='$url=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href='$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.   

    分页pageft网上找的吧,好好弄明白原理有可以了!表急!
    1般通过sql查询语句进入第2页。limit后面的控制.
      

  2.   

    呵呵,
    我的,家了格式控制哈,不过还有错误!
     <style>
    .pagetd1{background-color:#CCCCCC;text-align:left;}
    .pagetd2{background-color:#999999;text-align:left;}
    .pagetdtime{font-size:12px;}
    .pagefont{text-align:right}
    </style>
    <?php
    /*
    require("conn.php");
    require("page.class.php");
    $test=new SetPage;
    $test->PageItem("select * from news_info");
    $test->PageNav();
    $test->PageButton();
    $test->PageSelect();
    $test->ContarlOut(5);
    */
    class SetPage{         
    var $Nonce_Page;//当前页数;
    var $Totle_Page;//总页数;
    var $Def_RegNum=8;//默认记录数;
    var $Reg_Num;//记录数;
    var $Reg_Totle;//记录总数;
    var $Sql_Reg;//数据库查询语句;function PageItem($sql=""){
    $this->SetPageReg($this->Def_RegNum);
    if(!$sql==""){
    list($sql,$content)=spliti(limit,$sql);
    if($content!=""){
    $content=trim($content);
    //echo $content;
    list(,$i)=spliti(",",$content);
    if($i!=null){
    $this->Reg_Num=$i;
    //echo $i;
    }
    }else{echo "error";}
    $this->Sql_Reg=trim($sql);
    list(,$name)=spliti(from,$sql);
    $table=trim($name);
    $query=mysql_query("select * from ".$table.";");
    $this->Reg_Totle=mysql_num_rows($query);
    $this->Totle_Page=ceil($this->Reg_Totle/$this->Reg_Num);
    $this->Nonce_Page=$_REQUEST['page'];
    if($this->Nonce_Page<=0){$this->Nonce_Page=1;}
    if($this->Totle_Page<$this->Nonce_Page){$this->Nonce_Page=$this->Totle_Page;}
    }else{
    echo "请输入查询语句";
    }
    }
    //设置显示记录数;
    function SetPageReg($Num){
    $this->Reg_Num=$Num;
    }
    //分页按钮;
    function PageButton(){
    if($this->Nonce_Page>1){
    echo $this->PageHref(1,首页);
    echo "|";
    echo $this->PageHref($this->Nonce_Page-1,前页);
    echo "|";
    }
    else{
    echo "首页|前页";
    }
    if($this->Nonce_Page<$this->Totle_Page){
    echo $this->PageHref($this->Nonce_Page+1,后页);
    echo "|";
    echo $this->PageHref($this->Totle_Page,尾页);
    }else{
    echo "后页|尾页";
    }
    }
    //页面显示信息;
    function PageNav(){
    echo "当前页是第".$this->Nonce_Page."页,总共".$this->Totle_Page."页";
    }
    function PageSelect(){
    echo "<select onChange='window.location=this.value'>";
    for($i=1;$i<=$this->Totle_Page;$i++){
    if($i==$this->Nonce_Page){
    $sled="selected";
    }else{
    $sled="";
    }
    echo "<option value=".$this->PageUrl($i)." ".$sled.">".$i."</option>";
    }
    echo "</select>";
    }function PageUrl($page){
    $Self="http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
    $QueryString=$_SERVER['QUERY_STRING'];
    if($QueryString){
    $PageNum=ereg_replace("page=[0-9]+","page=".$page."",$QueryString);$Link=$Self."?".$PageNum;
    }
    else{
    $Link=$Self."?page=".$page;
    }
    return $Link;
    }
    function PageHref($page,$msg){
    $href="<a href=".$this->PageUrl($page).">".$msg."</a>";
    return $href;
    }//使用说明,直接调用ContarlOut()函数,$SqlResult,接受的是SQL查询语句 ,$MaxChar为限制字符数量,$MaxRow为限制输出行数
    //字符输出控制!
    function ContarlOut($i){
    $MaxChar=$i-3;
    $Sql=$this->Sql_Reg.=" limit ".($this->Nonce_Page-1)*$this->Reg_Num.",".$this->Reg_Num."";
    $result=mysql_query($Sql);
    $MaxRow=$this->Reg_Num;
    echo "<table>";
    for($i=0;$i < $MaxRow;$i++){
    echo "<tr>";
    if($i%2==0){
    echo "<td class=\"pagetd1\">";
    }else{
    echo "<td class=\"pagetd2\">";
    }
     if($row=mysql_fetch_array($result)){
    echo '<a target="_blank" title="'.$row[news_from].'" 
    href="news_show.php?id='.$row[news_id].'"
     style="text-decoration:none">'.$this->CharLimit($row[news_title],$MaxChar).'</a>';
    echo '</td><td class=pagetdtime>['.substr($row[news_time],5,5).']</td></tr>';
    }else{
    echo  '</td><td></td></tr>';
    } }
    echo "</table>";

    }
    function CharLimit($title,$max){
    for($i=0;$i < $max;$i++){
    $content.=substr($title,$i,1);
    if(substr($title,$i,1)==''){
    break;
    }
    }
    if($i==$max){
    if($i%2==0){$contenet.="..";}else{$content.="...";}
    }else{
    if($i%2==0){$content.="&nbsp;&nbsp;";}else{$content.="&nbsp;&nbsp;&nbsp;";}
    }
    for($j=$i;$j <= $max;$j++){
    $content.="&nbsp;";
    } return $content;
    }}
    ?>
      

  3.   

    PageItem()只是把提交的sql语句进行拆分(成select * form table格式),保留,这个还不是很好啊!不过能用先!
      

  4.   

    " limit ".($this->Nonce_Page-1)*$this->Reg_Num.",".$this->Reg_Num."";
    最主要的是块!用来显示不同页面的数据!
      

  5.   

    我看你的没有limit控制下1页的数据显示啊!不可能显示出不同的页面!我搜了下limit,你的根本没有哈!我上面有调用方法,你看看能用不,嘿嘿!
      

  6.   

    可以用 mysql_data_seek()这个函数来控制下一页的显示的数据内容。
      

  7.   

    呵呵,我晕还不行啊!,你改改哈,
    和数据库相关的东西都要改!
    不过主要还是数据库查询select * from table limit 0,5;表示0开始,显示5条,然后用mysql_fetch_array()显示出来就行了!条下1页不就是select * from table limit 5,5;在显示出来不就是第2页了!然后你想办法控制一下改变的地方不就可以了!自己慢慢看,表急哈!不行就在网上在找点哈!越来越感觉我哪个太垃圾了!
    mysql_num_rows()是用来查询有多少条记录的!
      

  8.   

    <?php
    class Page
    {
    var $_currPage;
    var $_totalNum;
    var $_perPage = 20;
    var $_returnUrl = "";


    function Page($parm1,$parm2,$parm3,$parm4)
    {
    $this->_currPage = $parm1;
    $this->_totalNum = $parm2;
    if($parm3 < 1)
    {
    $parm3 = 20;
    }
    $this->_perPage = $parm3;
    $this->_returnUrl = $parm4;
    }

    function Pageing()
    {
    //取得分页使用哪种符号
    $s = "?";
    if(strstr($this->_returnUrl,"?"))
    {
    $s = "&";
    }


    //获取总页数
    if($this->_totalNum % $this->_perPage == 0)
    {
    $totalPage = $this->_totalNum / $this->_perPage;
    }
    else
    {
    $totalPage = floor($this->_totalNum / $this->_perPage)+1;
    }

    //限定页码的范围
    if($this->_currPage>$totalPage)
    {
    $this->_currPage = $totalPage;
    }
    if($this->_currPage < 1)
    {
    $this->_currPage = 1; 
    }
    $next = $this->_currPage + 1;
    $pre = $this->_currPage - 1;

    $str = "";
    //只有一页
    $str = $str."共".$this->_totalNum."条记录&nbsp;每页".$this->_perPage."条&nbsp;";
    $str = $str ."共".$totalPage."页&nbsp;当前第<font color=red>".$this->_currPage."</font>页&nbsp;"; 
    if($totalPage <= 1) 

    $str = $str. "首页 上一页 下一页 最后一页";  


    else
    {
    if($this->_currPage == 1)
    {
    $str = $str."首页&nbsp;上一页&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s."page=".$next."'>下一页</a>&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s."page=".$totalPage."'>最后一页</a>";
    }
    else
    {
    if($this->_currPage == $totalPage)
    {
    $str =$str. "<a href='".$this->_returnUrl.$s."page=1'>首页</a>&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s.".page=".$pre."'>上一页</a>&nbsp;";
    $str = $str."下一页&nbsp;最后一页";

    }
    else
    {
    $str = $str. "<a href='".$this->_returnUrl.$s."page=1'>首页</a>&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s.".page=".$next."'>上一页</a>&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s."page=".$pre."'>下一页</a>&nbsp;";
    $str = $str."<a href='".$this->_returnUrl.$s."page=".$totalPage."'>最后一页</a>";

    }

    }  

    echo $str; 

    }
    }
    ?>
      

  9.   

    明白一点了 $firstcount,$displaypg这两个值永远是0和5 所以他显示永远是第一条和第五条 哈哈