新聞開發之分頁功能
分頁幾乎是每個網站都會使用的功能,因為如果內容很多,不用分頁的話,頁面顯示會很長很長,使用和查找起來會非常麻煩,所以我們來講下這個很實用的功能。
分頁的整體想法:
分頁就是將資料庫中所有的資訊以固定的數量分成若干段,所以這裡需要兩個資料:
每頁顯示的資訊條數$limitPage
取得目前的分頁數$Page
#由於電腦語言預設從0開始取得記錄
如果設定每頁顯示數量為5,$limitPage = 5,
那麼第一頁$page = 1 就會顯示0, 1, 2 , 3 , 4三筆記錄
第二頁$page = 2 就會顯示5 , 6 , 7 , 8 , 9 , 10 三筆記錄
第三頁 $page = 3 就會顯示11, 12, 13 , 14 , 15 三筆記錄
以此類推。 。 。 。 。 。 。 。 。
設定一個參數$limitFrom 從第幾個資料開始讀取
從上面的規律就可以得到:
$limitFrom = ($page - 1) * $ limitPage;
就會分別從第0 ,5, 11條開始取得資料。
接下來就是連接資料庫,並統計總的新聞條數:
<?php $link = mysqli_connect('localhost','uesrname','password','news'); $sql = "select * from new"; // select * from表示获取全部字段的值 $sqlCount = "select count(*) from new"; //count(*)是计算数据总的条数 $retQuery = mysqli_query($link, $sqlCount); //查询数量sql语句 $retCount = mysqli_fetch_array($retQuery); //获取数量 $count = $retCount[0]?$retCount[0]:0; //判断获取的新闻数量 $countNews = $count; ?>
接著,我們給一個變數$countPage用來表示總共顯示了多少頁
可能我們時長會遇到這樣的情況,假如有100條信息,我們給定的是每頁顯示11個,剩下的1條如何處理呢,
那我們就要用%進行取餘來判斷:
<?php $countPage = $countNews%$limitPage; //求余数获取分页数量能否被除尽 if(($countPage) > 0) { //获取的页数有余 $countPage = ceil($countNews/$limitPage); // ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 100个新闻每个页面显示11个,成9个页面,剩余1个单独成1个页面,这样总共有10个页面 } else { $countPage = $countNews/$limitPage; //如果是10个新闻每个页面显示2个,成5个页面 } ?>
其他參數上一頁$prev,下一頁$next;
<!DOCTYPE html> <html> <head> <meta charset=utf8"> <title>分表页</title> </head> <body> <div> <a href="?page=<?php echo $prev;?>">|上一页</a> <?php for($i=1; $i<=$countPage; $i++):?> <a href="?page=<?php echo $i;?>"><?php echo $i;?></a> <?php endfor;?> <a href="?page=<?php echo $next;?>">|下一页</a> </div> </body> </html>
#