所谓分页操作,就是利用get的传递值时带入的链接中值的变化来实现的,如果要想实现分页操作,要先求出以下几个信息
1.信息的总条数,可以是数据库中数据库中信息的行数,也可以是文件中的条数;
如果说用数据库实现的话,用count(*)来算出信息的总条数;
2.每页显示的信息数量,这个是自己设置的,可以根据个人喜好来设置,不多说;
3.判断当前在第几页,这个很关键,因为后边也要引用,所以如果值不为空的话,是要用改变后的值,可以用if判断当前的页数,如果为空,就设为初值1,否则就用get来获取改变之后的动态值;
4.每页显示的首条数据的编号和每页要显示的条数,同样是显示需要,如果每页显示为3条,总共有10条信息,那么求取是
第一页:0 3
第二页:3 6
第三页:6 9
第四页:9 10
所以求第一个数是:(page-1)*3;而第二个数据就是3,而页数的求值因为不能被整除,所以要多出来一页,就是ceil(总条数/每页显示数),其中ceil为向上取整。
除了数据之外还要做些其他的工作(因为我是用数据库实现的,所以如果不是可以借鉴下思路):
1.要在sql语句对输出的数据加以限制,在查询语句后加limit关键字+我们在4中求出的第一个数和第二个数,中间用逗号隔开;
2.上下页的实现,上下页对page值分别做减一和加一操作,所以要设置两个变量prev和next来保存变化后的量,而这两个变量的值并不是没有限制的,prev最小要为1,而next最大值不能超过总页数,所以还要有个判断过程。
好了,具体就这么多了,下边是我的源代码:
主页:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>留言板</title>
</head>
<body>
<div><h1 align="center">我的留言板</h1></div>
<hr>
<div>
<form action="insertdb.php" method="get">
<table width="500" border="0" cellpadding="4">
<tr>
<td>标题:</td>
<td><input type="text" id="title" name="title"><br></td>
</tr>
<tr>
<td>内容:</td>
<td><textarea name="content" rows="13" cols="80"></textarea></td>
<tr>
<td colspan="2" align= "center"><input type="submit" name="submit" value="上传留言">
<input type="reset" name="reset" value="重置"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
数据库头文件mysqli.php
<?php
$con=mysqli_connect("localhost","root","");
if(!$con){
exit("连接错误!");
}
mysqli_set_charset($con,"utf8");
mysqli_select_db($con,"test");
?>
插入命令insertdb.php
<?php
include 'mysqli.php';
//写sql指令
header('Content-type:text/html;charset=utf-8');
$title=$_GET["title"];
$content=$_GET["content"];
$sql="insert into liuyan(title,content) values('$title','$content')";
//如果插入成功
if($content !="" && mysqli_query($con,$sql)){
echo '插入成功吼吼吼!!!!<a href="lookdb.php">查看</a>';
}else if($content !=""){
echo '请输入内容!!!!!';
}
//关闭数据库
mysqli_close($con);
?>
查看命令lookdb.php
<?php
include 'mysqli.php';
//------------分页-----
//求出数据库中的总数量
$sql="select count(*) as count from liuyan";
$res=mysqli_query($con,$sql);
$countnum=mysqli_fetch_assoc($res);
$count=$countnum["count"];
//设置page的值
$page=empty($_GET["page"]) ? 1 : $_GET["page"];
//设置pagesize的值
$pagesize=3;
//求出最大可以显示的页面
$maxPage=ceil($count/$pagesize);
//求出offset的值
$offset=($page-1)* $pagesize;
//-----------分页-------
$sql="select *from liuyan order by id asc limit $offset ,$pagesize";
var_dump($sql);
$res=mysqli_query($con,$sql);
echo '<table width="400" border="1" cellpadding="4">';
echo '<tr>';
echo '<th align="center">id号</th>';
echo '<th align="center">内容</th>';
echo '<tr>';
while($obj=mysqli_fetch_assoc($res)){
echo '<tr>';
echo '<td align="center">'.$obj["id"].'</td>';
echo '<td align="center">'.$obj["title"].'</td>';
echo '</tr>';
}
echo'</table>';
$prev=$page-1;
$next=$page+1;
if($next>$maxPage){
$next=$maxPage;
}
if($prev<1){
$prev=1;
}
?>
<br/>
<a href="lookdb.php?page=1">首页</a> <a href="lookdb.php?page=<?php echo $prev; ?>">上一页</a> <a href="lookdb.php?page=<?php echo $next; ?>">下一页</a>
<a href="lookdb.php?page=<?php echo $maxPage; ?>">尾页</a>