登录  /  注册
一个分页的问题:不能分页查询
php中文网
发布: 2016-06-23 13:02:19
原创
755人浏览过

代码写的比较乱 如果不想看代码只看我表述也行 然后提交解决的办法就行
代码是这样的 就是类似百度的一个搜索页 道理也是百度搜索这样的 有一个搜索框
下面是一个div显示查询结果 比如我搜索PHP 然后就去表里面的num字段下查找PHP的内容 查询的所有结果以分页的形式展示出来
就是第一页 第二页…… 现在的问题是这个查询结果是根据用户每次提交时$_POST['num']来查询数据库的
如果每页显示5条数据 现在查询出来3页数据 每次查询可以显示数据和分页信息 但是每次点击分页时就会报错 比如点击第二页时就是提示num未定义
因为点击第二页时没有提交的$_POST['num']数据 只有一个post过来的page=2 所以会报错
现在的问题就是只能查询第一页的数据 点第二页就会报错 知道问题出在哪里就是不知道怎么改 用户在点击第二页时希望之前查询出来的数据不要消失 这个应该怎么办呢?这样说不知道大家能不能看懂啊

prepare("select * from table1 where num=?"); $stmt3->execute(array($_POST['num'])); $res3=$stmt3->fetchall(); $rows=count($res3); $pagesize=5; if($rows==0){ $pagenum=1; }else{ $pagenum=ceil($rows/$pagesize); } if(isset($_GET['page'])){ $page=$_GET['page']; if(empty($page)||$page<0||!is_numeric($page)) { $page=1; }else{ $page=intval($page); } }else{ $page=1; } if($page>$pagenum){ $page=$pagenum; } $startnum = ($page - 1)*$pagesize; $display_page=5; $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize"; $stmt=$pdo->prepare("$query"); //$stmt=$pdo->prepare("select * from table1 where num=?"); $stmt->execute(array($_POST['num'])); $res=$stmt->fetchall(PDO::FETCH_ASSOC); $v = current($res); if($res){ foreach($res as $v){ //echo '

'.$v['num'].'

' ; echo '

'.$v['name'].'

'; } }else{ echo "无数据"; } } ?>
登录后复制


回复讨论(解决方案)

你的 num 是 post 提交的,从第二页起就没有 post 提交了,自然也就没有了 num

因为你点第一页,第二页时,用的是GET方法传递,而不是POST方法。

所以红色部分出问题
$query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";
$stmt=$pdo->prepare("$query");
//$stmt=$pdo->prepare("select * from table1 where num=?");
$stmt->execute(array($_POST['num']));

然后fenye方法要把num和page传入去
分页的url要加上这两个参数:?page=xxx&num=xxx

这样改试试

prepare("select * from table1 where num=?"); $stmt3->execute(array($num)); $res3=$stmt3->fetchall(); $rows=count($res3); $pagesize=5; if($rows==0){ $pagenum=1; }else{ $pagenum=ceil($rows/$pagesize); } if($page){ if(empty($page)||$page<0||!is_numeric($page)) { $page=1; }else{ $page=intval($page); } }else{ $page=1; } if($page>$pagenum){ $page=$pagenum; } $startnum = ($page - 1)*$pagesize; $display_page=5; $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize"; $stmt=$pdo->prepare("$query"); //$stmt=$pdo->prepare("select * from table1 where num=?"); $stmt->execute($num); $res=$stmt->fetchall(PDO::FETCH_ASSOC); $v = current($res); if($res){ foreach($res as $v){ //echo '

'.$v['num'].'

' ; echo '

'.$v['name'].'

'; } }else{ echo "无数据"; } ?>
登录后复制
登录后复制

你说像百度那样子,你就看看百度的下一页链接。搜索词都是在地址参数上的,用GET就行

还是不行 只是现在不报错了 点击第几页后还是什么都不显示内容


因为你点第一页,第二页时,用的是GET方]法传递,而不是POST方法。

所以红色部分出问题
$query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";
$stmt=$pdo->prepare("$query");
//$stmt=$pdo->prepare("select * from table1 where num=?");
$stmt->execute(array($_POST['num']));

然后fenye方法要把num和page传入去
分页的url要加上这两个参数:?page=xxx&num=xxx

