发布网友 发布时间:2022-04-20 07:10
共2个回答
懂视网 时间:2022-04-20 11:31
php页码怎么实现?
PHP页码显示的实现
效果:
拿去后几乎直接用。pageNow #当前页,pageNumb #总共页码数 两个变量赋值方式改一下就行了。
<?php ######################################################################## #页码显示PHP脚本 #ora #2019-04-22 19:49:57 ######################################################################### #$pageNumb = $arrlen /$contentNumbOnePage ; #总共页码数=内容数/每页内容数。 $pageNumb = 7; if (is_float($pageNumb)) { #总共页码数 取整。 $pageNumb = (int)$pageNumb + 1; }elseif (is_integer($pageNumb)) { $pageNumb = $pageNumb; }else $pageNumb = 1; #出错,但重新定义总页码数为1,而不是退出。 #$pageNow #当前页 #$_GET['page'] #url传递(请求)的页码。 if (!empty($_GET['page']) && is_integer($_GET['page']/1) ) { #is_integer($_GET['page']/1) ,除1以后才是整数... 此处有问题。待修正。 $pageNow = $page = $_GET['page'] ; }else {$pageNow = $page = 1;} #没有请求页码,给予初始化为1. #页码显示 #规则:必有首尾页,当前页前后页码相同且给定。其他页码用...表示。 /* 四种情况。难得解释清楚,感兴趣自己用一串数字掩饰一下。 比如: 1 23 ...777 ; 1 2 34...777 ;12 3 45...777 ; 1...23 4 56...777;1...234_235 <236> 237_238 ...777; 1 23 ...7 ; 1 2 34...7 ; 12 3 45...7 ;123 4 567; 1 23 ...5 ; 1 2 345; 12 3 45; 1 ... 234_235 <236> 237 ; 1 ... 235 236 <237> ; 1 2 <3> 4 ; */ #ye ma xian shi. $jiange=2;#ye ma jian ge. if (!is_integer($jiange) && $jiange<1){$jiange=2;}# jian ge bu xiao yu 1,qie wei zhengshu. ##########################################下面4个case是方法############################ #case 1 if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 前面有首页1、$jiange定义的间隔页码、和它本身。 echo " <a href="?page=1" >1</a> " ; echo "<span class="extend">...</span> "; for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){ echo "<a href="?page=$num">$num</a> "; } echo "<span class="current">$pageNow</span>"; #当前页 for ($num = $pageNow + 1 ; $num<=$pageNow + $jiange ;$num++){ echo "<a href="?page=$num">$num</a> "; } $num = $pageNow + 1; echo "<span class="extend">...</span> "; echo "<a href="?page=$pageNumb"> $pageNumb</a>"; } #case 2 if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 到首页的间隔页少于等于定义间隔值。前面的页码全输出。后连续输出间隔页码。 for($i=1;$i<=$pageNow + $jiange ;$i++){ if($i==$pageNow){ echo "<span class="current">$pageNow</span>"; #当前页 }else {echo "<a href="?page=$i"> $i</a>"; } } echo "<span class="extend">...</span> "; echo "<a href="?page=$pageNumb"> $pageNumb</a>"; } #case 3 if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ echo " <a href="?page=1" >1</a> " ; echo "<span class="extend">...</span> "; for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){ echo "<a href="?page=$num">$num</a> "; } echo "<span class="current">$pageNow</span>"; #当前页 for ($num = $pageNow + 1 ; $num<=$pageNumb;$num++){ echo "<a href="?page=$num">$num</a> "; } } #case 4 if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ # for($i=1;$i<=$pageNumb ;$i++){ if($i==$pageNow){ echo "<span class="current">$pageNow</span>"; #当前页 }else {echo "<a href="?page=$i"> $i</a>"; } } #echo "<span class="extend">...</span> "; #echo "<a href="?page=$pageNumb"> $pageNumb</a>"; }
html格式的代码:
<?php ######################################################################## #页码显示PHP脚本 #ora #2019-04-22 19:49:57 ######################################################################### #$pageNumb = $arrlen /$contentNumbOnePage ; #总共页码数=内容数/每页内容数。 $pageNumb = 7; if (is_float($pageNumb)) { #总共页码数 取整。 $pageNumb = (int)$pageNumb + 1; }elseif (is_integer($pageNumb)) { $pageNumb = $pageNumb; }else $pageNumb = 1; #出错,但重新定义总页码数为1,而不是退出。 #$pageNow #当前页 #$_GET['page'] #url传递(请求)的页码。 if (!empty($_GET['page']) && is_integer($_GET['page']/1) ) { #is_integer($_GET['page']/1) ,除1以后才是整数... 此处有问题。待修正。 $pageNow = $page = $_GET['page'] ; }else {$pageNow = $page = 1;} #没有请求页码,给予初始化为1. #页码显示 #规则:必有首尾页,当前页前后页码相同且给定。其他页码用...表示。 /* 四种情况。难得解释清楚,感兴趣自己用一串数字掩饰一下。 比如: 1 23 ...777 ; 1 2 34...777 ;12 3 45...777 ; 1...23 4 56...777;1...234_235 <236> 237_238 ...777; 1 23 ...7 ; 1 2 34...7 ; 12 3 45...7 ;123 4 567; 1 23 ...5 ; 1 2 345; 12 3 45; 1 ... 234_235 <236> 237 ; 1 ... 235 236 <237> ; 1 2 <3> 4 ; */ #ye ma xian shi. $jiange=2;#ye ma jian ge. if (!is_integer($jiange) && $jiange<1){$jiange=2;}# jian ge bu xiao yu 1,qie wei zhengshu. #case 1 if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 前面有首页1、$jiange定义的间隔页码、和它本身。 echo " <a href="?page=1" >1</a> " ; echo "<span class="extend">...</span> "; for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){ echo "<a href="?page=$num">$num</a> "; } echo "<span class="current">$pageNow</span>"; #当前页 for ($num = $pageNow + 1 ; $num<=$pageNow + $jiange ;$num++){ echo "<a href="?page=$num">$num</a> "; } $num = $pageNow + 1; echo "<span class="extend">...</span> "; echo "<a href="?page=$pageNumb"> $pageNumb</a>"; } #case 2 if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 到首页的间隔页少于等于定义间隔值。前面的页码全输出。后连续输出间隔页码。 for($i=1;$i<=$pageNow + $jiange ;$i++){ if($i==$pageNow){ echo "<span class="current">$pageNow</span>"; #当前页 }else {echo "<a href="?page=$i"> $i</a>"; } } echo "<span class="extend">...</span> "; echo "<a href="?page=$pageNumb"> $pageNumb</a>"; } #case 3 if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ echo " <a href="?page=1" >1</a> " ; echo "<span class="extend">...</span> "; for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){ echo "<a href="?page=$num">$num</a> "; } echo "<span class="current">$pageNow</span>"; #当前页 for ($num = $pageNow + 1 ; $num<=$pageNumb;$num++){ echo "<a href="?page=$num">$num</a> "; } } #case 4 if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ # for($i=1;$i<=$pageNumb ;$i++){ if($i==$pageNow){ echo "<span class="current">$pageNow</span>"; #当前页 }else {echo "<a href="?page=$i"> $i</a>"; } } #echo "<span class="extend">...</span> "; #echo "<a href="?page=$pageNumb"> $pageNumb</a>"; }
更多PHP相关知识,请访问PHP教程!
热心网友 时间:2022-04-20 08:39
你在页面输出的时候是把数组的key+1当成序号输出的吧。。你获取当前页数据要用到limit(offset, length)对吧,你只要把key+1+offset就行啦,具体情况可以去后盾人看下相关的视频,这样更加清楚追问你说的是数据库分页,我要的是数组分页