Esqueci da função ceil() pra arrendondar para saber o numero máximo de paginas
@EDIT-------------------------
A versão 2.1 vem com mais uma função,pagination(), que é basicamente a fusão das dPagina,rPagina e qPagina.
-Você pode tanto usar ela ou usar as outras 3.
-Ela recebe os seguintes parametros pagination($sql,$registro_pagina,$pagina_atual,$variavel_pagina) e retorna a resposta do mysql_query().
Ex.:
<?php
include ('dpagination.php');
$pag = new dPagination();
if(!isset($_GET['pg'])){
$pagina = 1;
}else{
$pagina = $_GET['pg'];
}
$res = $pag->pagination('SELECT * FROM produtos',2,$pagina,'pg');
?>
-Adicionei mais um tipo de passar as paginas tem como default o estilo(Anterior | Proximo), adicionei o estilo(1-2-3-4-5-6-7) onde mostra as proximas pagina e a margem é passada por parametro e tem como default margem de 3 paginas.
-Para escolher o primeiro tipo você pode passar nada por parametro ou passar 0 ex.: $paginas = $pag->linkPaginas() ou $paginas = $pag->linkPaginas(0)
-Para escolher o segundo tipo você pode fazer de duas maneiras, passando 1 no primeiro parametro e usando margem default ou passar 1 e a margem.
ex.: $paginas = $pag->linkPaginas(1); ou $paginas = $pag->linkPaginas(1,4);
----------------------------
Opa, venho agora trazer uma classe que facilita a paginação de dados.
Dados
Nome: dPagination 2.2
Autor: David Guilherme
Data: 11/01/2011
dpagination.php
Tutorial de uso:
Metodo:
-dPagina($pagina_atual,$variavelPagina);Primeiro paramêtro é a pagina atual ,o segundo é o nome da variavel que é passada via get
Função:
Ele serve pra você informa a classe a pagina atual, ou seja, o numero que estiver na variavel passada por get.
Exemplo:
<?php
include ('conexao.php');
include ('davvpagination.php');
$pag = new dPagination();
if(!isset($_GET['pg'])){
$pagina = 1;
}else{
$pagina = $_GET['pg'];
}
$pag->dPagina($pagina,'pg');
?>
Metodo:
-rPagina($resgistro_pagina);Você informa quantos registros vai ter por página.
Função:
Informa a classe quantos registros seram exibido por página.
Exemplo:
<?php
include ('conexao.php');
include ('dpagination.php');
$pag = new dPagination();
if(!isset($_GET['pg'])){
$pagina = 1;
}else{
$pagina = $_GET['pg'];
}
$pag->dPagina($pagina,'pg');
$pag->rPagina(10);
?>
Metodo:
-qPagina($sql);Aqui você passara o codigo sql para a consulta.
Função:
Fazer a consulta no banco de dados e retorna a variavel de resposta do mysql_query().
OBS.:Não presisa colocar a cláusula limit pois a propia classe se encarrega de colocar.
Exemplo:
Metodo:
-linkPaginas();
Função:
Tipo 1:
Montar os links anterior e proxima, retornando um array com chave [0] para anterior e chave [1] para proxima.
Tipo 2:
Basta usar foreach no array com os links.
Exemplo Tipo 1:
Pergunta
david.lyonnais
@EDIT2-----------------------
Esqueci da função ceil() pra arrendondar para saber o numero máximo de paginas
@EDIT-------------------------
A versão 2.1 vem com mais uma função,pagination(), que é basicamente a fusão das dPagina,rPagina e qPagina.
-Você pode tanto usar ela ou usar as outras 3.
-Ela recebe os seguintes parametros pagination($sql,$registro_pagina,$pagina_atual,$variavel_pagina) e retorna a resposta do mysql_query().
Ex.:
<?php include ('dpagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $res = $pag->pagination('SELECT * FROM produtos',2,$pagina,'pg'); ?>-Adicionei mais um tipo de passar as paginas tem como default o estilo(Anterior | Proximo), adicionei o estilo(1-2-3-4-5-6-7) onde mostra as proximas pagina e a margem é passada por parametro e tem como default margem de 3 paginas. -Para escolher o primeiro tipo você pode passar nada por parametro ou passar 0 ex.: $paginas = $pag->linkPaginas() ou $paginas = $pag->linkPaginas(0) -Para escolher o segundo tipo você pode fazer de duas maneiras, passando 1 no primeiro parametro e usando margem default ou passar 1 e a margem. ex.: $paginas = $pag->linkPaginas(1); ou $paginas = $pag->linkPaginas(1,4); ---------------------------- Opa, venho agora trazer uma classe que facilita a paginação de dados. Dados Nome: dPagination 2.2 Autor: David Guilherme Data: 11/01/2011 dpagination.php<?php //--------------------------------- //Classe: dPagination 2.2 //Autor: David Guilherme //Data:11/01/2011 //---------------------------------- class dPagination{ //Propiedades private $antPagina; private $proxPagina; private $pagina; private $regPagina; private $rowQuery; private $varPagina; public $numReg; function pagination($sql = 0,$registro_pagina = 0,$pagina_atual = 0,$variavelPagina = 0){ if($pagina_atual != 0 and is_string($variavelPagina)){ $this->dPagina($pagina_atual,$variavelPagina); }else{ echo "Erro 001: Falta do 3 ou 4 paramêtro."; exit; } if($registro_pagina > 0){ $this->rPagina($registro_pagina); }else{ echo "Erro 002: Falta do 2 paramêtro."; exit; } if(is_string($sql)){ $res = $this->qPagina($sql); }else{ echo "Erro 003: Falta do 1 paramêtro."; exit; } return $res; } function dPagina($pagina_atual,$variavelPagina){ $this->pagina = $pagina_atual; $this->varPagina = $variavelPagina; } function rPagina($registro_pagina){ $this->regPagina = $registro_pagina; } function qPagina($sql){ $minlimit = $this->regPagina * ($this->pagina - 1); $maxlimit = $this->regPagina; $sql2 = $sql." Limit ".$minlimit.",".$maxlimit; $res = mysql_query($sql); $this->rowQuery = mysql_num_rows($res); $res2 = mysql_query($sql2); $this->numReg = mysql_num_rows($res2); if($this->pagina > 1){ $pg = $this->pagina - 1; $this->antPagina = "?".$this->varPagina."=".$pg; }else{ $this->antPagina = 0; } $limit = $maxlimit + $minlimit; if($this->rowQuery > $limit){ $pg = $this->pagina + 1; $this->dpsPagina = "?".$this->varPagina."=".$pg; }else{ $this->dpsPagina = 0; } return $res2; } function linkPaginas($tipo = 0,$margem = 3){ $pagina = $_SERVER['PHP_SELF']; if($tipo == 0){ if(!is_string($this->antPagina)){ $url[0] = "<span style='color: #333333;'>Anterior</span>"; }else{ $url[0] = "<a href='".$pagina.$this->antPagina."'>Anterior</a>"; } if(!is_string($this->dpsPagina)){ $url[1] = "<span style='color: #333333;'>Próxima</span>"; }else{ $url[1] = "<a href='".$pagina.$this->dpsPagina."'>Próxima</a>"; } } if($tipo == 1){ $maxpag = ceil($this->rowQuery / $this->regPagina); $i = 0; $j = $margem; $z = ($margem * 2) + 1; while($i < $z){ if($j > 0){ $r = $this->pagina - $j; $verif = 0; }elseif($j < 0){ $r = -1; $u = $this->pagina + ($j * (-1)); }else{ $r = -1; $url[$i] = "<span style='color: #333333;'>".$this->pagina."</span>"; $i++; } if( $r > 0 ){ $url[$i] = "<a href='".$pagina."?".$this->varPagina."=".$r."'>".$r."</a>"; $i++; } if($u <= $maxpag and $r < 0 and isset($u) ){ $url[$i] = "<a href='".$pagina."?".$this->varPagina."=".$u."'>".$u."</a>"; $i++; } if($u > $maxpag ){ break; } $j--; } } return $url; } } ?>Tutorial de uso: Metodo: -dPagina($pagina_atual,$variavelPagina);Primeiro paramêtro é a pagina atual ,o segundo é o nome da variavel que é passada via get Função: Ele serve pra você informa a classe a pagina atual, ou seja, o numero que estiver na variavel passada por get. Exemplo:<?php include ('conexao.php'); include ('davvpagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $pag->dPagina($pagina,'pg'); ?>Metodo: -rPagina($resgistro_pagina);Você informa quantos registros vai ter por página. Função: Informa a classe quantos registros seram exibido por página. Exemplo:<?php include ('conexao.php'); include ('dpagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $pag->dPagina($pagina,'pg'); $pag->rPagina(10); ?>Metodo: -qPagina($sql);Aqui você passara o codigo sql para a consulta. Função: Fazer a consulta no banco de dados e retorna a variavel de resposta do mysql_query(). OBS.:Não presisa colocar a cláusula limit pois a propia classe se encarrega de colocar. Exemplo:<?php include ('conexao.php'); include ('dpagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $pag->dPagina($pagina,'pg'); $pag->rPagina(10); $res = $pag->qPagina('SELECT * FROM usuarios'); echo "<table border='1'>"; while($dados = mysql_fetch_array($res)){ echo "<tr>"; echo "<td>".$dados['id']."</td>"; echo "<td>".$dados['login']."</td>"; echo "<td>".$dados['senha']."</td>"; echo "<td>".$dados['email']."</td>"; echo "</tr>"; } echo "</table>"; ?>Metodo: -linkPaginas(); Função: Tipo 1: Montar os links anterior e proxima, retornando um array com chave [0] para anterior e chave [1] para proxima. Tipo 2: Basta usar foreach no array com os links. Exemplo Tipo 1:<?php include ('conexao.php'); include ('dpagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $res = $pag->pagination('SELECT * FROM usuarios',10,$pagina,'pg'); $paginas = $pag->linkPaginas(); echo $paginas[0]."|".$paginas[1]; echo "<table border='1'>"; while($dados = mysql_fetch_array($res)){ echo "<tr>"; echo "<td>".$dados['id']."</td>"; echo "<td>".$dados['login']."</td>"; echo "<td>".$dados['senha']."</td>"; echo "<td>".$dados['email']."</td>"; echo "</tr>"; } echo "</table>"; echo $paginas[0]."|".$paginas[1]; ?>Exemplo Tipo 2:<?php include ('pagination.php'); $pag = new dPagination(); if(!isset($_GET['pg'])){ $pagina = 1; }else{ $pagina = $_GET['pg']; } $res = $pag->pagination('SELECT * FROM usuarios',10,$pagina,'pg'); $paginas = $pag->linkPaginas(1,5); echo "<table>"; while($dados = mysql_fetch_array($res)){ echo "<tr>"; echo "<td>".$dados['id']."</td>"; echo "<td>".$dados['login']."</td>"; echo "<td>".$dados['senha']."</td>"; echo "<td>".$dados['email']."</td>"; echo "</tr>"; } echo "</table>"; foreach($paginas as $key => $valor){ if($key == (count($paginas) - 1)){ echo $valor; }else{ echo $valor.'|'; } } ?>Simplifica e muito o trabalho de paginação, exibir dados com paginas fico mais fácil com essa classe.
Qualquer dúvida é so postar ai.
Comentem..
Até
Editado por david.lyonnaisLink para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.