php學習模塊之分頁的實現

所謂分頁操作,就是利用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>&nbsp;&nbsp;&nbsp;&nbsp;<a href="lookdb.php?page=<?php echo $prev; ?>">上一頁</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="lookdb.php?page=<?php echo $next; ?>">下一頁</a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="lookdb.php?page=<?php echo $maxPage; ?>">尾頁</a>

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章