本文实例讲述了thinkPHP3.2.3结合Laypage实现的分页功能。分享给大家供大家参考,具体如下:
控制器
<?php namespace Home\\Controller; use Think\\Controller; class IndexController extends Controller { /** *@brief 查询 ****/ public function index(){ $choose = I(\'choose\',\'-6\'); $c[\'easy_hard\'] = $choose; $type=I(\'typeid\',\'\'); $nowpage=I(\'page\',1); if($type == \'\') { if($choose == -6) { $totalpage=ceil((D(\'data\')->count())/10); $infos=D(\'data\')->limit(($nowpage-1)*10,10)->select(); }else{ $totalpage=ceil((D(\'data\')->where($c)->count())/10); $infos=D(\'data\')->where($c)->limit(($nowpage-1)*10,10)->select(); } }else{ if($choose == -6) { $map[\'data\'] = array(\'like\',\"%$type%\"); $totalpage=ceil((D(\'data\')->where($map)->count())/10); $infos=D(\'data\')->where($map)->limit(($nowpage-1)*10,10)->select(); }else{ $map[\'data\'] = array(\'like\',\"%$type%\"); $totalpage=ceil((D(\'data\')->where($map)->where($c)->count())/10); $infos=D(\'data\')->where($map)->where($c)->limit(($nowpage-1)*10,10)->select(); } } $this->assign(\'type\',$type); $this->assign(\'choose\',$choose); $this->assign(\"totalpage\",$totalpage); $this->assign(\"infos\",$infos); $this -> display(); } }
视图层
<!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\"> <title>Think Demo</title> <script type=\"text/javascript\" src=\"__PUBLIC__/jquery-1.11.1/jquery.min.js\"></script> <script type=\"text/javascript\" src=\"__PUBLIC__/jquery-1.11.1/jquery.js\"></script> <script type=\"text/javascript\" src=\"__PUBLIC__/layer/layer.js\"></script> <script type=\"text/javascript\" src=\"__PUBLIC__/laypage/laypage.js\"></script> </head> <body> <div> <select name=\"\" id=\"slc1\" onchange=\"return choose()\"> <option value=\"-6\" <if condition=\"$choose eq -6 \"> selected </if> >全部</option> <option value=\"0\" <if condition=\"$choose eq 0 \"> selected </if> >简单</option> <option value=\"1\" <if condition=\"$choose eq 1 \"> selected </if> >一般</option> </select> <input type=\"text\" value=\"<if condition=\"$type neq \'\' \"> {$type} </if>\" id=\"type\"><button id=\"sou\">搜索</button> </div> <br> <table border=\"1\" width=\"500\" height=\"150\" > <tr> <th>ID</th> <th>语言</th> <th>难易程度</th> <th>操作</th> </tr> <volist name=\"infos\" id=\"vo\"> <tr> <th>{$vo.id}</th> <th>{$vo.data}</th> <th> <if condition=\"$vo.easy_hard eq \'0\'\">简单 <else />一般 </if> </th> <th> <a href=\"javascript:;\" rel=\"external nofollow\" rel=\"external nofollow\" onclick=\"return del({$vo.id});\">删除</a> <a href=\"javascript:;\" rel=\"external nofollow\" rel=\"external nofollow\" onclick=\"return edit({$vo.id});\">修改</a> </th> </tr> </volist> </table> <div style=\"margin-top:15px; text-align:center;\" id=\"page11\"></div> <button onclick=\"return add_()\"> 添加 </button> <br /> <script type=\"text/javascript\"> function choose() { var type=$(\"#type\").val(); var checkValue=$(\"#slc1\").val(); window.location.href=\"?typeid=\" rel=\"external nofollow\" rel=\"external nofollow\" +type+\"&choose=\"+checkValue; } $(\"#sou\").bind(\"click\",function(event){ var type=$(\"#type\").val();//获取假设的搜索条件值 var checkValue=$(\"#slc1\").val(); window.location.href=\"?typeid=\" rel=\"external nofollow\" rel=\"external nofollow\" +type+\'&choose=\'+checkValue; }); $(function(){ laypage({ cont: \'page11\', pages: {$totalpage}, //假设我们获取到的是18(后端计算完总页数后将总页数值传过来,放在这里即可(类似{$totalpage})). curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取 var page = location.search.match(/page=(\\d+)/); return page ? page[1] : 1;//如果没有页数显示时,默认是第一页 }(), jump: function(e, first){ //触发分页后的回调 if(!first){ //一定要加此判断,否则初始时会无限刷新 location.href=setParam(\"page\",e.curr); } } }); }); function setParam(param,value){ var query = location.search.substring(1); var p = new RegExp(\"(^|)\" + param + \"=([^&]*)(|$)\"); if(p.test(query)){ //query = query.replace(p,\"$1=\"+value); var firstParam=query.split(param)[0]; var secondParam=query.split(param)[1]; if(secondParam.indexOf(\"&\")>-1){ var lastPraam=secondParam.split(\"&\")[1]; return \'?\'+firstParam+\'&\'+param+\'=\'+value+\'&\'+lastPraam; }else{ if(firstParam){ return \'?\'+firstParam+\'\'+param+\'=\'+value; }else{ return \'?\'+param+\'=\'+value; } } }else{ if(query == \'\'){ return \'?\'+param+\'=\'+value; }else{ return \'?\'+query+\'&\'+param+\'=\'+value; } } } </script> </body> </html>
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
© 版权声明
THE END
暂无评论内容