ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MYSQL 数据库内容的分页展示

2019-07-30 22:51:42  阅读:250  来源: 互联网

标签:pageNum 分页 数据库 pid tbname str MYSQL type page


  这里使用一个已有的数据库表做演示

  为了测试  做了一个简单的页面

  

  点击查询 会展示第一页的内容

  

  点击数字按钮可以选取页数
  或者点击上一页 、下一页进行数据的浏览

  

  代码部分  

  简单的HTML代码

  

 <button id='show'>查询</button>
 <div class="div"></div>

  JS部分 使用jquery写的代码

  

 // 默认
        $('#show').on('click', function () {
            var numb = 1;
            var type = 'show';
            $.ajax({
                type: 'post',
                url: 'php/page.php',
                data: {
                    'p': numb,
                    'type': type
                },
                success: function (msg) {
                    $('.div').html(msg)
                }
            })
        })
        function page(num) {
            var numb = num.value;
            var type = 'page'
            $.ajax({
                type: 'post',
                url: 'php/page.php',
                data: {
                    'p': numb,
                    'type': type
                },
                success: function (msg) {
                    $('.div').html(msg);
                }
            })
            console.log(numb);
        }

  PHP部分 

  这是封装在类里面的主要语句

  

 // 根据表名获取数据 当前表一共有多少条记录
    // 这里可以把表名作为参数 也可以直接写在方法内
    // 根据表名获取数据总数
    protected function getTableNum($tbname)
    {
        $sql = "SELECT COUNT(*) FROM `{$tbname}`;";
        $res = $this->db->query($sql)->fetch_assoc()["COUNT(*)"];
        return $res;
    }
    // * 功能:获得分页数量
    // * @parm string $tbname
    // * @reurn int $PageNum
    // */
    function getPageNum($tbname, $pageNum = 5)
    {
        $dataNum = $this->getTableNum($tbname);
        $Num = ceil($dataNum / $pageNum);
        return (int) $Num;
    }
    // //根据pid获取分页
    public function page($pid, $pageNum = 5)
    {
        $pid = ($pid - 1) * $pageNum;
        $sql = "SELECT * FROM `main` LIMIT {$pid},{$pageNum};";
        $res = $this->db->query($sql)->fetch_all(MYSQLI_ASSOC);
        return $res;
    }

  逻辑部分  在PHP中拼出页面展示的样式
  

$type = $_REQUEST['type'];
// 显示第一页
if ($type == 'show') {
    $pid = $_REQUEST['p'];
    $tbname = 'main';
    $res = $db->page($pid, $pageNum = 5);
    $str = "<table>";
    foreach ($res as $key => $value) {
        $str .= "<tr>";
        foreach ($value as $k => $v) {
            $str .= "<td style='border:1px solid grey'>{$v}</td>";
        }
        $str .= "</tr>";
    }
    $str .= "</table>";
    echo $str;
    // 按钮部分
    $num = $db->getPageNum($tbname, $pageNum = 5);
    if ($pid > 1) {
        $back = $pid * 1 - 1;
    } else {
        $back = $pid;
    }
    if ($pid < $num) {
        $next = $pid * 1 + 1;
    } else {
        $next = $pid;
    }
    $jump = "<button value='{$back}' onclick='page(this)'>上一页</button>";
    for ($i = 1; $i <= $num; $i++) {
        $jump .= "<button style='color:red' value='{$i}'onclick='page(this)' >$i</button>";
    }

    $jump .= "<button value='{$next}' onclick='page(this)'>下一页</button>";
    echo $jump;
}
// 显示其他页面
if ($type == 'page') {
    $pid = $_REQUEST['p'];
    $back = $pid * 1 - 1;
    $next = $pid * 1 + 1;
    $tbname = 'main';
    $res = $db->page($pid, $pageNum = 5);
    $str = "<table>";
    foreach ($res as $key => $value) {
        $str .= "<tr>";
        foreach ($value as $k => $v) {
            $str .= "<td style='border:1px solid grey'>{$v}</td>";
        }
        $str .= "</tr>";
    }
    $str .= "</table>";
    echo $str;
    // 按钮部分
    $num = $db->getPageNum($tbname, $pageNum = 5);
    if ($pid > 1) {
        $back = $pid * 1 - 1;
    } else {
        $back = $pid;
    }
    if ($pid < $num) {
        $next = $pid * 1 + 1;
    } else {
        $next = $pid;
    }
    $jump = "<button value='{$back}' onclick='page(this)'>上一页</button>";
    for ($i = 1; $i <= $num; $i++) {
        $jump .= "<button style='color:red' value='{$i}' onclick='page(this)' >{$i}</button>";
    }

    $jump .= "<button value='{$next}' onclick='page(this)'>下一页</button>";
    echo $jump;

 

  如果最后一页内容达不到所设置的最大行数,按钮会跟着内容发生位置变动,这里把内容和按钮部分分别输出的  是为了以后单独调整按钮部分在页面的位置


  如果发现有什么问题,欢迎指正

 

 

 

  

标签:pageNum,分页,数据库,pid,tbname,str,MYSQL,type,page
来源: https://www.cnblogs.com/zhangcheng001/p/11273296.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有