+4

Criando uma simples paginação de resultados

criado por Diego Mascarenhas em 06/07/2002 1:04pm
Bom, agora vamos a prática.

Primeiramente realize a conexão ao MySQL.

<?php
$conn = mysql_connect("host","user","senha");
$banco = mysql_select_db("bancodedados");
?>

Agora vamos criar a cláusula SQL que deve ser executada.

<?php
$busca = "SELECT * FROM tabela";
?>

Vamos ao trabalho... Especifique o total de registros a serem exibidos por página:

<?php
$total_reg = "10"; // número de registros por página
?>

Se a página não for especificada a variável "pagina" tomará o valor 1 (isso evita de exibir a página 0 de início)

<?php
if (!$pagina) {
    $pc = "1";
} else {
    $pc = $pagina;
}
?>

Vamos determinar o valor inicial das buscas limitadas.

<?php
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;
?>

Vamos selecionar os dados e exibir a paginação.

<?php
$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

// vamos criar a visualização
while ($dados = mysql_fetch_array($limite)) {
    $nome = $dados["nome"];
    echo "Nome: $nome<br>";
}

// agora vamos criar os botões "Anterior e próximo"
$anterior = $pc -1;
$proximo = $pc +1;
if ($pc>1) {
    echo " <a href='?pagina=$anterior'><- Anterior</a> ";
}
echo "|";
if ($pc<$tp) {
    echo " <a href='?pagina=$proximo'>Próxima -></a>";
}
?>

Prontinho. Simples, não?

Logo venho com mais dicas para uma paginação de resultados mais avançada. Espero que isso já sirva como base para uma melhora nos seus scripts.

Comentários:

Mostrando 1 - 10 de 24 comentários
Não entendi a função da variável pc.
24/10/2012 8:31pm (~10 anos atrás)

Ivo Borges disse:
Ja havia pesquisados vários scripts, mas o seu foi batata, simples e funcional.

Muito bom, usei e está funcionando, obrigado Diego.
27/10/2009 8:05pm (~13 anos atrás)

José Neto disse:
Muito bom, funcionou aqui!
Muito obrigado!
18/03/2009 4:02pm (~13 anos atrás)

galera se alguem conseguir fazer esse script rola em template php seria uma mao na roda...
segue o meu codigo

<?php
include_once('../inc/inc.configdb.php');
include_once('../inc/inc.lib.php');
include_once('../inc/class.TemplatePower.php');
$tpl = new TemplatePower('../tpl/lay.html');$tpl->assignInclude('conteudo', '../tpl/busca2.htm');
$tpl->prepare();

$busca = "SELECT * FROM categoria";
$total_reg = "10"; //
if (!$pagina) {
$pc = "1";
} else {
$pc = $pagina;
}
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;
$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

// vamos criar a visualização
$tpl->newBlock('busca');

while ($dados = mysql_fetch_array($limite)) {
$tpl->assign('nome', $dados['cat_cat']);
$tpl->assign('id', $dados['idcategoria']);

}

// agora vamos criar os botões "Anterior e próximo"
$anterior = $pc -1;
$proximo = $pc +1;
if ($pc>1) {
$tpl->assign('1', $anterior);

}
echo "|";
if ($pc<$tp) {
$tpl->assign('2', $proximo);
}


//fim do processamento ------

include('../inc/inc.mensagem.php');
$tpl->printToScreen();
?>

nao to conseguindo fazer o contador nos links proximo e anterior
blzao
27/09/2008 11:14pm (~14 anos atrás)

Eu fiz algumas alterações que achei interessantes a partir desta ultima versão dessa class para construir barras de navegação
25/02/2007 9:18pm (~16 anos atrás)

Igor Diniz disse:
qual os nomes dos documentos?? ou é tudo num só ?
04/07/2006 3:39pm (~16 anos atrás)

Muito bom o script, parabéns simples e eficaz
26/04/2006 11:11am (~16 anos atrás)

que raiva meu...esses caras acabam com a gente com esses tópicos....fiquei 2 horas pra fz isso, e ele me da o troço pronto assim...e funcionando...
21/03/2006 1:07pm (~16 anos atrás)

esta usando um outro, mais era na quela, peguei pronto e não sabia o que acontecia no script, com esse, eu tive oportunidade de aprender e poder criar o meu, nota 10 pra vc.
06/12/2005 3:17pm (~17 anos atrás)

Paulo Gabriel disse:
Já tentei vários código, inclusive este. As páginas são contadas corretamente mas tenho um problema: quando passo da página "x" para a "y", os resultados não aparecem. Uso o PHP5.
Alguem tem alguma idéia do que seja?
20/09/2005 10:46am (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)