Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola amigos, criei um sistema de paginação em php 5 usando pdo e dao public function.
ela funciona perfeitamente.
o que eu quero fazer é o seguinte na site do imasters quando faz uma busca ele lista os links de paginação só que os links da paginação só muda quando é acima de 10 paginas vistas. como posso fazer um igual a esse.
vou enviar o codigo da paginação quem quiser usar fica avontade.
<?php
/**
* Programa de paginação
* @author Lucas Nunes Pinto Pinheiro
* @version 2009-04-07
* @package Paginação
* @Classe DAO para a paginação de dados.
* @Realiza a paginação de todos os dados e serve para qualquer sistema, no final da class tem um exemplo de como adicionar em sua pagina.
* @
*/
class Paginacao {
// gera a paginação.
public static function paginar($page,$geral,$totalPagina,$quantidade) {
// verifica o link da paginação, caso não exista da o valor de 1.
if ($page['pag'] == ''){
$pag = 1;
// total de array para geração do link
$arrayCorrigido = $page;
}else{
$pag = $page['pag'];
// retira do total o array key 'pag'.
$arrayCorrigido = array_splice($page, 1);
}
//total de resultados exibidos na pagina e gera os links.
$total = $quantidade;
//adiciona ou retira 1 do munero de links.
$prevPage = $pag-1;
$nextPage = $pag+1;
// gera o total de links.
$totalLinks = ceil($geral/$total);
// verifica a url anterior, e gera os novos links.
while (list($key, $val) = each($arrayCorrigido)) {
$linka .= "$key=$val&\n";
}
// verifica a condição da pagina com a tag 'pag'.
// em caso de 1 faz isso.
if($pag == '1'){
if($totalPagina < $total){
$prev = ' ';
$next = ' ';
}else if($totalPagina == $total){
$prev = ' ';
$next = '<a href="'.$_SERVER['SCRIPT_NAME'].'?pag='.$nextPage.'&'.$linka.'" class="link-navegacao-centro-Ativo"> Proximo </a>';
}
}
// ou faz isso.
else if($pag >= '2'){
if($totalPagina < $total){
$prev = '<a href="'.$_SERVER['SCRIPT_NAME'].'?pag='.$prevPage.'&'.$linka.'" class="link-navegacao-centro-Ativo"> Anterior </a>';
$next = ' ';
}else if($totalPagina == $total){
$prev = '<a href="'.$_SERVER['SCRIPT_NAME'].'?pag='.$prevPage.'&'.$linka.'" class="link-navegacao-centro-Ativo"> Anterior </a>';
$next = '<a href="'.$_SERVER['SCRIPT_NAME'].'?pag='.$nextPage.'&'.$linka.'" class="link-navegacao-centro-Ativo"> Proximo </a>';
}
}
// total de links exibido no centro da paginação
$max_Links = 5;
// adiciona ou retira do total exibido na tela de links no centro.
$inicio = $pag - $max_Links;
$limite = $pag + $max_Links;
// inicia o loop com a quantidade de links que deve ser exibido na tela.
for($i=$inicio; $i<=$limite; $i++){
// se $i = a pagina que esta sendo exibida o link fica inativo.
if($i == $pag){
$painel .= '<span class="link-navegacao-centro-Inativo"> '.$i.' </span>';
}
// mostra os links ativos.
else {
if($i >= 1 && $i <= $totalLinks){
$painel .= '<a href="'.$_SERVER['SCRIPT_NAME'].'?pag='.$i.'&'.$linka.'" class="link-navegacao-centro-Ativo"> '.$i.' </a>';
}
}
}
// retorna a quantidade de links na tela.
$link = '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="margem_paginacao"><tr><td align="center">'.$prev.'</td><td align="center">'.$painel.'</td><td align="center">'.$next.'</td></tr></table>';
return $link;
}
public static function totalPagina($page) {
// verifica se pagina esta vazia, caso verdade da o valor de 1.
if($page == ''){
$page = 1;
}else{
$page = $page;
}
// numeros de registros qua vão ser exibidos.
$numeroPagina = 50;
// proximo registro a ser exibido.
$proximo = ($page*$numeroPagina)-$numeroPagina;
//retorna no select a string limit para a paginação.
$retorna = ' LIMIT '.$proximo.', '.$numeroPagina;
$retornaResultados = array ($page,$retorna,$numeroPagina);
return $retornaResultados;
}
public static function exibeTotal($total,$page){
//print($total);
//echo '<br>';
//print($page);
//echo '<br>';
//$de = ceil(($paginacao[0]*$total)-$total);
// $fim = ceil($total+$de);
$recebe = Paginacao::totalPagina($page);
//print($recebe[2]);
if ($recebe[2] == $total){
$de = ceil(($page*$total)-$total);
$fim = ceil($total+$de);
}else{
$de = ceil(($page*$recebe[2])-$recebe[2]);
$fim = ceil(($de+$recebe[2])+($total-$recebe[2]));
}
$retorna = array($de,$fim);
return $retorna;
}
}
?>
por favor ajuda para resolver isso.
grato.
Carregando comentários...