数据分页显示的简单实现

说明:
分页显示是通过SQL语句中的limit来实现,下面是我对分页进行简单的封装

define("HOST",'localhost');
define("USERNAME",'root');
define("PWD",'');
define("DB_NAME",'');
define("CHARSET",'UTF8');
class Page
{
    private $link;//数据库连接
    private $pages;//数据显示所需总页数
    private $num;//每页显示数据条数

    function __construct($num){//连接数据库
        $this->num=$num;
        $link = mysqli_connect(HOST,USERNAME,PWD);
        if(!$link){
            exit('连接失败,errno:'.mysqli_connect_errno().' error:'.mysqli_connect_error());
        }
        if(!mysqli_select_db($link,DB_NAME)){
            exit('数据库指定失败,errno:'.mysqli_errno($link).' error:'.mysqli_error($link));
        }
        if(!mysqli_set_charset($link,CHARSET)){
            exit('字符集设置失败,errno:'.mysqli_errno($link).' error:'.mysqli_error($link));
        }
        $sql = 'select id from user';
        $res = mysqli_query($link,$sql);
        $this->pages = ceil(mysqli_num_rows($res)/$this->num);//求出所需页数
        mysqli_free_result($res);
        $this->link=$link;
    }


    function showPages(){//显示页码
        $p=1;//第几页
        echo '<a href="?p=1">首页</a>  ';
        while($p<=$this->pages){
            echo '<a href="?p='. $p .'">'. $p .'</a>  ';
            $p++;
        }
        echo '<a href="?p='. $this->pages .'">尾页</a>  ';
    }
    function getPage(){
        if(empty($_GET['p'])){//因为首次进入本页面不存在p的值,因此需要指定p的值,默认为第一页
            $_GET['p']=1;
            $p=$_GET['p'];
        }else{
            $p=$_GET['p'];
        }
        return $p;
    }
    function showTable($sql='select * from user'){//显示数据,可以自己定义sql语句
        $p=$this->getPage();
        echo '<table border="1" width="800" align="center">';
        $sql = $sql.' limit '.($p-1)*$this->num .','. $this->num;
        $result = mysqli_query($this->link,$sql);
        if($result && mysqli_num_rows($result)){
            $flag=true;
            while($row  = mysqli_fetch_assoc($result)){
                if($flag){//显示字段名字
                    echo '<tr>';
                        foreach($row as $key=>$val){
                            echo '<th>'.$key.'</th>';
                        }
                    echo '</tr>';
                    $flag=false;
                }
                echo '<tr>';
                foreach($row as $val){//输出具体数据
                    echo '<td>'.$val.'</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        }else{
            echo 'sql执行错误,请检查你的sql语句 '.$sql;
        }
        mysqli_free_result($result);
    }

    function __destruct(){
        mysqli_close($this->link);
    }
}

/*测试*/

$page = new Page(8);//表示每页显示8条数据
$sql = 'select username,email,reg_time from user';
$page->showTable($sql);

$page->showPages();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值