闲来无事,自己做了个小程序点餐系统,后台用的是tp3.2做的但是做到分页的时候出现了更改路由之后分页连接不对,索性自己写一个吧。
后端环境: linux,nginx,tp3.2,php7.1,bootstrap
设置的要求
1.每页最多10条数据
2.底部分页最多5个
思路:
1.总数查询
2.最大页数
3.条件判断循环输出表现
代码:
c控制器部分:
$User = M('food'); // 实例化User对象
$datacount = $User->count();
$this->assign('datacount',$datacount);
$list = $User->page($_GET['page'].',10')->select();
$this->assign('list',$list);// 赋值数据集
// 自创分页
$totaopage = ceil($datacount/10);// 总页数
// 判断当前的页数,当条件满足的时刻,一行最多显示5个的时候只有最中间的是点选的页数
if($page == 0){
$page = 1;
}
// 页数不够全部显示处理1-$totaopage
if($totaopage <=5){
for($i=1;$i<=$totaopage;$i++){
$pageurl = './index.php?m=home&c=index&a=foodlist&type=food&page='.$i;
if($i == $page){
$data['showpage'][] = '<li><a style="background:#ddd;" href="'.$pageurl.'">'.$i.'</a></li>';
}else{
$data['showpage'][] = '<li><a href="'.$pageurl.'">'.$i.'</a></li>';
}
}
}else{
// >5时候判断当前页数
if($page >=5){
for($i = $page-3;$i <= $page+1;$i++){
$pageurl = './index.php?m=home&c=index&a=foodlist&type=food&page='.$i;
if($i == $page){
$data['showpage'][] = '<li><a style="background:#ddd;" href="'.$pageurl.'">'.$i.'</a></li>';
}else{
if($totaopage>=$i){
$data['showpage'][] = '<li><a href="'.$pageurl.'">'.$i.'</a></li>';
}
}
}
}else{
//page 小于5
for($i=1;$i<=5;$i++){
$pageurl = './index.php?m=home&c=index&a=foodlist&type=food&page='.$i;
if($i == $page){
$data['showpage'][] = '<li ><a style="background:#ddd;" href="'.$pageurl.'">'.$i.'</a></li>';
}else{
$data['showpage'][] = '<li><a href="'.$pageurl.'">'.$i.'</a></li>';
}
}
}
}
// 进行处理上一页还有下一页按钮以及第一页和最后一页按钮
$this->assign('firstpage','./index.php?m=home&c=index&a=foodlist&type=food&page=1');// 第一页
$this->assign('lastpage','./index.php?m=home&c=index&a=foodlist&type=food&page='.$totaopage);// 最后一页
if($page>1){
$prepage = $page-1;
$this->assign('prepage','./index.php?m=home&c=index&a=foodlist&type=food&page='.$prepage);
}else{
$this->assign('prepage','./index.php?m=home&c=index&a=foodlist&type=food&page=1');
}
if($page<$totaopage){
$nextpage = $page+1;
$this->assign('nextpage','./index.php?m=home&c=index&a=foodlist&type=food&page='.$nextpage);
}else{
$this->assign('nextpage','./index.php?m=home&c=index&a=foodlist&type=food&page='.$totaopage);
}
$this->assign('showpage',$data['showpage']);
$this->assign('total',$totaopage);// 总页数
$this->display('foodlist'); // 输出模板
v视图部分:
<div class="row bootstrap-admin-no-edges-padding">
<div class="panel panel-default">
<div class="panel-heading">
<div class="text-muted bootstrap-admin-box-title">商品列表</div>
<div class="pull-right"><span class="badge">{$datacount}个</span></div>
</div>
<div class="bootstrap-admin-panel-content">
<table class="table table-responsive">
<thead>
<tr>
<th>序号</th>
<th>商品名字</th>
<th>所属分类</th>
<th>商品价格</th>
<th>商品展示</th>
<th>上架</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<foreach name="list" item="vo" key="k" >
<tr>
<td>{$k+1}</td>
<td>{$vo.goodname}</td>
<td>{$vo.classificationname}</td>
<td>¥{$vo.price}</td>
<td><img src="{$vo.goodimg}" style="width:50px;height:50px;"></td>
<td>
<if condition="$vo.status eq 1">
上架中
<else />
未上架
</if>
</td>
<td>---</td>
</tr>
</foreach>
</tbody>
</table>
<div style="text-align:center;">
<nav aria-label="Page navigation">
<ul class="pagination">
<li><a href="{$firstpage}">第一页</a></li>
<li><a href="{$prepage}">上一页</a></li>
<foreach name="showpage" item="vo" key="k" >
{$vo}
</foreach>
<li><a href="{$nextpage}">下一页</a></li>
<li><a href="{$lastpage}">最后一页</a></li>
<li><a href="#">总数:{$datacount}条</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
结果展示:
tp分页自己做
最新推荐文章于 2023-06-06 10:35:52 发布