站长学院
CMS建站教程 SEO优化攻略
来源:齐鲁CMS 栏目:PHP 阅读: 日期: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>
效果截图: