看板 PHP 關於我們 聯絡資訊
使用方法 一、只要給這支function資料庫的總筆數(用count去算就好了) 二、原本的select查詢,最後面加上limit ".($page*$p).",".$p; 三、在表格最後面,把function這個名字貼上 array_page($totals_rows,$page,$p,$px,$new_Link); 四、$new_Link就是要該網頁,原本有些 $_GET 要回傳,就加在這裡... 例如:http://localhost/test.php?mode=old ---> 查歷史資料 $new_Link 就 給他 'mode=old' 山人覺得優點就是... database用 limit 去限制每次查的大小,可以節省資料庫抓資料數量的負擔 用count去算database的內容也快 原本的SQL語法如... $sql="select id,name,sex from humandata"; 要改成二支 一支如第二點所說的 : $sql="select id,name,sex from humandata limit ".($page*$p).",".$p; 另一支就是要算筆數 $sql="select count(*) from humandata"; 或擔心二支SQL算出不用筆數,就偷懶這樣寫 $sql="select count(*) from (原sql語法) as a "; 接著...$totals_rows=mysql_result(mysql_query($sql),0,0); 一點點小小的心得供大家參考...也希望大家能多多指教 <? //自動產生分頁排序說明 //版本1.1 //開發者:羽山秋人 //時間:2007414 //第二版修正於:2007416 //使用方法 /* array_page( $totals_rows $資料庫算出的總筆數, $page $目前的頁碼常用 $p $每頁顯示的筆數 $px $每頁要顯示多少個【第 xx 頁】 $new_Link $跳頁用的網頁帶入值 ---> ?以後原本傳的值 P.S:需自行在 SQL 語法最後加上 limit ".($page*$p).",".$p; P.S:$p、$px、$page 請加注在 檔案開頭 以上 limit ".($page*$p).",".$p; //加在原本沒分頁的SQL語法最後(mysql only) //要加開網頁開頭的部分-------------------start $p=10; //每頁顯示5筆 $px=5; //每頁顯示跳頁用的5筆 if(isset($page)) { $page=$page; } else if(isset($_GET['page'])) { $page=$_GET['page']; } else { $page=0; } //要加在網頁開頭的部分-------------------end */ function array_page($totals_rows,$page,$p,$px,$new_Link) { //傳說中的分頁 //$p=5; // 每頁顯示5筆 //$px=5; //每頁限制最多5頁,超過就用「下5頁」上5頁 $page_range_start=floor($page/$px)*$px; $page_range_end=$page_range_start+$px; //自動算幾頁 $totals_page=ceil($totals_rows/$p); if($page_range_end>$totals_page) { $page_range_end=$totals_page; } //echo $page_range_start; //echo "<br>"; //echo $page_range_end; //echo "<br>"; if($page-($page%$px)>=$px) { echo "【<a href=?".$new_Link."&page=".($page-$px).">上".$px."頁</a>】             "; } if(($page-$page%$px)<$totals_page-$px) { if(($page+$px)>=$totals_page) //修正加上page的頁碼超過最終頁碼 2007/4/16 { $temp=$totals_page-1; } else { $temp=$page+$px; } echo "【<a href=?".$new_Link."&page=".($temp).">下".$px."頁</a>】"; } echo "<br>"; for($i=$page_range_start;$i<$page_range_end;$i++) { if($page==$i) echo "【第 ".($i+1)." 頁】"; else echo "【<a href=?".$new_Link."&page=".$i.">第 ".($i+1)." 頁</a>】"; } echo "<br><div align=right>第【".($page+1)."】頁</div>"; echo "合計共【".$totals_rows."】筆/共【".$totals_page."】頁"; //分頁結束 } ?> -- 歡樂學習農場 工作室成立 宗旨:現階段幫學生解決任何課業的疑難問題。 挑戰叫獸任何出題~不限任何語言....GoGoGo 歡樂學習農場 論壇網址:http://3wa.myvnc.com -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.56.213.47
alexblue:不錯唷!! 如果用class包起來 會更好 XD!! 04/16 09:52
clifflu:似乎不是所有的 DB 都支援 limit 語法喔 ^^;; 04/16 12:03
buganini:看看adodb 04/16 12:20
roga:推樓上 04/16 15:28
shadowjohn:/_\ 04/16 16:49
shadowjohn:剛才跟我們組長討論了一段adobc...他說效率不太好..Orz 04/16 16:52
arzbar:好處在於 任何一種DB PHP 寫法都一樣 04/16 18:40
shadowjohn:3Q~~~ 04/16 22:24
buganini:彈性與速度常常是二選一的.... 04/17 17:48
buganini:就像二退與二一......*flee* 04/17 17:48
buganini:不過個人覺得這部份速度影響不大啊.. 04/17 17:51
buganini:瓶頸應該是在DB那裡而不是產生SQL 04/17 17:52
shadowjohn:還好程式碼產生器都寫好了...一行字就新改刪查Orz 04/18 13:02
※ 編輯: shadowjohn 來自: 220.132.135.169 (05/23 14:13)
janet1:THANKS,BUT有錯誤勒~~~這是你HOMEPAGE相簿的程式碼嗎??? 08/24 13:22