最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

thinkPHP統(tǒng)計排行與分頁顯示功能示例

 更新時間:2016年12月02日 12:03:57   作者:牛逼的霍嘯林  
這篇文章主要介紹了thinkPHP統(tǒng)計排行與分頁顯示功能,結(jié)合實例形式分析了thinkPHP數(shù)據(jù)庫查詢與結(jié)果分頁顯示相關(guān)操作技巧,需要的朋友可以參考下

本文實例分析了thinkPHP統(tǒng)計排行與分頁顯示功能。分享給大家供大家參考,具體如下:

1.分頁參數(shù)

count 總數(shù)
firstRow 起始行
listRows 每一次獲取記錄數(shù)
list 每一頁的記錄(要與count對應(yīng)一致就行)

2.分頁對象

可以針對真實的數(shù)據(jù)表
也可以針對統(tǒng)計出來的數(shù)據(jù)表,或者說是虛擬的表
因為LIMIT是最后執(zhí)行的,哪怕你進行g(shù)roup操作,哪怕你進行子查詢

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ù):{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>商戶數(shù)</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();
}
// 獲取上一月開始與結(jié)束日期
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 給定月份所應(yīng)有的天數(shù),28到31
    return array('lastStartDay'=>$lastStartDay,'lastEndDay'=>$lastEndDay);
}

這里用的是thinkphp的分頁類實現(xiàn)的。

案例效果

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》、《smarty模板入門基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。

相關(guān)文章

  • Laravel5.5中利用Passport實現(xiàn)Auth認證的方法

    Laravel5.5中利用Passport實現(xiàn)Auth認證的方法

    Laravel5.3 開始使用Passport作為API授權(quán),Passport 是基于 OAuth2 的,下面這篇文章主要給大家介紹了關(guān)于Laravel5.5中利用Passport實現(xiàn)Auth認證的方法,文中通過示例代碼介紹介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • 8個必備的PHP功能實例代碼

    8個必備的PHP功能實例代碼

    本文將分享8個開發(fā)必備的PHP功能,個個都非常實用:傳遞任意數(shù)量的函數(shù)參數(shù) 、使用glob()查找文件、獲取內(nèi)存使用情況信息、獲取CPU使用情況信息 、獲取系統(tǒng)常量 、生成唯一的id 、序列化 、字符串壓縮。很實用的8個PHP功能。
    2013-10-10
  • smarty循環(huán)嵌套用法示例分析

    smarty循環(huán)嵌套用法示例分析

    這篇文章主要介紹了smarty循環(huán)嵌套用法,結(jié)合實例形式分析了Smarty模板嵌套循環(huán)的實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2016-07-07
  • 常用PHP框架功能對照表

    常用PHP框架功能對照表

    這篇文章主要介紹了常用PHP框架功能對照表,對于選擇PHP框架進行開發(fā)時具有一定的參考價值,需要的朋友可以參考下
    2014-10-10
  • 基于php無限分類的深入理解

    基于php無限分類的深入理解

    本篇文章是對php無限分類就行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • laravel 實現(xiàn)上傳圖片到本地和前臺訪問示例

    laravel 實現(xiàn)上傳圖片到本地和前臺訪問示例

    今天小編就為大家分享一篇laravel 實現(xiàn)上傳圖片到本地和前臺訪問示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 推薦個功能齊全的發(fā)送PHP郵件類

    推薦個功能齊全的發(fā)送PHP郵件類

    推薦個功能齊全的發(fā)送PHP郵件類...
    2007-01-01
  • php+jQuery+Ajax簡單實現(xiàn)頁面異步刷新

    php+jQuery+Ajax簡單實現(xiàn)頁面異步刷新

    這篇文章主要為大家詳細介紹了php+jQuery+Ajax簡單實現(xiàn)頁面異步刷新,,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 深入解析PHP底層機制及相關(guān)原理

    深入解析PHP底層機制及相關(guān)原理

    這篇文章主要介紹了深入解析PHP底層機制及相關(guān)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • ThinkPHP6.0前置、后置中間件區(qū)別

    ThinkPHP6.0前置、后置中間件區(qū)別

    中間件的主要應(yīng)用場景可以包括對HTTP請求的數(shù)據(jù)過濾、權(quán)限檢測、請求攔截等行為,本文主要介紹了ThinkPHP6.0前置、后置中間件區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論

雷山县| 曲沃县| 洛扎县| 浦江县| 永修县| 姚安县| 闻喜县| 包头市| 大名县| 河北区| 鄂温| 读书| 高雄县| 枣庄市| 勃利县| 唐海县| 黄陵县| 迁西县| 宜宾市| 青岛市| 兰坪| 珲春市| 铁力市| 乌什县| 迁西县| 喜德县| 阜南县| 杨浦区| 方正县| 云阳县| 友谊县| 开鲁县| 宁乡县| 和平区| 峡江县| 若羌县| 大方县| 唐海县| 奉化市| 常宁市| 丹寨县|