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} &nbsp;&nbsp; 当前排名: {sh:$my_rank}
</div>
<div id="datalist">
<table class="table table-hover">
<thead>
<tr>
<th>&nbsp;&nbsp;#</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 />
&nbsp;&nbsp;{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的分页类实现的。

案例效果

最新文章

  1. javaScript之BOM操作2
  2. iOS [[NSBundle mainBundle] pathForResource:@&quot;&quot; ofType:@&quot;&quot;]无法获取到文件
  3. Nginx_查看并发连接数
  4. python数据处理相关的一些知识点(学习点)
  5. 【drp 11】使用Junit简单测试接口方法
  6. 【清橙A1084】【FFT】快速傅里叶变换
  7. 过河(bfs)
  8. 【JAVAWEB学习笔记】08_MySQL&amp;JDBC回顾
  9. c++ 类覆盖方法中的协变返回类型
  10. How to get table pg_stat_user_functions.
  11. Asp.Net MVC 实现将Easy-UI展示数据下载为Excel 文件
  12. range()函数
  13. Android测试(一):在Android中测试App
  14. angularjs 动态表单, 原生事件中调用angular方法
  15. Spring缓存注解
  16. CodeForces-1155D Beautiful Array
  17. PAT甲题题解-1124. Raffle for Weibo Followers-模拟,水题
  18. 上海高校金马五校赛 J - 小Y写文章
  19. Mybatis 代码自动生成[myeclipse版]
  20. day7 面向对象进阶

热门文章

  1. js中object的copy
  2. 新东方雅思词汇---7.4、cap
  3. [javascript]JS如何获取当前时间戳
  4. python fire库的使用
  5. 方便处理hosts的批处理脚本:hosts助手.bat
  6. IOS-视频
  7. 【Python】生成器和迭代器
  8. 使用ZooKeeper实现Java跨JVM的分布式锁(读写锁)
  9. 【spark】常用转换操作:sortByKey()和sortBy()
  10. LeetCode OJ:Reverse Linked List (反转链表)