2015-09-26 27 views
0

我需要打开分页才能显示像这样的123456 .... 320 目前我的分页显示了从1到320的所有记录,以下是我用于分页的代码。我用循环和if else语句来显示所有的页面,但我没有得到在哪里输入代码来打破之间。分页符

### Pagination on All results ### 
$mx_page = ceil($page_count/$ttl_rws_); 
$nav_pg = ''; 
$self = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; 

for($page = 1; $page <= $mx_page; $page++){ 
    if($page == $page_no){ 
     $nav_pg .= '<li class="active"><a href="#">'.$page.'</a></li>'; 
    } else{ 
     if(isset($_GET['page'])){ 
      $self_ = preg_replace("/page=\d+/", "page=".$page, $self); 
     } else { 
      $self_ = $self.'&page='.$page; 
     } 
     $nav_pg .= '<li><a href="'.$self_.'">'.$page.'</a></li>'; 
    } 
} 
if ($page_no > 1){ 
    $page = $page_no - 1; 
    if(isset($_GET['page'])){ 
      $prv_page = '<li><a href="'.preg_replace("/page=\d+/", "page=".$page, $self).'">&laquo;</a></li>'; 
      $frst_page = '<li><a href="'.preg_replace("/page=\d+/", "page=1", $self).'">Frist</a></li>'; 
    } else { 
      $prv_page = '<li><a href="'.$self.'&page='.$page.'">&laquo;</a></li>'; 
      $frst_page = '<li><a href="'.$self.'&page=1'.'">Frist</a></li>'; 
     } 
} else { 
    $prv_page = ''; 
    $frst_page = ''; 
} 
if ($page_no < $mx_page) { 
    $page = $page_no + 1; 
    if(isset($_GET['page'])){ 
     $nxt_page = '<li><a href="'.preg_replace("/page=\d+/", "page=".$page, $self).'">&raquo;</a></li>'; 
     $lst_page = '<li><a href="'.preg_replace("/page=\d+/", "page=".$mx_page, $self).'">Last</a></li>'; 
    } else { 
     $nxt_page = '<li><a href="'.$self.'&page='.$page.'">&raquo;</a></li>'; 
     $lst_page = '<li><a href="'.$self.'&page='.$mx_page.'">Last</a></li>'; 
    } 
} else { 
    $nxt_page = ''; 
    $lst_page = ''; 
} 
echo $frst_page.$prv_page.$nav_pg.$nxt_page.$lst_page; 
+0

你在哪里设置'$ page_no'的值? –

回答

0

我会在for循环内做到这一点:

$maxButtons = 10; 
$threshold = 20; 
$lastButtons = 3; 
$dots = " ... "; 

for($page = 1; $page <= $mx_page; $page++){ 
    if($page == $page_no){ 
     $nav_pg .= '<li class="active"><a href="#">'.$page.'</a></li>'; 
    } else{ 


     if(isset($_GET['page'])){ 
      $self_ = preg_replace("/page=\d+/", "page=".$page, $self); 
     } else { 
      $self_ = $self.'&page='.$page; 
     } 

     /* 
     * this should give something like 
     * 1 2 3 4 5 6 7 8 9 10 ... 49 50 
     * on 50 pages: 
     * We have more than $threshold pages and we are behind 
     * $maxButtons to show and we did not reach the $lastButtons value 
     * so we only show some dots: 
     */ 
     if ($mx_page > $threshold && $page > $maxbuttons && 
             $page < ($mx_page - $lastButtons) 
     { 
      $nav_pg .= $dots; 
      $dots = ''; 
     } 
     else 
      $nav_pg .= '<li><a href="'.$self_.'">'.$page.'</a></li>'; 
    } 
} 

这不检查对其他逻辑,但应就如何解决这个问题的指示。

+0

如果我保留... for for循环,那么它将打印所有... ... ...直到最后一页,并且它可以导航到前10页然后它不会相应地移动我的意思是如果我在第34页它应该显示最后1 2 3 4 ... 30 31 32 33 34 35 36 37 ... 300. – joe

+0

啊,是的,将做出修复! –

+0

但是在这里我没有得到10到10之间的值。现在它只显示1 2 3 4 5 6 7 8 9 10 123 124 125 126和10到123之间不可访问。 – joe