Probably the most ugliest looking code ever
I did it in 5-10mins its tested and it works for what i need it for.
Im sure there are plenty of improvements that can be made.
function pagination($limit,$pages,$numrows,$pageinfo){
global $HTTP_GET_VARS; //damn its not superglobal.
$pagecode = '';
##Goto FirstPage
if($HTTP_GET_VARS['page'] != 0){
$pagecode .= " <a href=\"".$pageinfo."page=0\"><< First Page</a> ";
}
##Check for Previous
if(($HTTP_GET_VARS['page']-$limit) < $numrows && $HTTP_GET_VARS['page'] != 0){
$pagecode .= "<a href=\"".$pageinfo."page=".($HTTP_GET_VARS['page']-$limit)."\"><</a> ";
}else{
$pagecode .= "< ";
}
#Work Out the Number to start in the for loop
if($HTTP_GET_VARS['page'] == "0"){
$startpage = 1;
}else{
$start = $HTTP_GET_VARS['page'] / $limit - 1;
if($start == "0"){
$startpage = 1;
}else{
$startpage = $start;
}
}
##Max Show Workout
if($startpage == "1"){
if($startpage + 3 > $pages){
$page = $pages - $startpage;
$maxshow = $startpage + $page;
}else{
$maxshow = $startpage + 3;
}
}else{
if($startpage + 2 < $pages){
$page = $pages - $startpage;
$maxshow = $startpage + $page;
}else{
if($startpage + 2 == $pages){
$maxshow = $pages;
}else{
$maxshow = $pages-2;
}
}
}
##DO the 1 2 3 4 etc
for($i = $startpage; $i<=$maxshow; $i++){
$b = $i - 1;
if($HTTP_GET_VARS['page'] / $limit + 1 == $i){
$pagecode .= "[".$i."]";
}else{
$pagecode .= " <a href=\"".$pageinfo."page=".($limit*$b)."\">".$i ."</a> ";
}
}
##Next
if(($HTTP_GET_VARS['page']+$limit) < $numrows){
$pagecode .= " <a href=\"".$pageinfo."page=".($HTTP_GET_VARS['page']+$limit)."\">></a>";
}else{
$pagecode .= " >";
}
##Goto LastPage
if(($pages-1)*$limit != $HTTP_GET_VARS['page']){
$pagecode .= " <a href=\"".$pageinfo."page=".(($pages-1)*$limit)."\">Last Page >></a>";
}
return $pagecode;
}