本文章來給各位php入門者提供在php與mysql實現分頁代碼與原理,在mysql中支持limit 0,1這樣就是查詢0,1條記錄了,有了它在php中分頁就簡單快速多了。
所謂分頁顯示,也就是將數據庫中的結果集人為的分成一段一段的來顯示,這里需要兩個初始的參數:1,每頁多少條記錄($PageSize)2,當前是第幾頁($CurrentPageID).
現在只要再給我一個結果集,我就可以顯示某段特定的結果出來,至于其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。
以MySQL數據庫為例,如果要從表內截取某段內容,sql語句可以用:select * from table limit offset, rows。看看下面一組sql語句,嘗試一下發現其中的規率,代碼如下:
- select * from table limit 0,10 // 前10條記錄
- select * from table limit 10,10 // 第11至20條記錄
- select * from table limit 20,10 // 第21至30條記錄
- ……
這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板,代碼如下:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那么回事,搞定了最重要的如何獲取數據的問題以后,剩下的就僅僅是傳遞參數,構造合適的sql語句然后使用php從數據庫內獲取數據并顯示了,以下我將用具體代碼加以說明.
- <html>
- <head>
- <title>
- ShowData
- </title>
- </head>
- <body>
- <h2>ShowData</h2>
- <?php
- //連接數據庫
- $page = 1;
- $db = mysql_connect('127.0.0.1','root','toor');
- mysql_select_db('test',$db);
- $pagesize = 3; //每頁顯示到數量
- //計算一共有多少記錄,用于計算頁數
- $rs = mysql_query("select count(*) from info",$db);
- $row = @mysql_fetch_array($rs);
- $numrows = $row[0];
- //計算頁數
- $pages = intval($numrows / $pagesize);
- if ($numrows % $pagesize)
- {
- $pages++;
- }
- //設置頁數
- if (isset($_GET['page']))
- {
- $page = intval($_GET['page']);
- }
- else
- {
- $page = 1; //其他情況,都指向第一頁
- }
- //計算記錄的偏移量
- $offset = $pagesize * ($page - 1);
- //讀取指定記錄
- $rs = mysql_query("select * from info order by id limit $offset,$pagesize",$db);
- //把數據用表格顯示出來
- if ($row = @mysql_fetch_array($rs))
- {
- $i = 0;
- ?>
- <table border='0' width='80%'>
- <tr>
- <td width='50%'>
- <p align='center'>ID</td>
- <td width='50%'>
- <p align='center'>DOC</td>
- </tr>
- <?php
- do{
- $i++;
- ?>
- <tr align='center'>
- <td width='50%'><?=$row['id']?></td>
- <td width='50%'><?=$row['doc']?></td>
- </tr>
- <?php
- }
- //循環顯示數據
- while ($row = mysql_fetch_array($rs));
- echo "</table>";
- }
- echo "<div align='center'> 共".$pages."頁(".$page."/".$pages.")";
- for ($i = 1;$i < $page;$i++)
- {
- echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>";
- }
- echo "[".$page."]";
- for ($i = $page + 1;$i <= $pages;$i++)
- {
- echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>";
- }
- echo "</div>";
- ?>
- </body>
- </html>
總結:分頁就根據用戶點擊連接,然后由于php獲取page值再經過一系列算法得出當前多少頁面,然后取多少要就顯示出你要查看的記錄了。
新聞熱點
疑難解答