登录  /  注册
博主信息
博文 33
粉丝 0
评论 0
访问量 20104
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php分页 2018年9月11日
马聪 15558002279的博客
原创
391人浏览过
  1. 查询数据分页:


  2. 实例

    <?php
    //设置配置项
    $config = [
    	'sql_type' => 'mysql',
    	'host'=>'localhost',
    	'user'=>'abc',
    	'pwd'=>'abc',
    	'db_name'=>'test',
    ];
    //分页类
    class Page{
    	private $pdo;
    	private $page_num = 20;//每页显示几条
    	private $tag_count = 8;//设置一页标签链接数目
    	private $currentPage=1;//当前页
    	private $start_num;//页码起始页
    	private $total_page;//共几页
    	private $total_data;//共几条数据
    	private $table;//当前操作表
    	function __construct($arr,$table){
    		try {
                $this->pdo = new PDO("{$arr['sql_type']}:host={$arr['host']};dbname={$arr['db_name']}",$arr['user'],$arr['pwd']);
            } catch (\PDOException $e) {
                die($e->getMessage());
            }
    		$this->table=$table;
    		//统计表共有几条数据
    		$sql = "SELECT count(*) FROM {$this->table}";
    		$stmt = $this->pdo->prepare($sql);
    		$stmt->execute();
    		$res = $stmt->fetchColumn();
    		$this->total_data = $res;
    		//统计分页后总共会有几页
    		$this->total_page = ceil($res/$this->page_num);
    	}
    	function __get($name){
    		//当访问当前页数大于总页数的时候,返回最大页数
    		if($name=='currentPage' && $this->currentPage > $this->total_page){
    			return $this->total_page;
    		}
    		elseif (!isset($this->$name)) {
    			return "错误";
    		}
    		return $this->$name;
    	}
    	//返回当前页数据
    	function get_list(){
    		//设置当前页currentPage
    		if (empty($_GET['p']) || $_GET['p']>$this->total_page) {
    			$p =1;
    		}else{
    			$p = $_GET['p'];
    		}
    		$this->currentPage = $p;
    		//调用防范,找出第一个数字是哪个
    		$this->get_startnum();
    		$offset = ($p-1)*$this->page_num;
    		//查询当前的数据
    		$sql = "SELECT * FROM {$this->table} LIMIT {$offset},{$this->page_num}";
    		$stmt = $this->pdo->prepare($sql);
    		$stmt->execute();
    		return  $stmt->fetchAll(PDO::FETCH_ASSOC);
    	}
    	//返回列表标签起始页数,判断页码列表第一个数从哪里开始,判断条件是显示几个数字
    	function get_startnum(){
    		$now = $this->currentPage;//当前页
    		$tag_count = $this->tag_count;//要显示几个数字
    		$total_page = $this->total_page;//总页码数
    		$num = ceil($tag_count/2);
    		if($now <= $num){
    			$start_num =0;
    		}
    		elseif ($now>($total_page-$num)) {
    			$start_num = $total_page-$num*2+1;
    		}else{
    			$start_num = $now-$num;
    		}
    		$this->start_num = $start_num;
    	}
    
    }
    $page = new Page($config,'user');
    // var_dump($page->get_list());
    ?>
    
    <table>
    	<tr>
    		<td>序号</td>
    		<td>名字</td>
    		<td>密码</td>
    	</tr>
    	<?php 
    	foreach ($page->get_list() as $k => $v):
    	?>
    	<tr>
    		<td><?=($k+1)?></td>
    		<td><?=$v['name']?></td>
    		<td><?=$v['pwd']?></td>
    	</tr>
    	<?php
    	endforeach
    	?>
    </table>
    <div>
    	共<?=$page->total_data?>条数据,共<?=$page->total_page?>页,当前为<?=$page->currentPage?>页
    	<br>
    
    	<?php
    	//如果是第前几页,则把上一页取消掉
    	echo ($page->currentPage==1)?"没有了":"<a href='/index.php?p=".($page->currentPage-1)."'>上一页</a>";
    	?>
    
    	<?php
    	for ($i=1; $i <=$page->tag_count; $i++) { 
    		$a =$page->start_num+$i;
    		//如果为当前页则输出文字,如果不是则输出连接
    		if ($a==$page->currentPage) {
    			echo $a;
    		}else{
    			echo "-<a href='/index.php?p=".$a."'>$a</a>-";
    		}
    	}
    	?>
    	<?php
    	//如果是最后一页,则把下一页取消掉
    	echo ($page->currentPage==$page->total_page)?"没有了":"<a href='/index.php?p=".($page->currentPage+1)."'>下一页</a>";
    	?>
    	
    	<form action="/index.php" method="get">
    		<input type="text" name="p" width="50" placeholder="请输入页码">
    		<button>跳转</button>
    	</form>
    </div>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学