摘要:[PHP]PHP簡易分頁實作
[鐵人賽Day10]PHP簡易分頁實作
繼上篇「[鐵人賽Day9]計算MySQL資料庫回傳資料筆數」
(點部落:[PHP&MySQL]計算MySQL資料庫回傳資料筆數)
繼上篇「[鐵人賽Day9]計算MySQL資料庫回傳資料筆數」
(點部落:[PHP&MySQL]計算MySQL資料庫回傳資料筆數)
有提到mysql_num_rows函式,就在聯想什麼地方可以用到
頭一個想到的就是做分頁,那今天就做個PHP的簡易分頁吧
今天會用到的函式有這些(先前提過的不列出):ceil()、isset()、intval()
將在下面做功能說明,但讓我鋪下一篇的內容一下,所以isset()在此處暫時不解說
ceil():取得不小於值的下一個整數
使用方法:ceil ( float $value )
例如說:18/4=4.5,那經過ceil()就等於5
想實際操作看看的讀者可以把以下程式碼複製起來執行:
<?php
echo ceil(18/4);
?>
intval():使用指定的base做為轉換的基底(預設值為10),並回傳數值var的整數值,在物件不能使用此函式,不然會產生E_NOTICE錯誤並回傳1
使用方法:intval ( mixed $var )
而今天運用這幾個函式,實作了一下PHP分頁的功能
資料庫名稱為:ithome_test
並建立資料表:good_idea
欄位有id(int(2))跟name(varchar(50))
實作程式碼如下(已寫註解說明):
「pages.php」
<?php
//資料庫連結
$conn=mysql_connect('127.0.0.1','root','') or die("Error");
mysql_select_db('ithome_test');
$sql = "SELECT * FROM `good_idea` ORDER BY `id`"; //修改成你要的 SQL 語法
$result = mysql_query($sql,$conn) or die("Error");
$data_nums = mysql_num_rows($result); //統計總比數
$per = 5; //每頁顯示項目數量
$pages = ceil($data_nums/$per); //取得不小於值的下一個整數
if (!isset($_GET["page"])){ //假如$_GET["page"]未設置
$page=1; //則在此設定起始頁數
} else {
$page = intval($_GET["page"]); //確認頁數只能夠是數值資料
}
$start = ($page-1)*$per; //每一頁開始的資料序號
$result = mysql_query($sql.' LIMIT '.$start.', '.$per,$conn) or die("Error");
?>
<table>
<tr>
<td style="text-align: center;">編號</td>
<td style="text-align: center;">姓名</td>
</tr>
<?php
//輸出資料內容
while ($row = mysql_fetch_array ($result))
{
$id=$row['id'];
$name=$row['name'];
?>
<tr>
<td style="text-align: center;"><?php echo $id; ?></td>
<td style="text-align: center;"><?php echo $name; ?></td>
</tr>
<?php
}
?>
</table>
<br />
<?php
//分頁頁碼
echo '共 '.$data_nums.' 筆-在 '.$page.' 頁-共 '.$pages.' 頁';
echo "<br /><a href=?page=1>首頁</a> ";
echo "第 ";
for( $i=1 ; $i<=$pages ; $i++ ) {
if ( $page-3 < $i && $i < $page+3 ) {
echo "<a href=?page=".$i.">".$i."</a> ";
}
}
echo " 頁 <a href=?page=".$pages.">末頁</a><br /><br />";
?>