获取数据库中的数据,php实现分页显示,需要用到Mysql语句中的limit命令。
1.display.php代码:
<html>
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>
div.page{
margin:1px;
}
div.page a{
border: #aa0027 solid 1px;
text-decoration: none;
padding: 2px 5px 2px 5px;
margin: 2px;
}
div.content{
height: 200px;
}
</style>
<body>
<?php
/**获取当前页码,设置第一次打开默认页码**/
//trim($_GET['p'])获取get方法中p的值
$page= isset($_GET['p']) ? trim($_GET['p']) : 1;
//定义一页显示多少条数据
$pageSize=5;
/**根据页码取出数据:php->mysql的处理**/
//连接数据库
$conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');
if (!$conn) {
die("数据库连接失败:".mysqli_connect_error());
}
//设置数据库编码格式,防止乱码
mysqli_set_charset($conn,"utf8");
//编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
$sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数
//把sql语句传送到数据中
$result = mysqli_query($conn,$sql);
//处理数据
echo "<div class='content'>";
echo "<table border=1 cellspacing=0 width=15%>";
echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";
while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['user']}</td>";
echo "<td>{$row['title']}</td>";
echo "<tr>";
}
echo "</table>";
echo "</div>";
//释放循环查询结果
mysqli_free_result($result);
//获取message表一共有多少行数据
$to_sql="SELECT COUNT(*)FROM message";
$to_sql=mysqli_query($conn,$to_sql);
$to_result=mysqli_fetch_array($to_sql);
$to=$to_result[0];//$to保存一共有多少行这个结果
//计算页数
$to_pages=ceil($to/$pageSize);
//关闭数据库
mysqli_close($conn);
//$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
//"?p=".($page-1)."改变当前页面,加1或减1
//显示数据+分页条
$page_banner="<div class='page'>";
//计算偏移量
if($page>1){//当前页数大于1时,显示首页和上一页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
}
if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
}
$page_banner.="共{$to_pages}页";
echo $page_banner;
?>
</body>
</html>
display.php图:
2.display1.php代码:
<html>
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>
div.page{
margin:1px;
}
div.page a{
border: #aa0027 solid 1px;
text-decoration: none;
padding: 2px 5px 2px 5px;
margin: 2px;
}
div.page span.current{
border: #000099 1px solid;background-color: #992b6c;padding: 4px 6px 4px 6px;margin: 2px;color: #fff;
font-weight: bold;
}
div.content{
height: 200px;
}
</style>
<body>
<?php
/**获取当前页码,设置第一次打开默认页码**/
//trim($_GET['p'])获取get方法中p的值
$page= isset($_GET['p']) ? trim($_GET['p']) : 1;
//定义一页显示多少条数据
$pageSize=5;
//定义显示左右页面个数(一般是奇数比较好)
$ShowPage=3;
/**根据页码取出数据:php->mysql的处理**/
//连接数据库
$conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');
if (!$conn) {
die("数据库连接失败:".mysqli_connect_error());
}
//设置数据库编码格式,防止乱码
mysqli_set_charset($conn,"utf8");
//编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
$sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数
//把sql语句传送到数据中
$result = mysqli_query($conn,$sql);
//处理数据
echo "<div class='content'>";
echo "<table border=1 cellspacing=0 width=15%>";
echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";
while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['user']}</td>";
echo "<td>{$row['title']}</td>";
echo "<tr>";
}
echo "</table>";
echo "</div>";
//释放循环查询结果
mysqli_free_result($result);
//获取message表一共有多少行数据
$to_sql="SELECT COUNT(*)FROM message";
$to_sql=mysqli_query($conn,$to_sql);
$to_result=mysqli_fetch_array($to_sql);
$to=$to_result[0];//$to保存一共有多少行这个结果
//计算页数
$to_pages=ceil($to/$pageSize);
//关闭数据库
mysqli_close($conn);
//$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
//"?p=".($page-1)."改变当前页面,加1或减1
//显示数据+分页条
$page_banner="<div class='page'>";
//计算当前页面左右显示的偏移量
$pageffset=($ShowPage-1)/2;
//计算偏移量
if($page>1){//当前页数大于1时,显示首页和上一页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
}
//初始化数据
$start=1;//开始显示页面
$end=$to_pages;//最后显示页面
if ($to_pages>$ShowPage){//总页码大于显示页面
if($page>$pageffset+1){//当前页面大于偏移量+1,开头显示...
$page_banner.="...";
}
if ($page>$pageffset){ //当前页数大于偏移量时,开始页面等于当前>页面减1,结束页面看总页面是否大于当前页面加偏移量,是显示结束就当前页面加偏移量>,否则等于总页码
$start=$page-$pageffset;
$end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;
}else{//当前页面小于等于偏移量时,开始页面为1,结束页面如果总页>码大于显示页面就等于显示页面,否则等于总页码
$start=1;
$end=$to_pages>$ShowPage?$ShowPage:$to_pages;
}
if ($page+$pageffset>$to_pages){//如果当前页面和偏移量之和大于总
页码,开始页面等于开始页面减(当前页面+偏移量-结束页面(总页码))
$start=$start-($page+$pageffset-$end);
}
}
//循环显示页码
for($i=$start;$i<=$end;$i++){
if ($page == $i) {
$page_banner .= "<span class='current'>{$i}</span>";
} else {
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
}
}
//尾部省略,总页数大于显示页数且总页数大于当前页数和偏移量之和,就显示...
if ($to_pages>$ShowPage && $to_pages>$page+$pageffset){
$page_banner.="...";
}
if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
}
$page_banner.="共{$to_pages}页";
echo $page_banner;
?>
</body>
</html>
display1.php图:
3.display2.php代码:
<html>
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>
div.page{
margin:1px;
/*text-align: center;居中*/
}
div.page a{
border: #aa0027 solid 1px;
text-decoration: none;
padding: 2px 5px 2px 5px;
margin: 2px;
}
div.page form{
display: inline;
}
div.content{
height: 200px;
}
</style>
<body>
<?php
/**获取当前页码**/
$page= isset($_GET['p']) ? trim($_GET['p']) : 1;
//定义一页显示多少条数据
$pageSize=5;
/**根据页码取出数据:php->mysql的处理**/
//连接数据库
$conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');
if (!$conn) {
die("数据库连接失败:".mysqli_connect_error());
}
//设置数据库编码格式,防止乱码
mysqli_set_charset($conn,"utf8");
//编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
$sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数
//把sql语句传送到数据中
$result = mysqli_query($conn,$sql);
//处理数据
echo "<div class='content'>";
echo "<table border=1 cellspacing=0 width=15%>";
echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";
while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['user']}</td>";
echo "<td>{$row['title']}</td>";
echo "<tr>";
}
echo "</table>";
echo "</div>";
//释放循环查询结果
mysqli_free_result($result);
//获取message表一共有多少行数据
$to_sql="SELECT COUNT(*)FROM message";
$to_sql=mysqli_query($conn,$to_sql);
$to_result=mysqli_fetch_array($to_sql);
$to=$to_result[0];//$to保存一共有多少行这个结果
//计算页数
$to_pages=ceil($to/$pageSize);
//关闭数据库
mysqli_close($conn);
//$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
//"?p=".($page-1)."改变当前页面,加1或减1
//显示数据+分页条
$page_banner="<div class='page'>";
//计算偏移量
if($page>1){//当前页数大于1时,显示首页和上一页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
}
if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
}
$page_banner.="共{$to_pages}页";
//通过get方式提交p的值。跳转不同的页面,可直接填写跳到那一页
$page_banner.="<form action='display2.php' method='get'>";
$page_banner.="到第<input type='text'size='2'name='p'>页";
$page_banner.="<input type='submit'value='确定'>";
$page_banner.="</form>";
echo $page_banner;
?>
</body>
</html>
display2.php图: