相關提要,此分頁範例為新聞,會有相關的類別,在切換類別時又會有分頁的問題。
比如說 政治這個類別 又15筆資料,當$p為10就會產生分頁,會有 [1][2]需要切換。
到時就需要借助cat 這個變數。那cat這個變數會有兩種方式丟出(POST及GET)
$p=10; //每頁顯示10筆 $px=5; //每頁顯示跳頁用的5筆 $col_id=intval($_GET['cat']); //get $post_kind_id=$_POST['kind_id'];//post if($post_kind_id!=''){ $col_id=$post_kind_id; $page=""; #避免之前選擇的頁數影響之後post出去的page頁面 $sql_where_kind=" where kind_id='$col_id'"; $sql="SELECT * FROM `".DBPREFIX."_news` ".$sql_where_kind; $data=lazy_get_data($sql); }else{ $data=lazy_get_data($sql); } if($col_id!=""){ $sql_where_kind=" where kind_id='$col_id'"; $sql="SELECT * FROM `".DBPREFIX."_news`".$sql_where_kind; $data=lazy_get_data($sql); } $snStr="issue_news.php?cat={$col_id}"; $total =$num; $show=ceil($total/$p); //每頁顯示$P筆 if(isset($page)){ $page=$page; }else if(isset($_GET['page'])) { $page=$_GET['page']; }else{ $page=0; } $sqlproducts=$sql. " ORDER BY top_sn desc ,news_sn desc "." LIMIT ".($page*$p).",".$p; $data=lazy_get_data($sqlproducts); //放在table最下面 array_page($total,$page,$p,$px,$snStr);
以下為副程程式:
一、只要給這支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 " "; //echo $page_range_end; //echo " "; if($page-($page%$px)>=$px) { echo "【上".$px."頁】 "; } 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 "【下".$px."頁】"; } echo " "; for($i=$page_range_start;$i<$page_range_end;$i++) { if($page==$i) echo "【第 ".($i+1)." 頁】"; else echo "【第 ".($i+1)." 頁】"; } echo "第【".($page+1)."】頁"; echo "合計共【".$totals_rows."】筆/共【".$totals_page."】頁"; //分頁結束 } ?>