Paginação

Com base na paginação em Python montei essa paginação em PHP.
Os exemplos são os mesmos apresentados na paginação em Python.

<?php 
/*
Exemplo de lista:
$lista = array(
    0 => array(
        "url"=> "http://fubap.org/vidafodona/2012/03/25/vida-fodona-321-so-musica-velha/",
        "titulo" => "Vida Fodona #321: Só música velha"
    ),
    1 => array(
        "url"=> "http://fubap.org/vidafodona/2012/03/22/vida-fodona-320-bem-ou-mal-semanal/",
        "titulo" => "Vida Fodona #320: Bem ou mal, semanal"
    ),
);
*/

//Número de itens da Lista.
$total=count($lista);

//Quantidade de post's que irão aparecer na página.
$qtd=10;

//Total de páginas.
$pag=($total%$qtd>0) ? (($total/$qtd)+1) : ($total/$qtd);

//Página que está. No caso esse valor é passado via GET.
$pag_atual = $_GET['pag'];

//URL que está a paginação.
$url = 'http://localhost/paginacao.php?pag=';
if($pag_atual>=1 and $pag_atual<=4){
        $pag_min=1;
        $pag_max=5;
}else{
        if($pag_atual>=($pag-5) and $pag_atual<=$pag){
                $pag_min=$pag-5;
                $pag_max=$pag;
        }else{
                $pag_min=$pag_atual-2;
                $pag_max=$pag_atual+2;
        }
}

$paginacao = '';

//Se a página visitada for maior que um, vai aparecer os botões de página anterior e a primeira página.
if($pag_atual>1){
        $paginacao .= '<a href="'.$url.'1" style=" border: 1px black solid; padding: 7px;text-decoration:none"><<</a>';
        $paginacao .= '<a href="'.$url.($pag_atual-1).'" style=" border: 1px black solid; padding: 7px;text-decoration:none"><</a>';
}

//Imprime os números das páginas de acordo com o IF/ELSE anterior.
for($i=$pag_min;$i<=$pag_max;$i++){
        if($i==$pag_atual){
                $paginacao .= '<a href="'.$url.$i.'" style="color:red;font-weight:bold; border:1px black solid; padding:7px;text-decoration:none">'.$i.'</a>';
        }else{
                $paginacao .= '<a href="'.$url.$i.'" style=" border: 1px black solid; padding: 7px;text-decoration:none">'.$i.'</a>';
        }
}

//Se a página visitada for maior que um, vai aparecer os botões de próxima página e a última página.
if($pag_atual<$pag){
        $paginacao .= '<a href="'.$url.($pag_atual+1).'" style=" border: 1px black solid; padding: 7px;text-decoration:none">></a>';
        $paginacao .= '<a href="'.$url.($pag).'" style=" border: 1px black solid; padding: 7px;text-decoration:none">>></a>';
}

//Valores para imprimir a lista.
$min = ($pag_atual==1) ? 1 : ((($pag_atual-1)*$qtd)+1);
$max = ($pag_atual==1) ? $qtd : ($pag_atual*$qtd);
$imprime_lista='';

for($p=($min-1);$p<=($max-1);$p++){
        $imprime_lista.='<a href="'.$lista[$p]["url"].'" target="blank">'.$lista[$p]['titulo'].'</a><br>';
}

//Imprimindo a lista e a paginação
echo $imprime_lista;
echo '<br><br>';
echo $paginacao;
?>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s