Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galera...
Segue abaixo um script que faz paginação com PHP, MySQL e AJAX...
Coloquem em um arquivo separado pra ficar melhor organizado e deem um include na pagina onde se deseja a paginação...
PHP:
/**
* Paginação PHP + MySQL + AJAX
* Por: Henrique J. P. Barcelos ©
* Data: 04/04/2009
*
* variáveis que devem ser declaradas antes da inclusão dessa página:
*
* $sql -> a instrução em MySQL, sem a query, só a instrução
* $quantos -> a qtde de registros por pagina
*
* opcional:
* $query_string -> se ouverem dados sendo passados por GET, criem uma query string para continuar passando esses dados
* ex.: $query_string = "?param1=x¶m2=y;";
*
* */ $num_por_pagina = isset($quantos) ? $quantos : 10;
//antes de mais nada, façam a conexão com o banco, é claro
mysql_connect("localhost", "usuario", "senha");
mysql_select_db("banco de dados");
$pagina = $_GET["pagina"];
if (!$pagina) {
$pagina = 1;
}
// definir o número do primeiro registro da página.
$primeiro_registro = ($pagina-1)*($num_por_pagina);
// consulta apenas os registros da página em questão utilizando como auxílio a
// definição LIMIT. Ordene os registros pela quantidade de pontos,
// começando do maior para o menor DESC.
$sqlFinal = $sql." LIMIT ".$primeiro_registro.", ".$num_por_pagina."";
$resultado = execQuery($sqlFinal);
$pesquisa_total = execQuery($sql);
$total_reg = mysql_num_rows($pesquisa_total);
$total_paginas = ceil($total_reg/$num_por_pagina);
$prev = $pagina - 1;
$next = $pagina + 1;
// se página maior que 1 (um), então temos link para a página anterior
$pg_atual = empty($query_string) ? $_SERVER['PHP_SELF']."?" : $_SERVER['PHP_SELF'].$query_string."&";
if ($pagina > 1) {
$prev_link = "<a href=\"$pg_atual"."pagina=$prev\" onclick=\"return mudarPagina('$pg_atual"."pagina=".$prev."')\">«Anterior</a>";
}
// se número total de páginas for maior que a página corrente,
// então temos link para a próxima página
if ($total_paginas > $pagina) {
$next_link = "<a href=\"$pg_atual"."pagina=$next\" onclick=\"return mudarPagina('$pg_atual"."pagina=".$next."')\">Próxima»</a>";
}
$painel = null;
for ($x=1; $x <= $total_paginas; $x++) {
if ($x==$pagina) {
// se estivermos na página corrente, não exibir o link para visualização desta página
$painel .= "<span class='selecionado'>$x</span>";
} else {
$painel .= "<a href=\"$pg_atual"."pagina=$x\" onclick=\"return mudarPagina('$pg_atual"."pagina=".$x."')\">$x</a>";
}
}
/**
* variáveis retornadas após essa paginação:
*
* $resultado -> resultado da Query
* $total_reg -> total de registros
* $total_pag -> total de páginas
* $next_link -> link pra próxima página
* $prev_link -> link pra página anterior
* $painel -> o número das páginas
*
* Na exibição da paginação, concatenem essas 3 ultimas variáveis...
* ex.: $paginacao = $prev_link.$painel.$next_link;
*/
Javascript/AJAX:
//crio o objeto xmlHttpRequest
var xmlHttp;
function Cria_XmlHttpObject(){
var xmlHttp = null;
//cria o objeto XMLHttpRequest pra firefox, mozila, opera, etc
try {
xmlHttp = new XMLHttpRequest();
}
//cria o objeto XMLHttpRequest pra internet explorer, 6,0 + e posteriormente para internet explorer
catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function carregaPagGet(pagina, id, carregar){
xmlHttp = Cria_XmlHttpObject();
if (xmlHttp == null) {
alert('O seu Broswer não suporta AJAX!');
return;
}
var objetoHTML = document.getElementById(id);
if (carregar == true) {
objetoHTML.innerHTML = "<div id='carregando'>Carregando...</div>" + objetoHTML.innerHTML;
}
xmlHttp.open("GET", pagina, true);
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
objetoHTML.innerHTML = xmlHttp.responseText;
}
else
if (xmlHttp.status == 404) {
objetoHTML.innerHTML = "<div>Página não encontrada.</div>";
}
}
}
xmlHttp.send(null);
}
//o parametro pagina vai ser recebido do PHP, vide a estrutura dos links da paginação
function mudarPagina(pagina){
carregaPagGet(pagina, "AQUI VAI O ID DO ELEMENTO ONDE A PAGINA SERÁ CARREGADA", true);
return false;
}Carregando comentários...