这样改试试

prepare("select * from table1 where num=?"); $stmt3->execute(array($num)); $res3=$stmt3->fetchall(); $rows=count($res3); $pagesize=5; if($rows==0){ $pagenum=1; }else{ $pagenum=ceil($rows/$pagesize); } if($page){ if(empty($page)||$page<0||!is_numeric($page)) { $page=1; }else{ $page=intval($page); } }else{ $page=1; } if($page>$pagenum){ $page=$pagenum; } $startnum = ($page - 1)*$pagesize; $display_page=5; $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize"; $stmt=$pdo->prepare("$query"); //$stmt=$pdo->prepare("select * from table1 where num=?"); $stmt->execute($num); $res=$stmt->fetchall(PDO::FETCH_ASSOC); $v = current($res); if($res){ foreach($res as $v){ //echo '

'.$v['num'].'

' ; echo '

'.$v['name'].'

'; } }else{ echo "无数据"; } ?>
登录后复制
登录后复制

就是啊 这个问题怎么解决呢?

你的 num 是 post 提交的,从第二页起就没有 post 提交了,自然也就没有了 num

这个那个分页函数的代码
function fenye(){
global $page,$pagenum,$shoupage,$pageoffset;
echo "

";
echo "
    ";
    echo '
  • '.$page.'/'.$pagenum.'页|
  • ';
    if($page==1){
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }else{
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }
    $shoupage=5;
    $pageoffset=($shoupage-1)/2;
    $start=1;
    $end=$pagenum;
    if($pagenum>$shoupage){
    if($page>$pageoffset){
    $start=$page-$pageoffset;
    $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;
    }else{
    $start=1;
    $end=$pagenum>$shoupage?$shoupage:$pagenum;
    }
    if($page+$pageoffset>$pagenum){
    $start=$start-($page+$pageoffset-$end);
    }
    }
    echo '
    ';
    echo '
      ';
      for($i=$start;$i<=$end;$i++){
      echo '
    • '.($i).'
    • ';
      }
      echo '
    ';
    echo '
    ';
    if($page==$pagenum){
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }else{
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }
    echo '
';
echo '
';

};
?>

在链接中加入 num=$num

把原来这句话 echo '

  • '.($i).'
  • ';
    改成了这样echo '
  • ';这样改对吗 但是还是提示我拼接错误 为什么?Parse error: syntax error, unexpected '=', expecting ',' or ';' in D:\wamp\www\function.php on line 33

    在链接中加入 num=$num

    改这样

    ";echo "';    echo '
    '; };?>
    登录后复制
    登录后复制


    然后调用改这样

    if($num || $page){
    fenye($num);
    }
    ?>

    哈哈可以了 我先好好看看你的代码

    改这样

    ";echo "
      ";echo '
    • '.$page.'/'.$pagenum.'页|
    • '; if($page==1){ echo '
    • 首页|
    • '; echo '
    • 上一页|
    • '; }else{ echo '
    • 首页|
    • '; echo '
    • 上一页|
    • '; } $shoupage=5; $pageoffset=($shoupage-1)/2; $start=1; $end=$pagenum; if($pagenum>$shoupage){ if($page>$pageoffset){ $start=$page-$pageoffset; $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum; }else{ $start=1; $end=$pagenum>$shoupage?$shoupage:$pagenum; } if($page+$pageoffset>$pagenum){ $start=$start-($page+$pageoffset-$end); } } echo '
      '; echo '
        '; for($i=$start;$i<=$end;$i++){ echo '
      • '.($i).'
      • '; } echo '
      '; echo '
      '; if($page==$pagenum){ echo '
    • |下一页|
    • '; echo '
    • 尾页|
    • '; }else{ echo '
    • |下一页|
    • '; echo '
    • 尾页|
    • '; }echo '
    '; echo '
    '; };?>
    登录后复制
    登录后复制


    然后调用改这样

    if($num || $page){
    fenye($num);
    }
    ?>

    来源:php中文网
    上一篇:三个白帽之来自星星的你(一)writeup 下一篇:RXSwift基础
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    作者最新文章
    热门推荐
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

     | 本站CDN由 数掘科技 提供

    登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学