<?php $registros_por_pagina = 10; // auto explicativo $pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina']; // qual p�gina estamos visualizando? /* Por que utilizo $HTTP_GET_VARS['pagina']? Porque de repente o seu computador est� rodando um servidor com o PHP com a configura��o no php.ini register_global=off Isso far� como que as vari�ves que vc passa pelo link tipo: pagina.php?variavelxyz=4 N�O seja recuperado de forma autom�tica dentro do seu c�digo. O register_globals off vem como configura��o padr�o do PHP a partir da vers�o 4.2 do PHP. A variavelxyz SOEMNTE poser� ser recuperada AUTOMATICAMENTE dentro do c�digo PHP se vc configurar no seu php.ini para register_global=on */ $idnome = $HTTP_GET_VARS['idnome']; /* o $idnome s� tem sentido de acordo com a estrutura da tabela que est� consultando. Neste examplo usamos uma tabela com os dados a seguir. idnome | nome | coluna1 | coluna2 1 manuel xxx yyy 2 joaquim xxx yyy 3 tereza xxx yyy 4 luiz xxx yyy 5 francisco xxx yyy */ $query = " SELECT * FROM tabela_qualquer WHERE idnome='$idnome' "; /* Aqui vai a primeira parte do segredo da pagina��o, vc deve colocar a sua QUERY neste local colocando as condi��es para a busca */ $pagina_anterior = $pagina - 1; $pagina_posterior = $pagina + 1; $registro_inicio = ($registros_por_pagina * $pagina) - $registros_por_pagina; /* Vamos calcular a p�gina anterior e posterior que estamos Em seguida devemos calcular qual o ponto nos registros retornados na QUERY, acima, atualmente devemos RECOME�AR a ler. */ mysql_connect("localhost","username","password"); mysql_select_db("test"); $resultado = mysql_query($query); $total_de_registros = mysql_num_rows($resultado); /* Descobrir qual o n�mero total de registros que a busca QUERY retorna */ if ($total_de_registros <= $registros_por_pagina) { $total_de_paginas = 1; }elseif (($total_de_registros % $registros_por_pagina) == 0) { $total_de_paginas = ($total_de_registros / $registros_por_pagina); }else{ $total_de_paginas = ($total_de_registros / $registros_por_pagina) + 1; } /* Neste peda�o se faz o c�lculo de n�mero de p�ginas que ser� preciso dividir o resultado */ $total_de_paginas = (int) $total_de_paginas; /* Caso o n�mero seja quebrado, transformar em n�mero inteiro */ if (($pagina > $total_de_paginas) || ($pagina < 0)) { echo 'n�mero da p�gina inv�lido'; exit; } $query = $query . " LIMIT $registro_inicio, $registros_por_pagina"; /* Aqui se faz a m�gica de limitar os resultados que vc deseja para a p�gina ser do registro X at� Y Caso tenha prestado aten��o no c�digo, perceber� que o segredo da pagina��o de resultados se limita ao uso do recurso LIMIT do MySQL para limitar a busca para os registros que vc quer mostrar na p�gina. Explica��o sobre como funciona esse pequena parte do SQL. A QUERY: SELECT * FROM tabela_qualquer WHERE idnome='$idnome' vai retornar o seguinte resultado resultado | idnome | nome | coluna1 | coluna2 0 1 manuel xxx yyy 1 2 joaquim xxx yyy 3 3 tereza xxx yyy 4 4 luiz xxx yyy 5 5 francisco xxx yyy A linha resultado 0 � a primeira linha dos resultados encontrados. A numera��o � a partir de ZERO e n�o 1 como se pensaria. Se vc quizesse apenas os registros de joaquim a luiza vc faria esta query SELECT * FROM tabela_usuarios LIMIT 1,3 O que significa LIMIT 1,3? Indica que vc quer 3 registros a partir da linha 1 da busca. */ $resultado = mysql_query($query); $total_de_registros_da_pagina = mysql_num_rows($resultado); if ($total_de_registros_da_pagina == 0) { echo 'sem registros nesta p�gina' exit; } else { while ($row = mysql_fetch_array($resultado)) { /* mostra ou armazena os dados que ser� apresentados para o usu�rio no caso armazeno num array para melhor separar o HTML do c�digo PHP somente no final vou dar um echo. */ $html_de_resultados .= $row['nomedacoluna']; } } /* * Se��o para criar link de navega��o entre as p�ginas * Vai aparecer como aqueles link do tipo * * Anterior 1 2 [3] 4 5 Pr�ximo */ $link_de_navegacao = ''; /* link "anterior" */ if($pagina_anterior) { $link_de_navegacao .= " <a href='navegar.php?idnome=$idnome&pagina=$pagina_anterior'>Anterior</a> "; } for($i = 1; $i <= $total_de_paginas; $i++) { if($i != $pagina) { /* link individual para as outras p�ginas */ $link_de_navegacao .= " <a href='navegar.php?idnome=$idnome&pagina=$i'>$i</a> "; }else{ $link_de_navegacao .= " <b>[$i]</b> "; } } /* link "proximo" */ if($pagina != $total_de_paginas) { $link_de_navegacao .= "<a href='navegar.php?idnome=$idnome&pagina=$pagina_posterior'>Pr�ximo</a>"; } // AGORA mostrar os resultados para o usu�rio. // ############################################## echo $html_resultados; echo $link_de_navegacao; ?>