15621857753

php实例13:读取数据库信息并实现原生分页效果

来源:齐鲁建站 栏目:开发教程 阅读: 日期:2023-02-09

php实例13:读取数据库信息并实现原生分页效果

/**
 * php原生实现数据库分页效果
 */

$dsn ='mysql:dbname=test;host=localhost';
$user='root';
$password='root';
$charset='utf8';

$pdo = new PDO($dsn, $user, $password);

$sql = "SELECT * FROM info";

$data = $pdo->query($sql)->fetchall();

$num = 5; //每页数据
$count = count($data); //总数
//总页数=总数 / 每页5个 ; 向上取整
$w = ceil($count / $num);

//接收传来的值 (判断一下 有$_GET['page']就给$_GET['page'] 否则就给1 )
$page = isset($_GET['page']) ? $_GET['page'] :1;

//偏移量
$offset = ($page -1)*$num;

//limit 两个值 一个偏移量 一个页数值
$sql = "SELECT * FROM info limit $offset,{$num}";

$data = $pdo->query($sql)->fetchall();

//上一页 如果为1就是首页 否则-1就是上一页
$p = ($page==1)?0:($page-1);

//下一页 如果=总页数就是尾页,否则+1就是下一页
$n = ($page == $w)?0:($page+1);


<form action="">
    <table border="1">
        <tr>
            <th>姓名</th>
            <th>邮箱</th>
            <th>号码</th>
            <th>时间</th>
        </tr>
        <?php foreach ($data as $v): ?>
        <tr>
            <td><?php echo $v['username']?></td>
            <td><?php echo $v['email']?></td>
            <td><?php echo $v['phone']?></td>
            <td><?php echo date("Y-m-d",$v['time'])?></td>
        </tr>
        <?php endforeach; ?>
    </table>
    <?php
    if ($page==1){
        echo ' 首页 ';
    }else{
        echo "<a href='?page=1'> 首页 </a>";
    }
    //如果有上一页
    if ($p){
        echo "<a href='?page={$p}'> 上一页 </a>";
    }else{
        echo '上一页';
    }

    //如果是一下页
    if ($n){
        echo "<a href='?page={$n}'> 下一页 </a>";
    }else{
            echo ' 下一页 ';
    }

    if ($page == $w){
        echo ' 尾页 ';
    }else{
        echo "<a href='?page={$w}'> 尾页 </a>";
    }

    ?>

</form>

效果截图:

PHP实例,PHP数据库,php分页

展开