tp分页自己做

版权声明:一切都是为了学习记录,随便转载。 https://blog.csdn.net/Gjanuary/article/details/79498107
闲来无事,自己做了个小程序点餐系统,后台用的是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>
结果展示:

猜你喜欢

转载自blog.csdn.net/Gjanuary/article/details/79498107