<?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;
?>