2017-02-13 12 views
-1

私はGithub APIを使用してリポジトリコミットを取得していますが、結果をページ付けする必要があります。 データはJSONにあり、私はこのような改ページのスタイルやりたい:PHPを使用してJSON結果にページを設定する方法

enter image description here

のAPI resutls:http://api.github.com/repos/FenixHosting/docs.fenixcms.com/commits

編集: 私は機能を持っているが、それは動作しません。

function pagination($query, $per_page = 20,$page = 1, $url = '?', $custom){ 
     $git_docs = file_get_contents($query, false); 
     $row = json_decode($git_docs, true); 
     $total = count($row); 
     $adjacents = "2"; 

     $page = ($page == 0 ? 1 : $page); 
     $start = ($page - 1) * $per_page;        

     $prev = $page - 1;       
     $next = $page + 1; 
     $lastpage = ceil($total/$per_page); 
     $lpm1 = $lastpage - 1; 

     $pagination = ""; 
     if($lastpage > 1) 
     { 
      $pagination .= "<ul class='pagination pagination-sm'>"; 
      if ($lastpage < 7 + ($adjacents * 2)) 
      { 
       for ($counter = 1; $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<li class='active'><a>$counter</a></li>"; 
        else 
         $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
       } 
      } 
      elseif($lastpage > 5 + ($adjacents * 2)) 
      { 
       if($page < 1 + ($adjacents * 2))  
       { 
        for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
        { 
         if ($counter == $page) 
          $pagination.= "<li class='active'><a>$counter</a></li>"; 
         else 
          $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
        } 
        $pagination.= "<li class='disabled'><span>...</span></li>"; 
        $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>"; 
        $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";  
       } 
       elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
       { 
        $pagination.= "<li><a href='{$url}page=1'>1</a></li>"; 
        $pagination.= "<li><a href='{$url}page=2'>2</a></li>"; 
        $pagination.= "<li class='disabled'><span>...</span></li>"; 
        for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
        { 
         if ($counter == $page) 
          $pagination.= "<li class='active'><a>$counter</a></li>"; 
         else 
          $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
        } 
        $pagination.= "<li class='disabled'><span>...</span></li>"; 
        $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>"; 
        $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";  
       } 
       else 
       { 
        $pagination.= "<li><a href='{$url}page=1'>1</a></li>"; 
        $pagination.= "<li><a href='{$url}page=2'>2</a></li>"; 
        $pagination.= "<li class='disabled'><span>...</span></li>"; 
        for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
        { 
         if ($counter == $page) 
          $pagination.= "<li class='active'><a>$counter</a></li>"; 
         else 
          $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
        } 
       } 
      } 

      if ($page < $counter - 1){ 
       $pagination.= "<li><a href='{$url}page=$next'>»</a></li>"; 
       $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>"; 
      }else{ 
       $pagination.= "<li class='disabled'><a>»</a></li>"; 
       $pagination.= "<li class='disabled'><a>Last</a></li>"; 
      } 
      $pagination.= "</ul>\n";  
     } 


     return $pagination; 
    } 

答えて

0

そのAPIのpagination機能を使用する - https://developer.github.com/v3/#pagination

複数のアイテムを返すリクエストは、デフォルトで30個のアイテムにページ番号が付けられます。 ?pageパラメーターを使用して、さらにページを指定することができます。一部のリソースでは、?per_pageパラメータを使用してカスタムページサイズを最大100に設定することもできます。

例: - https://api.github.com/repos/FenixHosting/docs.fenixcms.com/commits?page=1&per_page=3

改ページのリンクを構築するために、これを読んで:https://developer.github.com/guides/traversing-with-pagination/#constructing-pagination-links

+0

私は明確ありますが、私は更新されたイメージ – Ruben

+0

回答から改ページのスタイルをしたいです。 – emaillenin

+0

それは実際にRoRです、私の質問の更新を見てください – Ruben

関連する問題