ThinkPHP paging implementation
The TP3.2 framework manual has a data paging, but it requires writing too much code every time, and there are some troubles such as Chinese settings. As a program developer, it is necessary to sort out:
1. Paging method
Copy code
/**
* The same code encapsulation of TODO basic paging, making the front-end code less
* @param $m model, passed by reference
* @param $where query conditions
* @param int $pagesize Number of queries per page
* @return ThinkPage
*/
function getpage(&$m,$where,$pagesize=10){
$m1=clone $m;//Shallow copy a model
$count = $m->where($where)->count();//After the continuous operation, join and other operations will be reset
$m=$m1;//To maintain a certain continuous operation, shallowly copy a model
$p=new ThinkPage($count,$pagesize);
$p->lastSuffix=false;
$p->setConfig('header','
Total%TOTAL_ROW%records per page %LIST_ROW%item %NOW_PAGE%page/total%TOTAL_PAGE%page');
$p->setConfig('prev','previous page');
$p->setConfig('next','next page');
$p->setConfig('last','last page');
$p->setConfig('first','Homepage');
$p->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$p->parameter=I('get.');
$m->limit($p->firstRow,$p->listRows);
return $p;
}
Copy code
The getpage method can be placed in Application/Common/Common/function.php of the TP framework. This document can specifically place some common methods, which can be called anywhere (such as: Controller files, View files, etc.).
2. Call the paging method
$m=M('products');
$p=getpage($m,$where,10);
$list=$m->field(true)->where($where)->order('id desc')->select();
$this->list=$list;
$this->page=$p->show();
View code again
Third, the last step is the paging style. This is a bit messy. Because the background framework was downloaded from the Internet, the style has not yet been sorted out. This style can also be implemented by yourself, it is simple.
Copy code
.pagination ul {
display: inline-block;
margin-bottom: 0;
margin-left: 0;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.05);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05);
box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.pagination ul li {
display: inline;
}
.pagination ul li.rows {
line-height: 30px;
padding-left: 5px;
}
.pagination ul li.rows b{color: #f00}
.pagination ul li a, .pagination ul li span {
float: left;
padding: 4px 12px;
line-height: 20px;
text-decoration: none;
background-color: #fff;
background: url('../images/bottom_bg.png') 0px 0px;
border: 1px solid #d3dbde;
/*border-left-width: 0;*/
margin-left: 2px;
color: #08c;
}
.pagination ul li a:hover{
color: red;
background: #0088cc;
}
.pagination ul li.first-child a, .pagination ul li.first-child span {
border-left-width: 1px;
-webkit-border-bottom-left-radius: 3px;
border-bottom-left-radius: 3px;
-webkit-border-top-left-radius: 3px;
border-top-left-radius: 3px;
-moz-border-radius-bottomleft: 3px;
-moz-border-radius-topleft: 3px;
}
.pagination ul .disabled span, .pagination ul .disabled a, .pagination ul .disabled a:hover {
color: #999;
cursor: default;
background-color: transparent;
}
.pagination ul .active a, .pagination ul .active span {
color: #999;
cursor: default;
}
.pagination ul li a:hover, .pagination ul .active a, .pagination ul .active span {
background-color: #f0c040;
}
.pagination ul li.last-child a, .pagination ul li.last-child span {
-webkit-border-top-right-radius: 3px;
border-top-right-radius: 3px;
-webkit-border-bottom-right-radius: 3px;
border-bottom-right-radius: 3px;
-moz-border-radius-topright: 3px;
-moz-border-radius-bottomright: 3px;
}
.pagination ul li.current a{color: #f00 ;font-weight: bold; background: #ddd}
http://www.bkjia.com/PHPjc/894183.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/894183.htmlTechArticleThinkPHP 分页实现 TP3.2框架手册,有一个数据分页,不过每次都要写太多的代码,还有中文设置等有些麻烦,做为程序开发者,有必要整理下...