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的分页类实现的。

案例效果

PHP统计排行,分页的更多相关文章

  1. Django项目:CRM(客户关系管理系统)--80--70PerfectCRM实现CRM业务流程(bpm)课程排行分页

    # coursetop_views.py # ————————64PerfectCRM实现CRM课程排名详情———————— #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员I ...

  2. mysql优化---订单查询优化:异步分页处理

    订单分页查询: 老的代码是顺序执行查询数据和计算总记录数,但是如果条件复杂的话(比如关联子表)查询的时间要超过20s种 public static PagedList<Map<String ...

  3. ajax实现无刷新分页效果

    基于jquery.pagination.js实现的无刷新加载分页数据效果. 简介与说明 * 该插件为Ajax分页插件,一次性加载数据,故分页切换时无刷新与延迟.如果数据量较大,加载会比较慢. * 分页 ...

  4. mysql优化---订单查询优化(2):异步分页处理

    订单分页查询: 老的代码是顺序执行查询数据和计算总记录数,但是如果条件复杂的话(比如关联子表)查询的时间要超过20s种 public static PagedList<Map<String ...

  5. empireCMS 帝国cms功能总结

    上1 系统 对应左菜单为 系统设置 系统参数设置 基本属性 站点名称,网站地址,关键字,简介,首页模式,php时间, 前台功能,操作时间,来源地址,验证码 用户属性 后台验证码开启,次数限制,时间限制 ...

  6. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

  7. 使用ElasticSearch赋能HBase二级索引 | 实践一年后总结

    前言:还记得那是2018年的一个夏天,天气特别热,我一边擦汗一边听领导大刀阔斧的讲述自己未来的改革蓝图.会议开完了,核心思想就是:我们要搞一个数据大池子,要把公司能灌的数据都灌入这个大池子,然后让别人 ...

  8. phpwind < v6 版本命令执行漏洞

    phpwind/sort.php 会定期每天处理一次帖子的浏览量.回复量.精华版排序 代码直接使用savearray将数据库查询出来的内容写入php文件,savearray出来的参数,都使用" ...

  9. python 访问php程序,实现定时

    #!/usr/bin/python #test2.py import sys import urllib2 j = True jj = 1##########用于统计,所以分页, url = 'htt ...

随机推荐

  1. CPU Usage (C#) 测试

    注意:算法仅供参考. cpuusage.cs using System; using System.Collections.Generic; using System.Diagnostics; usi ...

  2. 51nod-1259-分块+dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1259 1259 整数划分 V2 基准时间限制:1 秒 空间限制:1310 ...

  3. Ceph配置项动态变更机制浅析

    转自:https://www.ustack.com/blog/ceph%e9%85%8d%e7%bd%ae%e9%a1%b9%e5%8a%a8%e6%80%81%e5%8f%98%e6%9b%b4%e ...

  4. cassandra框架模型之二——存储机制 CommitLog MemTable SSTable

    四.副本存储 Cassandra不像HBase是基于HDFS的分布式存储,它的数据是存在每个节点的本地文件系统中. Cassandra有三种副本配置策略: 1) SimpleStrategy (Rac ...

  5. C++轮子队-第三周(需求改进&原型设计)

    需求改进&原型设计 一.需求完善 (一)系统功能(补充) 图形界面(图片如下图所示:) 根据需求与组内讨论结果,现归纳图形界面方面需要的设计与相应功能: 数据-图形界面中间类: 数字方块类 N ...

  6. NGUI 学习使用

    http://www.tasharen.com/forum/index.php?board=12.0

  7. 【vs2013】使用VS2013打包程序

    如何用 VS 2013 打包 程序? 摘自:http://www.zhihu.com/question/25415940 更多请见摘自. 答案就在这里,想要你的exe独立运行在XP中:1.将平台工具集 ...

  8. HDU - 3949 :XOR(线性基,所有集合的不同异或和中,求从小到大第K个)

    XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A ...

  9. Python学习-list操作

    Python列表(list)操作: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...

  10. 关于djangoadmin的一个博客

    http://www.cnblogs.com/linxiyue/category/569717.html