2010-02-17 6 views
4

Je suis à la recherche d'un script de pagination php "avancé", qui affiche 10 entrées mysql par page. Dans le web il y a beaucoup de scripts « simples » (même avec jQuery) comme celui-ci: http://www.9lessons.info/2009/09/pagination-with-jquery-mysql-and-php.html est une démonstration ici: http://demos.9lessons.info/pagination.phpRecherche d'un script avancé de pagination php/mysql

Ces scripts simples sont mauvais quand avoir des centaines d'entrées ... Alors, que j'ai besoin est une avancée Script - je besoin de quelque chose comme ceci:

Lorsque vous êtes sur la page 1, il devrait ressembler à ceci:

[1] 2 3 4 5 ... 45 

sur la page 8:

1 ... 6 7 [8] 9 10 ... 45 

Sur la page 43:

1 ... 41 42 [43] 44 45 

et ainsi de suite ...

De nombreux forums ou blogs (par exemple wordpress) utilisent cette technique. Quelqu'un peut-il me fournir le code? Il doit y avoir un «code de bonnes pratiques», mais je ne le trouve pas. Merci!

+0

Les questions sur SO devraient montrer le code que vous avez essayé, pas simplement une demande générale de solutions. Voir http://stackoverflow.com/about – Blazemonger

Répondre

0

Jetez un oeil paginateur est un peu différent à plug-in this (jquery)

que ce que vous voulez, mais il fera tout ce dont vous avez besoin.

5

Essayez ceci,

function generatePagination($currentPage, $totalPages, $pageLinks = 5) 
{ 
    if ($totalPages <= 1) 
    { 
     return NULL; 
    } 

    $html = '<ul class="pagination">'; 

    $leeway = floor($pageLinks/2); 

    $firstPage = $currentPage - $leeway; 
    $lastPage = $currentPage + $leeway; 

    if ($firstPage < 1) 
    { 
     $lastPage += 1 - $firstPage; 
     $firstPage = 1; 
    } 
    if ($lastPage > $totalPages) 
    { 
     $firstPage -= $lastPage - $totalPages; 
     $lastPage = $totalPages; 
    } 
    if ($firstPage < 1) 
    { 
     $firstPage = 1; 
    } 

    if ($firstPage != 1) 
    { 
     $html .= '<li class="first"><a href="./?p=1" title="Page 1">1</a></li>'; 
     $html .= '<li class="page dots"><span>...</span></li>'; 
    } 

    for ($i = $firstPage; $i <= $lastPage; $i++) 
    { 
     if ($i == $currentPage) 
     { 
      $html .= '<li class="page current"><span>' . $i . '</span></li>'; 
     } 
     else 
     { 
      $html .= '<li class="page"><a href="./?p=' . $i . '" title="Page ' . $i . '">' . $i . '</a></li>'; 
     } 
    } 

    if ($lastPage != $totalPages) 
    { 
     $html .= '<li class="page dots"><span>...</span></li>'; 
     $html .= '<li class="last"><a href="./?p=' . $totalPages . '" title="Page ' . $totalPages . '">' . $totalPages . '</a></li>'; 
    } 

    $html .= '</ul>'; 

    return $html; 
} 
1

Si vous avez vraiment 100s de pages de résultats, vous pouvez envisager paginant logarithmiquement.
Voir this post pour plus de détails.