Essa função te ajuda a criar uma paginação. Ela faz mais do que exibir a lista dos links, mas você pode limitar o número de links, antes e depois da página atual.
<?php /* Opções de conexão ao MySQL */ define('DB_HOST', 'localhost'); // Host do servidor MySQL define('DB_NAME', 'la_base'); // Nome do banco de dados define('DB_USER', 'root'); // Nom do usuário MySQL define('DB_PASS', ''); // Senha da conta MySQL /* Opções pela paginação */ define('PAGINA_LIMIT', 5); // Limite de links antes e depois da página atual define('PAGINA_CLASS', 'page'); // Classe dos links "normais" define('PAGINA_CURRENT_CLASS', 'active'); // Classe do link da página atual define('PAGINA_NEXTLINK_CLASS', 'next'); // Classe do link "Próximo" define('PAGINA_PREVIOUSLINK_CLASS', 'previous'); // Classe do link "Anterior" define('PAGINA_PERPAGE', 7); // Número de elementos por página define('PAGINA_LINK', '/teste2.php?page={nb}'); // Estrutura dos link gerados /* Definição da função getLink() . Parâmetro: . @page Int : Página .*/ function getLink($nb) { return str_replace('{nb}', (string) $nb, PAGINA_LINK); } /* Definição da função paginação() . Parâmetros: . @table String: Nome da tabela . @current Int: Página atual .*/ function paginação($table, $current = 1) { echo '<ul class="paginação">'; /* Contamos o número de entradas na tabela e o número de páginas */ try { $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS); } catch(PDOException $e) { echo 'Erro durante a conexão ao servidor MySQL.<br/>'.$e->getMessage(); return; } $sql = 'SELECT COUNT(*) AS nb FROM '.$table; $req = $pdo->query($sql); $data = $req->fetch(); $nb = $data['nb']; $nbPage = ceil($nb / PAGINA_PERPAGE); /* Exibir o link "Anterior" se a página atual não for a primeira */ if($current !== 1) { echo '<li><a href="'.getLink($current - 1).'" class="'.PAGINA_PREVIOUSLINK_CLASS.'">Anterior</a></li>'; } /* Exibir os links antes da página atual */ for($i = ($current - PAGINA_LIMIT) ; $i < $current ; $i++) { if($i > 0) { echo '<li><a href="'.getLink($i).'" class="'.PAGINA_CLASS.'">'.$i.'</a></li>'; } } /* Exibir o link da página atual */ echo '<li><a href="'.getLink($current).'" class="'.PAGINA_CURRENT_CLASS.'">'.$current.'</a></li>'; /* Exibir os seguintes links */ $nb = 0; for($i = ($current + 1) ; $i <= $nbPage ; $i++) { if($nb < PAGINA_LIMIT) { echo '<li><a href="'.getLink($i).'" class="'.PAGINA_CLASS.'">'.$i.'</a></li>'; $nb++; } } /* Exibir o link "Próximo" se a página atual não for a última */ if($current < $nbPage) { echo '<li><a href="'.getLink($current + 1).'" class="'.PAGINA_NEXTLINK_CLASS.'"> Próximo </a></li>'; } echo '</ul>'; } if(isset($_GET['página']) && (int) $_GET['página'] !== 0) { $page = (int) $_GET['página']; } else { $page = 1; } paginação('a_tabela', $página); ?>
.paginação { margin: 0px; list-style: none; padding: 0px; } .paginação li { float:left; } .paginação li a { border: solid 1px black; color: black; padding-left: 4px; padding-right: 4px; margin-left: 3px; margin-right: 3px; text-decoration: none; } .paginação li a.active { border-color: red; } .paginação li a.next, .paginação li a.previous { } .paginação li a.página { }