所謂分頁操作,就是利用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>