写了个php分页的自定义函数,用着感觉挺好:
pageFunc($dataNum,$pageSize,$pageName)//记录集,每页显示的条数,分页名
今天突然在想,如果我一个页面有和几个区域要做分页呢,那怎么办?
首先我想到的是将自定义分页函数添加一个参数,来标识分页的名称以达到区分的目的,结果失败啦!
请大家提供可行的解决思路给我!谢谢!PHP分页

解决方案 »

  1.   

    一般多个分页的都采用AJAX分页了吧
      

  2.   

    一般多个分页的都采用AJAX分页了吧
    非得用ajax吗?还有其它方法吗?最好是封装成函数
      

  3.   

    一般多个分页的都采用AJAX分页了吧
    非得用ajax吗?还有其它方法吗?最好是封装成函数
    如果你非要使用这种蛋疼的做法
    那你就只有给每个分页加不同的标识,然后利用进行标识来判断是否要分页和分页查询数据了
    这种效率恐怕不高
      

  4.   

    首先谢谢两位斑竹!
    为了说明的更仔细,我放上代码和前台页面的截图:1、index.php
    2、pageFunc.php<?php
    /*
    *分页函数
    *调用方法:pageFunc(记录集,每页显示的条数)
    */function pageFunc($dataNum,$pageSize,$pageName){
    global $pageOffset;
    $pageCurr=1;//初始化页码
    $pageNum=ceil($dataNum/$pageSize);//计算总的页数
    $pageUrl=$_SERVER["REQUEST_URI"];//取得当前地址(不含域名)
    $pageUrl=parse_url($pageUrl);//解析网址
    $pageUrl=$pageUrl['path'];//取得路径

    //接收当前页码
    if(isset($_GET[$pageName])){
    $pageCurr=$_GET[$pageName];
    $pageCurr<=0?$pageCurr=1:'';
    $pageCurr>$pageNum?$pageCurr=$pageNum:'';
    is_numeric($pageCurr)?'':$pageCurr=1;//判断页码的合法性
    $pageOffset=intval($pageCurr-1)*$pageSize;//数据偏移量
    $pageOffset.=',';
    }


    if($dataNum>$pageSize){
    //创建分页结构
    $pageHtml="共{$dataNum}条数据,每页显示{$pageSize}条,{$pageCurr}/{$pageNum}页 ";
    $pageHtml.="<a href={$pageUrl}?{$pageName}=1>首页</a> ";
    $pageHtml.="<a href={$pageUrl}?{$pageName}=".($pageCurr-1).">上一页</a> ";
    //$pageHtml.="$pageCurr ";
    if($pageCurr+1>$pageNum){
    $pageCurr=$pageNum-1;
    $pageHtml.="下一页 ";
    $pageHtml.="尾页 ";
    }else{
    $pageHtml.="<a href={$pageUrl}?{$pageName}=".($pageCurr+1).">下一页</a> ";
    $pageHtml.="<a href={$pageUrl}?{$pageName}=".($pageNum).">尾页</a> ";
    }
    }else{
    //创建分页结构
    $pageHtml="共{$dataNum}条数据,1页 ";
    $pageHtml.="首页 ";
    $pageHtml.="上一页 ";
    $pageHtml.="下一页 ";
    $pageHtml.="尾页 ";
    }
    return $pageHtml;

    }?>
    说明:1调用了2的自定义分页函数,请帮忙指点修改
      

  5.   

    用ajax的方式去弄,就不存在你说的那个问题了。你的问题应该是因为url上传页数的参数,不知道传给哪个区域的分页导致的。如果非要用传统意义的传参话。就多传几个参数呗。比如:scope1_page=1&scope2_page=2...
      

  6.   

    的确是这样的,但是我想用传统的通过自定义函数传参去解决,我只有去修改自定义函数啦,能否告诉我一下关键的要修改的地方在哪里?无语,是不是非要弄代码你才明白?
    你根据不同的标识判断是否调用分页以及是否查询分页数据,那自然就不影响分页显示了啊是不是红色2处的文字很深奥呢?
    懂什么叫查询分页数据么?
    又懂什么叫调用分页么?
    从5楼开始我就说要从这2方面同时下手
    你却一直只在怎么判断调用分页一个方面去下手
    真心无语,是不是“查询分页数据”这6个中文很深奥?
    “查询分页数据”我不写到分页自定义函数里去的,是一个数据库操作类里读取数据的,只不过是向这个操作类里传入偏移值而已;
    另外,我的工作主要是前端,php属于初级阶段,所以在很大程度上有障碍!因此最好能提供一下主要代码,谢谢啦~
      

  7.   

    天气燥热,版主火气很大,体谅下php菜鸟~
      

  8.   

    贴上页面代码:<?php
    header("content-type:text/html;charset=utf-8");
    include('include/mysql_class.php');//调用数据操作类
    include('include/pageFunc.php');//调用分页自定义函数
    $db=new mysql('localhost','root','123','db_infor');//数据操作类的实例化/**********************区域1********************/
    //分页传参
    $dataNum=$db->nums('test1');//取得数据表中的数据条数
    $pageSize=10;//每页显示的数量
    pageFunc($dataNum,$pageSize,'page_type1');//分页
    //输出数据
    $db->select("test1","*","name!='' limit ".$pageOffset."".$pageSize);
    $result = $db->fetchArray();
    echo '<ul>';
    foreach($result as $value){
    echo '<li>'.$value['name'].'</li>';
    }
    echo '</ul>';echo pageFunc($dataNum,$pageSize,'page_type1');//输出分页结构/**********************区域2********************/
    //分页传参
    $dataNum2=$db->nums('test1');//取得数据表中的数据条数
    $pageSize2=10;//每页显示的数量
    pageFunc($dataNum2,$pageSize2,'page_type2');
    //输出数据
    $db->select("test1","*","name!='' limit ".$pageOffset."".$pageSize2);//分页
    $result = $db->fetchArray();
    echo '<ul>';
    foreach($result as $value){
    echo '<li>'.$value['name'].'</li>';
    }
    echo '</ul>';echo pageFunc($dataNum2,$pageSize2,'page_type2');//输出分页结构?>
      

  9.   

    的确是这样的,但是我想用传统的通过自定义函数传参去解决,我只有去修改自定义函数啦,能否告诉我一下关键的要修改的地方在哪里?无语,是不是非要弄代码你才明白?
    你根据不同的标识判断是否调用分页以及是否查询分页数据,那自然就不影响分页显示了啊是不是红色2处的文字很深奥呢?
    懂什么叫查询分页数据么?
    又懂什么叫调用分页么?
    从5楼开始我就说要从这2方面同时下手
    你却一直只在怎么判断调用分页一个方面去下手
    真心无语,是不是“查询分页数据”这6个中文很深奥?
    “查询分页数据”我不写到分页自定义函数里去的,是一个数据库操作类里读取数据的,只不过是向这个操作类里传入偏移值而已;
    另外,我的工作主要是前端,php属于初级阶段,所以在很大程度上有障碍!因此最好能提供一下主要代码,谢谢啦~
    真心无语,你分页自定义函数与,你查询分页数据有什么关系?
    分页函数就作用仅限于实现页数分页而已,跟查询数据有什么关系呢?你要明白,你查询数据是跟页数有关系
    SELECT * FROM table LIMIT (page-1) , 30*page
    查询分页的时候是要用到上面的语句的,你都不对这个分页数据查询惊醒判断,你标识用了有什么意义呢?
    你的页数只有一个变量,都是page,你只用标识判断调用了分页函数,那么你页数是不变化了,但数据却变化了,有什么意义呢?再者假设,你用的分页变量名是不同的,可你在读取分页数据的时候却用了同一变量名,导致最终的结果分页数据还是一样混乱变化,有什么意义?知道什么是and条件么?
      

  10.   

    也就是2个条件必须同时判断
    加入分页的变量名都是一样的,那么就必须另外加一个标识代表模块的意思比如网址是a.php?page=1&pagetype=1
    那么得进行处理
    分页判断处理
    $page1=$page2=$page3=1;
    if($pagetype==1){
    $dataNum=$db->nums('test1');//取得数据表中的数据条数
    $pageSize=10;//每页显示的数量
    $page1=$page;
    $db->select("test1","*","name!='' limit ".($page1-1)."".$pageSize);
    $result = $db->fetchArray();
    $pagestr1=pageFunc($dataNum,$pageSize,'page');
    }
    elseif($pagetype==2){
    $page2=$page;
    .......
    }
    elseif($pagetype==3){
    $page3=$page;
    .......
    }还有,要明白一点:函数里的非全局变量不能被函数意外的程序调用的
      

  11.   

    一般多个分页的都采用AJAX分页了吧
    ajax 能分页?
      

  12.   

    首先,你这种分页有点混乱,感觉用ajax更实际一些,这是建议。
    那实际上你的问题点在于页面内判断分页标识和输出链接的参数问题。也就是版主说到的 是否调用分页以及是否查询分页数据
    此图中你就写明了page=和page2=也就是区分这2个模块的分页标识。
    代码中$pageOffset需要分别根据page和page2来计算两次。
    而输出分页那个函数,仅仅只需要将url重新拼接一次,以确保每个page的参数都正确的传递到分页链接里。
    不知道你明白没有?