Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
e ae galera eu gostaria de saber como eu posso fazer para criar uma paginação de resultados com links de 5 em 5 por pagina
ex:
asas
asa
sa
sasas
asa
sasss
<<Anterior [1] 2 3 4 5 6 Proximo>>
se a pagina estiver no 6 fica
<<Anterior [6] 7 8 9 10 11 Proximo>>
estilo o do google....valew
Tenho uma classe aki q naum eh exatamente como você queria mais talvez possa t ajudar
<?
include('conexao_com_bd.php');
class Paginacao {
var $tamanho_pagina;//registros por paginas
var $url; //url a ser paginada
var $pagina; //pagina atual
var $pagina_extra; //qtd de paginas extras a ser mostradas
var $minimo;
var $maxino;
var $div; //div usada como wraper
var $totalpaginas;
var $opPaginacao; //variavel que contem $_POST ou $_GET [opcional]
function setParametros($pagina,$tamanho_pagina,$url,$pagina_extra,$div,$opPaginacao){
$this->pagina = $pagina;
$this->tamanho_pagina = $tamanho_pagina;
$this->url = $url;
$this->pagina_extra = $pagina_extra;
$this->div = $div;
$this->opPaginacao = $opPaginacao;
}
function paginar($query){
if (!$this->query($query)){
return 0;
}else{
if (!$this->pagina){
$inicio = 0;
$this->pagina = 1;
}else{
$inicio = ($this->pagina - 1)* $this->tamanho_pagina;
}
$this->totalpaginas = ceil($this->query($query)/$this->tamanho_pagina);
$this->min_max();
echo '<div id='.$this->div.'>';
if ($this->totalpaginas > 1){
if(($pg = $this->pagina) > 1){
echo '<a href="'.$this->url.'?pagina=1'.$this->opPaginacao.'">primeira</a><a href="'.$this->url.'?pagina='.(--$pg).''.$this->opPaginacao.'"><<</a>';
for ( $x = $this->minimo; $x < $this->pagina; $x++) echo '<a href="'.$this->url.'?pagina='.$x.''.$this->opPaginacao.'">'.$x.'</a>';
}
echo '<div id="pgAtual">'.$this->pagina.' </div>';
if(($pg = $this->pagina) < $this->totalpaginas ){
for ( $x = $this->pagina+1; $x <= $this->maximo; $x++) echo '<a href="'.$this->url.'?pagina='.$x.''.$this->opPaginacao.'">'.$x.'</a>';
echo ' <a href="'.$this->url.'?pagina='.(++$pg).''.$this->opPaginacao.'">>></a><a href="'.$this->url.'?pagina='.$this->totalpaginas.''.$this->opPaginacao.'">última</a>';
}
}
echo '</div>';
return $query." LIMIT ".$inicio." , ".$this->tamanho_pagina;
}//this->query
}// fim function paginar
function min_max(){
$this->maximo = $this->pagina + $this->pagina_extra;
$this->minimo = $this->pagina - $this->pagina_extra;
while ($this->minimo <= 0){ $this->minimo++; $this->maximo++; }
while ($this->maximo > $this->totalpaginas){ $this->maximo--; $this->minimo--; }
$this->minimo = $this->minimo <= 0 ? 1 : $this->minimo;
}//fim min_max
function query($query){
$result = mysql_query($query);
return mysql_num_rows($result);
}//fim query
function getTotalpagina(){
return $this->totalpaginas;
}//fim getTotalpagina
}guia de utilização SXTI inc.
$pagina = new Paginacao();
$pagina->setParametros($_GET['pagina'],1,"classe.paginacao.php",2,"idDivWraper","");
$sql = $pagina->paginar('select * from tabela');
*/
?>
a variável $opPaginacao eu usei pq precisava passar outros dados por get, caso você tbm precise, passe o ultimo parâmetro como "$variavel=valor" .
espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Com banco de dados MySQL, voce utiliza o LIMIT para fazer a paginação, existe varios exemplos, da uma olhada:
http://www.google.com.br/search?hl=pt-BR&a...ta=lr%3Dlang_pt
[]'s