本文实例分析了thinkPHP统计排行与分页显示功能。分享给大家供大家参考,具体如下:
1.分页参数
count | 总数 |
firstRow | 起始行 |
listRows | 每一次获取记录数 |
list | 每一页的记录(要与count对应一致就行) |
2.分页对象
可以针对真实的数据表
也可以针对统计出来的数据表,或者说是虚拟的表
因为LIMIT是最后执行的,哪怕你进行group操作,哪怕你进行子查询
html
<include file="Public:head" title="" /> <style type="text/css"> .top { font-size: 18px; border-bottom: #ddd 1px solid; margin-bottom: -1px; font-weight: bold; } .top .title { margin:10px; border:1px solid #EF6C00; display:-webkit-box; border-radius: 3px; } .top .title .title_child { width: 50%; line-height:40px; -webkit-box-flex:1; display:block; color:#EF6C00; text-decoration:none; } .top .title .title_child.active { color:#FFF; background:#EF6C00; } .page{ margin-right: 10px; } .ranknum{ font-weight: bold; color:#F92672; } #myrank{ color: #FFF; font-weight:bold; background-color: #FBC853; } </style> <script type="text/javascript"> </script> <body> <div class="top text-center"> <div class="title"> <a class="title_child <if condition='$type neq 1'>active</if>" href="{sh::U('User/ranklist', array('type' => 0))}">月排行</a> <a class="title_child <if condition='$type eq 1'>active</if>" href="{sh::U('User/ranklist', array('type' => 1))}">总排行</a> </div> </div> <div id="myrank" class="alert alert-danger text-center"> 我的商户数:{sh:$my_user_count} 当前排名: {sh:$my_rank} </div> <div id="datalist"> <table class="table table-hover"> <thead> <tr> <th> #</th> <th>姓名</th> <th>商户数</th> </tr> </thead> <tbody> <volist name="list" id="vo"> <tr> <th scope="row" class="ranknum"> <if condition="$vo.rank eq 1"><img src="{sh::RES}public/img/gold.png" style="width: 30px;"> <elseif condition="$vo.rank eq 2"/><img src="{sh::RES}public/img/silver.png" style="width: 30px;"> <elseif condition="$vo.rank eq 3"/><img src="{sh::RES}public/img/copper.png" style="width: 30px;"> <else /> {sh:$vo.rank} </if> </th> <td>{sh:$vo.name}</td> <td>{sh:$vo.usercount}</td> </tr> </volist> </tbody> </table> <div class="page text-right"> {sh:$page} </div> </div> </body> </html>
php
// 排行榜 public function ranklist(){ $type = $this->_get('type','trim'); $this->assign('type',$type); $opener_id = $this->opener_id; if($type == 0){ // 上月排行 $arrLastMonth = $this->getLastMonthStartEndDay(); $lastStartDay = $arrLastMonth['lastStartDay']; $lastEndDay = $arrLastMonth['lastEndDay'].' 23:59:59'; $b_time = strtotime($lastStartDay); $e_time = strtotime($lastEndDay); $where['b.addtime'] = array(array('gt',$b_time),array('lt',$e_time),'and'); } $where['a.status'] = array('eq','1'); M()->query('SET @rank =0;'); $subQuery = M()->table('sh_opener a')->join('sh_user b on a.id = b.opener_id')->where($where)->group('a.id')->order('usercount desc')->field('a.id,count(b.id) as usercount,a.name')->select(false); $all = M()->table(''.$subQuery.' a')->getField('a.id,a.usercount,a.name,(@rank:=IFNULL(@rank,0)+1) as rank'); $count = count($all); $Page = new Page($count, 10); $list = M()->table('sh_opener a')->join('sh_user b on a.id = b.opener_id')->where($where)->group('a.id')->order('usercount desc')->limit($Page->firstRow.','.$Page->listRows)->field('count(b.id) as usercount,a.name,a.id')->select(); foreach ($list as $k => $v) { $list[$k]['rank'] = $k + 1 + $Page->firstRow; } // 我的商户 $my_user_count = $all[$opener_id]['usercount']?$all[$opener_id]['usercount']:0; $my_rank = $all[$opener_id]['rank']?$all[$opener_id]['rank']:'-'; $this->assign('my_user_count',$my_user_count); $this->assign('my_rank',$my_rank); $this->assign('page',$Page->show()); $this->assign('list', $list); $this->display(); } // 获取上一月开始与结束日期 private function getLastMonthStartEndDay(){ $thismonth = date('m'); $thisyear = date('Y'); if ($thismonth == 1) { $lastmonth = 12; $lastyear = $thisyear - 1; } else { $lastmonth = $thismonth - 1; $lastyear = $thisyear; } $lastStartDay = $lastyear . '-' . $lastmonth . '-1'; $lastEndDay = $lastyear . '-' . $lastmonth . '-' . date('t', strtotime($lastStartDay)); //t 给定月份所应有的天数,28到31 return array('lastStartDay'=>$lastStartDay,'lastEndDay'=>$lastEndDay); }
这里用的是thinkphp的分页类实现的。
案例效果
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
本文向大家介绍thinkphp实现分页显示功能,包括了thinkphp实现分页显示功能的使用技巧和注意事项,需要的朋友参考一下 先上效果图,突然发现和B站上一样 IndexController.class.php代码如下 index.html代码如下 css代码如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍jquery实现的分页显示功能示例,包括了jquery实现的分页显示功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery实现的分页显示功能。分享给大家供大家参考,具体如下: 我们在显示文章列表的时候,通常需要分页显示。 一种方式是通过SQL查询的limit进行分页,即只查询该页面的数据。 另外一种方式是查询出所有的数据,传递给前段,然后用jquery控制只显示
本文向大家介绍ThinkPHP实现分页功能,包括了ThinkPHP实现分页功能的使用技巧和注意事项,需要的朋友参考一下 前几篇(上传,缩略图,验证码,自动验证表单)文章介绍的功能实现都是基于ThinkPHP框架封装好的类进行实现的,所以这次自己写一个分页类在框架中使用。 首先在根目录建一个Tools文件夹,在Tools文件夹下建Page.class.php类文件,这样以后自定义的工具类都可放在To
本文向大家介绍基于PHP实现数据分页显示功能,包括了基于PHP实现数据分页显示功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了数据分页显示功能的PHP实现代码,供大家参考,具体内容如下 实现代码: 以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍JSP实现添加功能和分页显示实例分析,包括了JSP实现添加功能和分页显示实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JSP实现添加功能和分页显示的方法。分享给大家供大家参考。具体如下: 学习目标: ① 进一步掌握MVC设计模式; ② 掌握添加功能的实现; ③ 掌握分页显示功能的实现。 主要内容: ① 通过用户信息添加功能进一步介绍MVC模式; ② 通过用户信息的分
我和我的几个伙伴正在进行国际足联联赛。我有一个服务器可以上传排行榜。现在我正在使用一个电子表格和公式来计算积分和目标差。非常简单的东西,但我不必改变一切,我只需要改变赢球、平局、输球和进球、失球。问题是,很多人用手机参与我们的在线聊天,而不能在手机上查看电子表格。 所以我要找的帮助是,我知道我可以创建一个html表,但是有没有我可以在其中包含公式的东西?