那個shoupage明明是設定的5啊 為什麼還是顯示所有的頁 而且我把shoupage的值隨便改還是顯示所有的 沒變化
"; echo ''.$page.'/'.$pagenum.'頁|'; if($page==1){ echo '首頁|'; echo '上一頁|'; }else{ echo '首頁|'; echo '上一頁|'; } if($pagenum>$shoupage){ if($page>$pageoffset){ $start=$page-$pageoffset; $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum; }else{ $start=1; $end=$pagenum>$shoupage?$shoupage:$pagenum; } if($page+$pageoffset>$pagenum){ $start=$start-($page+$pageoffset-$end); } } echo ''; echo '
'; $shoupage=5; $pageoffset=($shoupage-1)/2; $start=1; $end=$pagenum; for($i=$start;$i<=$end;$i++){ echo '
- '.($i).'
'; } echo '
'; echo ''; if($page==$pagenum){ echo '|下一頁|'; echo '尾頁|'; }else{ echo '|下一頁|'; echo '尾頁|'; } echo ''; echo ''; };?>
回複內容:
那個shoupage明明是設定的5啊 為什麼還是顯示所有的頁 而且我把shoupage的值隨便改還是顯示所有的 沒變化
"; echo ''.$page.'/'.$pagenum.'頁|'; if($page==1){ echo '首頁|'; echo '上一頁|'; }else{ echo '首頁|'; echo '上一頁|'; } if($pagenum>$shoupage){ if($page>$pageoffset){ $start=$page-$pageoffset; $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum; }else{ $start=1; $end=$pagenum>$shoupage?$shoupage:$pagenum; } if($page+$pageoffset>$pagenum){ $start=$start-($page+$pageoffset-$end); } } echo ''; echo '
'; $shoupage=5; $pageoffset=($shoupage-1)/2; $start=1; $end=$pagenum; for($i=$start;$i<=$end;$i++){ echo '
- '.($i).'
'; } echo '
'; echo ''; if($page==$pagenum){ echo '|下一頁|'; echo '尾頁|'; }else{ echo '|下一頁|'; echo '尾頁|'; } echo ''; echo ''; };?>
@Eapen 他已經說出了原因。
這邊給出一個我寫的demo,複製粘貼即可運行。
若是消化了,你也就學會了分頁,若還有不知道的可隨時問我:
$np=@$_GET['page']; // 擷取當前頁/** 設定要顯示的頁數。* 例如顯示 5 頁* 為了合理的顯示,需要設定一個位移量:你肯定想得到位移量會是:(5-1)/2=2;----》 5 6 nowpage 8 9* 那如果顯示的是6頁該怎麼辦? * 該不會也是 (6-1)/2 吧! 所以你其實需要自己手動算一下的,只要湊成6頁即可:3+1+2=6 所以設: $offset_forward=3 $offset_forward=2 1 表示當前頁 --->5 6 7 nowpage 9 10 */$dp=12; //顯示多少頁$offset_forward=6; // 前面顯示多少條記錄$offset_after=5; // 後面顯示多少天記錄
/---分頁函數---/
function display_data($np,$dp,$offset_forward,$offset_after){
$length=1000; // 設定記錄數 if ($length==0) { echo '沒有資料!'; } $total_page=ceil($length/$dp); // 計算總頁數。 /*---對頁數進行限制:必須大於0 小於總頁數---*/ if (!isset($np)) { $np=1; }else{ if ($np<1) { $np=1; } if ($np>$total_page) { $np=$total_page; } } $btn=""; $btn.="首頁"; $btn.="上一頁"; if ($total_page<=$dp) // 若是總頁數小於要顯示的分頁數 ... { $start_page=1; $end_page=$total_page; for ($i=$start_page;$i<=$end_page;++$i) { $btn.="$i"; } }else{ // 若是總頁數大於要顯示的分頁數 ... if ($np<=$dp) // 若是當前頁小於等於要顯示的頁數.. { $start_page=1; $end_page=$dp; for ($i=$start_page;$i<=$end_page;++$i) { $btn.="$i"; } }else{ // 若是當前頁大於要顯示的頁數.. if ($np+$offset_forward>$total_page) //若是當前頁加上位移量會大於總頁數 .... { $start_page=$total_page-$offset_forward-$offset_after; $end_page=$total_page; for ($i=$start_page;$i<=$end_page;++$i) { $btn.="$i"; } }else{ //若是當前頁加上位移量會小於總頁數 .... $start_page=$np-$offset_after; $end_page=$np+$offset_forward; for ($i=$start_page;$i<=$end_page;++$i) { $btn.="$i"; } } } } $btn.="下一頁"; $btn.="尾頁"; echo $btn; /*---給當前頁添加樣式--*/ echo <<
EOT;
}display_data($np,$dp,$offset_forward,$offset_after); // 執行分頁邏輯
?>
啊 分頁寫的好複雜。。。
如果只是想問為什麼全都顯示出來的話
問題出在30 31行
$start=1;$end=$pagenum;
去掉這兩行就可以了。。雖然還是有其他問題