Cet article présente principalement les fonctions de classement statistique et d'affichage de pagination de thinkPHP, et analyse les compétences opérationnelles liées à la requête de base de données thinkPHP et à l'affichage de pagination des résultats sous forme d'exemples. Les amis dans le besoin peuvent s'y référer
. Cet article analyse thinkPHP avec des exemples. Fonctions de classement statistique et d'affichage de pagination. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
1. Paramètres de pagination
count | 总数 |
firstRow | 起始行 |
listRows | 每一次获取记录数 |
list | 每一页的记录(要与count对应一致就行) |
2. 🎜>Il peut cibler des tables de données réelles
Il peut également cibler des tables de données statistiques, ou des tables virtuellesCar LIMIT est exécuté en dernier, même si vous effectuez des opérations de groupe, même si vous effectuez des sous-requêtes
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> <p class="top text-center"> <p 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> </p> </p> <p id="myrank" class="alert alert-danger text-center"> 我的商户数:{sh:$my_user_count} 当前排名: {sh:$my_rank} </p> <p 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> <p class="page text-right"> {sh:$page} </p> </p> </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); }
Ce qui est utilisé ici est implémenté par la classe de pagination de thinkphp.
Effet de cas
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez payer. attention au site PHP chinois !
Recommandations associées :
thinkphp implémente la fonction d'affichage de pagination Les statistiques du don total de ThinkPHP sont uniquement destinées au divertissement, ne le faites pas. ne sois pas trop réalisteCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!