Blogger Information
Blog 60
fans 1
comment 1
visits 64421
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP分页查询技术总结_9月10日
PHP学习
Original
1001 people have browsed it

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>

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post