大家好,我是一個將邁入社會的小姑娘,這幾天對PHP有了一點點小小的研究,那就是當你需要顯示大量資料時,畫面資料一大堆不知道該怎麼辦,此時可以用 PHP 換頁 的方式將資料分成好幾頁,以方便使用者閱讀。以下是我所適用的方法,希望對大家有所幫助~YA!!
以下程式碼基於 PHP 研習 中的實作練習下的資料換頁程式碼。
2.
接著在config.php內設定資料庫環境。<?php //======資料庫變數======// $cfgDB_HOST = 'localhost'; //資料庫所在主機位置 $cfgDB_PORT ="3306"; //資料庫PORT(預設為3306) $cfgDB_USERNAME ="trista"; //資料庫帳號 $cfgDB_PASSWORD ="trista"; //資料庫密碼 $cfgDB_NAME = "northwind"; //使用的資料庫 ?>
3.
connect.php插入config.php用來連結資料庫,並下選擇資料庫的指令。<?php // 建立資料庫連線 function create_connection() { include 'config.php'; $link = mysql_connect($cfgDB_HOST . ":" . $cfgDB_PORT, $cfgDB_USERNAME, $cfgDB_PASSWORD); return $link; } // 選擇資料庫 function execute_sql($cfgDB_NAME, $sql, $link) { mysql_select_db($cfgDB_NAME, $link); $result = mysql_query($sql, $link); return $result; } ?>
5.
此 PHP 換頁範例中插入了connect.php連結資料庫,並以bootstrap美化畫面(我所使用的包含bootstrap.css及bootstrap-responsive.css),資料庫則是以北風資料庫做為範例。<?php // 資料庫連結 require_once("connect.php"); $link=create_connection(); // 判斷Page傳來指定的頁數,以決定本頁顯示的資料 if (isset($_POST['page'])) $nowPage = $_POST['page']; if (!isset($nowPage)) $nowPage = 1; // 判斷pern傳來的值,以決定顯示的資料筆數 if (isset($_POST['pern'])) $perNum = $_POST['pern']; if (!isset($perNum)) $perNum = 5; // 每頁顯示 5 筆(每次取5筆資料) //總筆數 $sql = "select count(*) from nwsuppliers "; // 計算資料表 nwsuppliers 總筆數 $rs = execute_sql("northwind", $sql, $link); // 選擇資料庫 northwind list($totalNum) = mysql_fetch_row($rs); //若資料庫中無任何資料 if($totalNum == 0) { echo "目前沒有資料"; exit; } //開始起始指標 $startId = ($nowPage - 1)* $perNum; //該頁實際顯示資料筆數目 if(($startId+$perNum)>$totalNum) { $realPerNum = $totalNum - $startId; }else{ $realPerNum = $perNum; } //總頁數 if($totalNum % $perNum == 0){ $totalPage = $totalNum / $perNum; }else{ $totalPage = intval($totalNum / $perNum)+1; } //第一頁 $firstPage=1; //最後一頁 $lastPage = $totalPage; //上一頁 if($nowPage > 1){ $forwardPage = $nowPage - 1; $firstPgLink = "<li><a href=\"javascript:chg(1, $perNum);\">第一頁</a></li>"; $forPgLink = "<li><a href=\"javascript:chg($forwardPage, $perNum);\">《 </a></li>"; }else{ $forwardPage = false; $firstPgLink = ""; $forPgLink = ""; } //下一頁 if($nowPage < $totalPage){ $nextPage = $nowPage + 1; $lastPgLink = "<li><a href=\"javascript:chg($lastPage, $perNum);\">最後一頁</a></li>"; $nextPgLink = "<li><a href=\"javascript:chg($nextPage, $perNum);\"> 》 </a></li>"; }else{ $nextPage = false; $nextPgLink = ""; $lastPgLink = ""; } ?> <!DOCTYPE html> <html> <head> <link type="text/css" rel="stylesheet" href="css/bootstrap.css"> <script language="JavaScript"> function chg(np, n){ document.sd.page.value=np; document.sd.pern.value=n; document.sd.submit(); } </script> </head> <body> <form action="page.php" method="post" name="sd"> <input type="hidden" name="page"> <input type="hidden" name="pern"> </form> <table class="table table-striped table-bordered table-condensed" align='center' > <tr align='center' > <td nowrap width='80' >CompanyName </td> <td nowrap width='100' >ContactName</td> <td nowrap width='100' >ContactTitle</td> </tr> <?php //取出資料欄位CompanyName , ContactName , ContactTitle $sql = " select CompanyName , ContactName, ContactTitle from nwsuppliers "; $rs = execute_sql("northwind", $sql, $link); //顯示資料 for($i=$startId;$i<$startId+$realPerNum;$i++){ mysql_data_seek($rs,$i); list( $CompanyName , $ContactName, $ContactTitle ) = mysql_fetch_row($rs); ?> <tr align='center'> <td nowrap ><?php echo $CompanyName ;?></td> <td nowrap ><?php echo $ContactName;?></td> <td nowrap ><?php echo $ContactTitle;?></td> </tr> <?php } ?> </table> <form> <div class="pagination pagination-centered"> <ul> <?php echo $firstPgLink; //第一頁 ?> <?php echo $forPgLink; //上一頁 ?> <?php $limitPage = 2; //顯示該頁+-頁碼數 $minPage = $nowPage - $limitPage < 1 ? 1 : $nowPage - $limitPage; //顯示最小頁碼 $maxPage = $nowPage + $limitPage > $totalPage ? $totalPage : $nowPage + $limitPage; //顯示最大頁碼 //顯示換頁頁碼 for($x = $minPage ; $x <= $maxPage ; $x++) { $li = "<li>"; if ($x == $nowPage) $li = "<li class=\"active\">"; $PgLink = $li . "<a href=\"javascript:chg($x, $perNum);\">$x</a></li>"; echo $PgLink; } ?> <?php echo $nextPgLink; //下一頁 ?> <?php echo $lastPgLink; //最後一頁 ?> <li><a>共<?php echo $totalPage; //總頁數 ?>頁</a></li> <li><a>(<?php echo $totalNum; //總資料筆數 ?> 筆資料)</a></li> <li><a style="border-style: none;"> <?php if($totalPage == 1){ echo ""; } //快速換頁下拉式選單 else{ $pageFast="<select name=\"pageFast\" onChange=\"chg(this.form.pageFast.value, this.form.perNum.value);\" style=\"width: 90px;\" >"; for($i=1;$i<=$totalPage;$i++){ $pageFast.="<option value=\"".$i."\""; if($i==$nowPage) $pageFast.=" selected"; $pageFast.=">第".$i."頁</option>"; } $pageFast.="</select>"; echo $pageFast; } ?> </a> </li> <li><a style="border-style: none;"> <?php if ($totalPage == 1) { $pagePerNum = "<select name=\"perNum\" onChange=\"chg(1, this.form.perNum.value);\" style=\"width: 110px;\" >"; } else { $pagePerNum = "<select name=\"perNum\" onChange=\"chg(this.form.pageFast.value, this.form.perNum.value);\" style=\"width: 110px;\" >"; } $pnList = array(5, 10, 20, 50, 100, 200); //每頁所顯示的資料筆數 $pnCount = count($pnList); //下拉式顯示資料筆數 for ($i = 0; $i < $pnCount; $i ++) { $pagePerNum .= "<option value=\"" . $pnList[$i] . "\""; if($pnList[$i] == $perNum) $pagePerNum .= " selected"; $pagePerNum .= ">顯示" . $pnList[$i] . "筆</option>"; } $pagePerNum .= "</select>"; echo $pagePerNum; ?> </a> </li> </ul> </div> </form> </body> </html>
完成圖
回 PHP 目錄
回首頁
妳們都好專業喔
回覆刪除請問 裡面的page.php指的是甚麼阿
回覆刪除