博客列表 >PHP分页查询技术总结_9月10日

PHP分页查询技术总结_9月10日

PHP学习
PHP学习原创
2018年09月20日 13:46:111000浏览

1、总结分页的偏移量和查询原理。

    在数据库中可以分页查询数据。比如偏移量设置成5,就是从第六第数量开始查询。如果设置成10,就是从第十条数据开始查询。所以在计算偏移量的时候,可以利用从$_GET获取过来的参数,通过(页码-1)*显示数据的方面来获取偏移的数值。

实例

<?php
/**
 * 分页查询
 */

$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');

$page = isset($_GET['P']) ? $_GET['P'] : 1;  //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了
$pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询

$stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5");
$stmt->execute();
$srult = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据
$stmt->execute();
$rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算
$pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<table>
    <caption>员工表</caption>
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>邮箱</td>
        <td>年龄</td>
    </tr>
    <?php foreach ($srult as $srults): ?>
    <tr>
        <td><?php echo $srults['id']; ?></td>
        <td><?php echo $srults['name']; ?></td>
        <td><?php echo $srults['email']; ?></td>
        <td><?php echo $srults['age']; ?></td>
    </tr>
    <?php endforeach; ?>
    <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a>
</table>
</body>
</html>

运行实例 »

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

实例

<?php
/**
 * 分页查询
 */

$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');

$page = isset($_GET['P']) ? $_GET['P'] : 1;  //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了
$pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询

$stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5");
$stmt->execute();
$srult = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据
$stmt->execute();
$rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算
$pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<table>
    <caption>员工表</caption>
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>邮箱</td>
        <td>年龄</td>
    </tr>
    <?php foreach ($srult as $srults): ?>
    <tr>
        <td><?php echo $srults['id']; ?></td>
        <td><?php echo $srults['name']; ?></td>
        <td><?php echo $srults['email']; ?></td>
        <td><?php echo $srults['age']; ?></td>
    </tr>
    <?php endforeach; ?>
    <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a>
</table>
<form>
    第
    <select name="P" id="1">
<?php for ($i=1;$i<=$pages;$i++): ?>
        <option><?php echo $i; ?></option>
<?php endfor; ?>
    </select>
    页
    <button>提交</button>
</form>

</body>
</html>

运行实例 »

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

实例

<?php
/**
 * 分页查询
 */

$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');

$page = isset($_GET['P']) ? $_GET['P'] : 1;  //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了
$pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询

$stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5");
$stmt->execute();
$srult = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据
$stmt->execute();
$rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算
$pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<table>
    <caption>员工表</caption>
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>邮箱</td>
        <td>年龄</td>
    </tr>
    <?php foreach ($srult as $srults): ?>
    <tr>
        <td><?php echo $srults['id']; ?></td>
        <td><?php echo $srults['name']; ?></td>
        <td><?php echo $srults['email']; ?></td>
        <td><?php echo $srults['age']; ?></td>
    </tr>
    <?php endforeach; ?>
    <?php if ($page != 1): ?>
    <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a>
<?php endif; ?>
    <?php for ($i=1;$i<=$pages;$i++): ?>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $i; ?>"><?php echo $i; ?></a>
    <?php endfor; ?>



<?php if ($pages != $page): ?>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a>
    <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a>
    <?php endif; ?>
</table>
<form>
    第
    <select name="P" id="1">
<?php for ($i=1;$i<=$pages;$i++): ?>
        <option><?php echo $i; ?></option>
<?php endfor; ?>
    </select>
    页
    <button>提交</button>
</form>

</body>
</html>

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议