2016-05-12 17 views
2

ページ数を制限する方法を理解するのが難しいです。私はDBに自分の記事を掲載しようとしていますが、500ページ以上あります!私は、一度に最大約15のページ番号を表示したいだけです。私は他の質問で答えを理解することができないようです。ここでPHPページング - ページ数を制限する方法

は、ページネーションのための私のコードです:予想通り

<?php 
    require 'core/init.php'; 

    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; 
    if(!isset($_GET['page'])){ 
     $_GET['page'] = 1; 
    } 
    if(! (int)$_GET['page']){ 
     $_GET['page'] = 1; 
    } 
    if($_GET['page'] < 1){ 
     $_GET['page'] = 1; 
    } 
    $perPage = 18; 
    $start = ($page > 1) ? ($page * $perPage) - $perPage : 0; 

    $articles = DB::getInstance()->query("SELECT SQL_CALC_FOUND_ROWS * FROM articles ORDER BY added DESC LIMIT {$start}, {$perPage}"); 

    foreach($articles->results() as $article){ ?> 
     <div class="article-container"> 
      <h2><?php echo $article->title; ?></h2> 
     </div> 
    <?php 
    } 

    // pagination 

    $total = DB::getInstance()->query("SELECT FOUND_ROWS() as total"); 

    $total = $total->results()[0]; 

    foreach ($total as $total => $value) { 

    } 

    $pages = ceil($value/$perPage); 
    $maxpage = 15; 
?> 
<div class="pagination"> 
    <?php if($_GET['page'] >= 2){ 
     echo '<a href="?page=' . ($_GET['page'] -1) . '" class="paginationButton">Prev</a>'; 
    } 
    for ($i=1; $i <= $pages; $i++) : ?> 
     <a href="?page=<?php echo $i; ?>" <?php if($page === $i) { echo 'class="pageSelected"'; } ?>><?php echo $i; ?></a> 
    <?php endfor; 
     if((int)$_GET['page'] != $i - 1){ 
      echo '<a href="?page=' . ($_GET['page'] +1) . '"class="paginationButton">Next</a>'; 
     } 
    ?> 
</div> 

これは動作しますが、それだけでこのような何かを表示するための最良/最も簡単な方法は何1から500までのページ数を出してくれる。

1 2 3 4 5 6 7 8 9 10 11 12 13 ...>

答えて

2

あなたはページが250であれば、あなたは、出発点と終点サイクルのために

$count = 9; 
$startPage = max(1, $page - $count); 
$endPage = min($pages, $page + $count); 
for($i = $startPage; $i < $endPage; $i++) { 
    // write out the link to the page 
} 

は、それが表示されます変更する必要がある唯一の241、242、...、250、...、 257,258

+0

最後の数字は表示されません。どうして?おそらくそこには –

+0

があるはずです。 $ i <= $ endPage;最後のものも持っている – Richard

関連する問題