以下代码为本论坛右下边的帖子导航,我历时6.5小时完成。 显示帖子标题的程序display.pl包括了加密论坛的身份认证原来只有207行, 但为了能够实现帖子的导航,却需要增加这下面114行,我思前想后觉得我的算法有问题, 应该有一种更加简单的判断方式。希望谁可以给点意见或建议。 代码中,$lastpage 为板块页面帖子总数,$page为当前浏览页面
代码:
print "<table border=\"0\" width=\"100%\"><tr align=\"right\"><td>"; print "<a href=\"add.pl?key=$key&cat=$cat&forum=$forum&card=new&page=$page&position=$position&id=$card_num\">发表</a>\ \;\n";
if($page>1) { $tmp_page = $page - 1; print "\ \;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=1\" target=\"right\">第一页</a>"; print "\ \;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\" target=\"right\">上一页\ \;</a>"; } if($lastpage>1){ ########### GoPage Display ############ if ($lastpage <= 10){ for($i=1;$i<=$lastpage;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i </a>"; } } elsif($lastpage>10 && $lastpage<100){ if($page>=10){ $ten=substr($page,0,1); $lten=substr($lastpage,0,1); $lnum=substr($lastpage,1,1); for($i=1;$i<=$ten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>"; } if($ten<$lten){ for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i </a>"; } for($i=$ten+1;$i<=$lten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>"; } }else{ for($i=1;$i<=$lnum;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i </a>"; } } }else{ $lten=substr($lastpage,0,1); for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i </a>"; } for($i=1;$i<=$lten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>"; } } } elsif($lastpage>=100){ $trd=substr($page,0,1); $ten=substr($page,1,1); $num=substr($page,2,1); $ltrd=substr($lastpage,0,1); $lten=substr($lastpage,1,1); $lnum=substr($lastpage,2,1);
if($page<10){ for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i</a> "; } for($i=1;$i<10;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> "; } for($i=1;$i<=$ltrd;$i++){ my $tmp_page="$i"."00"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> "; } }elsif($page>=10 && $page<100){ $ten=substr($page,0,1); for($i=1;$i<=$ten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> "; } for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i</a> "; } for($i=$ten+1;$i<10;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> "; } for($i=1;$i<=$ltrd;$i++){ my $tmp_page="$i"."00"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> "; } }elsif($page>=100){ for($i=1;$i<=$trd;$i++){ my $tmp_page="$i"."00"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> "; } for($i=1;$i<=$ten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> "; } if($trd==$ltrd){ if($ten==$lten){ for($i=1;$i<=$lnum;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> "; } }else{ for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> "; } for($i=$ten+1;$i<=$lten;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> "; } } }else{ for($i=1;$i<10;$i++){ print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> "; } for($i=$ten+1;$i<10;$i++){ my $tmp_page="$i"."0"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> "; } for($i=$trd+1;$i<=$ltrd;$i++){ my $tmp_page="$i"."00"; print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> "; } } } } ########### End GoPage Display ############ } if($next_page) { $tmp_page = $page + 1; print "\ \;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\" target=\"right\">下一页</a>"; print "\ \;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$lastpage\" target=\"right\">最后页</a>"; } print "</td></tr></table>";
[此贴被 NetDemon(netdemon) 在 11月7日17时1分 编辑过]
|